///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,
clippy::empty_structs_with_brackets
)]
pub mod BeaconChainProofs {
use super::*;
use alloy::sol_types as alloy_sol_types;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct BalanceContainerProof {
#[allow(missing_docs)]
pub balanceContainerRoot: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<BalanceContainerProof> for UnderlyingRustTuple<'_> {
fn from(value: BalanceContainerProof) -> Self {
(value.balanceContainerRoot, value.proof)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<Self> for BalanceContainerProof {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.balanceContainerRoot),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.proof,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> 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> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::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::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.balanceContainerRoot,
)
.0,
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::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
+ <alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.balanceContainerRoot,
)
+ <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.proof,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.balanceContainerRoot,
out,
);
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::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();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```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 {
#[allow(missing_docs)]
pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub balanceRoot: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<BalanceProof> for UnderlyingRustTuple<'_> {
fn from(value: BalanceProof) -> Self {
(value.pubkeyHash, value.balanceRoot, value.proof)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<Self> for BalanceProof {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.balanceRoot),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.proof,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> 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> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::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::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::eip712_data_word(&self.pubkeyHash)
.0,
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::eip712_data_word(&self.balanceRoot)
.0,
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::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
+ <alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.pubkeyHash,
)
+ <alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.balanceRoot,
)
+ <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.proof,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.pubkeyHash,
out,
);
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.balanceRoot,
out,
);
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::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();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct StateRootProof { bytes32 beaconStateRoot; bytes proof; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct StateRootProof {
#[allow(missing_docs)]
pub beaconStateRoot: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<StateRootProof> for UnderlyingRustTuple<'_> {
fn from(value: StateRootProof) -> Self {
(value.beaconStateRoot, value.proof)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<Self> for StateRootProof {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.beaconStateRoot),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.proof,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> 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> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::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::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.beaconStateRoot,
)
.0,
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::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
+ <alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.beaconStateRoot,
)
+ <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.proof,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.beaconStateRoot,
out,
);
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::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();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct ValidatorProof { bytes32[] validatorFields; bytes proof; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ValidatorProof {
#[allow(missing_docs)]
pub validatorFields:
alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
#[allow(missing_docs)]
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::FixedBytes<32>>,
alloy::sol_types::sol_data::Bytes,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Vec<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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ValidatorProof> for UnderlyingRustTuple<'_> {
fn from(value: ValidatorProof) -> Self {
(value.validatorFields, value.proof)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<Self> for ValidatorProof {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::FixedBytes<32>,
> as alloy_sol_types::SolType>::tokenize(&self.validatorFields),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.proof,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> 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> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::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::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::FixedBytes<32>,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.validatorFields,
)
.0,
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::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
+ <alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::FixedBytes<32>,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.validatorFields,
)
+ <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.proof,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::FixedBytes<32>,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.validatorFields,
out,
);
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::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();
<Self as alloy_sol_types::EventTopic>::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<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> BeaconChainProofsInstance<P, N> {
BeaconChainProofsInstance::<P, N>::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<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for BeaconChainProofsInstance<P, N> {
#[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<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BeaconChainProofsInstance<P, N>
{
/**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: ::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<P: ::core::clone::Clone, N> BeaconChainProofsInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> BeaconChainProofsInstance<P, N> {
BeaconChainProofsInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BeaconChainProofsInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BeaconChainProofsInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
}
}
///Module containing a contract's types and functions.
/**
```solidity
library IEigenPodTypes {
type VALIDATOR_STATUS is uint8;
struct Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int64 balanceDeltasGwei; uint64 prevBeaconBalanceGwei; }
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,
clippy::empty_structs_with_brackets
)]
pub mod IEigenPodTypes {
use super::*;
use alloy::sol_types as alloy_sol_types;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
#[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<VALIDATOR_STATUS> for u8 {
#[inline]
fn stv_to_tokens(
&self,
) -> <alloy::sol_types::sol_data::Uint<8> 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 {
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(self).0
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
<alloy::sol_types::sol_data::Uint<
8,
> as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
<alloy::sol_types::sol_data::Uint<8> 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_underlying(value: u8) -> Self {
Self(value)
}
/// Return the underlying value.
#[inline]
pub const fn into_underlying(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<u8> {
<Self as alloy_sol_types::SolType>::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<u8> {
<Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
}
}
#[automatically_derived]
impl From<u8> for VALIDATOR_STATUS {
fn from(value: u8) -> Self {
Self::from_underlying(value)
}
}
#[automatically_derived]
impl From<VALIDATOR_STATUS> for u8 {
fn from(value: VALIDATOR_STATUS) -> Self {
value.into_underlying()
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for VALIDATOR_STATUS {
type RustType = u8;
type Token<'a> =
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = Self::NAME;
const ENCODED_SIZE: Option<usize> =
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
8,
> 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<()> {
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::type_check(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
<alloy::sol_types::sol_data::Uint<8> 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 {
<alloy::sol_types::sol_data::Uint<
8,
> as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
<alloy::sol_types::sol_data::Uint<
8,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::EventTopic>::encode_topic(
rust,
)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int64 balanceDeltasGwei; uint64 prevBeaconBalanceGwei; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct Checkpoint {
#[allow(missing_docs)]
pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub proofsRemaining: alloy::sol_types::private::primitives::aliases::U24,
#[allow(missing_docs)]
pub podBalanceGwei: u64,
#[allow(missing_docs)]
pub balanceDeltasGwei: i64,
#[allow(missing_docs)]
pub prevBeaconBalanceGwei: 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::FixedBytes<32>,
alloy::sol_types::sol_data::Uint<24>,
alloy::sol_types::sol_data::Uint<64>,
alloy::sol_types::sol_data::Int<64>,
alloy::sol_types::sol_data::Uint<64>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::FixedBytes<32>,
alloy::sol_types::private::primitives::aliases::U24,
u64,
i64,
u64,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<Checkpoint> for UnderlyingRustTuple<'_> {
fn from(value: Checkpoint) -> Self {
(
value.beaconBlockRoot,
value.proofsRemaining,
value.podBalanceGwei,
value.balanceDeltasGwei,
value.prevBeaconBalanceGwei,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for Checkpoint {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
beaconBlockRoot: tuple.0,
proofsRemaining: tuple.1,
podBalanceGwei: tuple.2,
balanceDeltasGwei: tuple.3,
prevBeaconBalanceGwei: tuple.4,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for Checkpoint {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for Checkpoint {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.beaconBlockRoot),
<alloy::sol_types::sol_data::Uint<
24,
> as alloy_sol_types::SolType>::tokenize(&self.proofsRemaining),
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::SolType>::tokenize(&self.podBalanceGwei),
<alloy::sol_types::sol_data::Int<
64,
> as alloy_sol_types::SolType>::tokenize(&self.balanceDeltasGwei),
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::SolType>::tokenize(&self.prevBeaconBalanceGwei),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> 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> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::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,int64 balanceDeltasGwei,uint64 prevBeaconBalanceGwei)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.beaconBlockRoot,
)
.0,
<alloy::sol_types::sol_data::Uint<
24,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.proofsRemaining,
)
.0,
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.podBalanceGwei,
)
.0,
<alloy::sol_types::sol_data::Int<
64,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.balanceDeltasGwei,
)
.0,
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.prevBeaconBalanceGwei,
)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for Checkpoint {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.beaconBlockRoot,
)
+ <alloy::sol_types::sol_data::Uint<
24,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.proofsRemaining,
)
+ <alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.podBalanceGwei,
)
+ <alloy::sol_types::sol_data::Int<
64,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.balanceDeltasGwei,
)
+ <alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.prevBeaconBalanceGwei,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.beaconBlockRoot,
out,
);
<alloy::sol_types::sol_data::Uint<
24,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.proofsRemaining,
out,
);
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.podBalanceGwei,
out,
);
<alloy::sol_types::sol_data::Int<
64,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.balanceDeltasGwei,
out,
);
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.prevBeaconBalanceGwei,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```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 {
#[allow(missing_docs)]
pub validatorIndex: u64,
#[allow(missing_docs)]
pub restakedBalanceGwei: u64,
#[allow(missing_docs)]
pub lastCheckpointedAt: u64,
#[allow(missing_docs)]
pub status: <VALIDATOR_STATUS as alloy::sol_types::SolType>::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,
<VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ValidatorInfo> for UnderlyingRustTuple<'_> {
fn from(value: ValidatorInfo) -> Self {
(
value.validatorIndex,
value.restakedBalanceGwei,
value.lastCheckpointedAt,
value.status,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<Self> for ValidatorInfo {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self.validatorIndex,
),
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self.restakedBalanceGwei,
),
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self.lastCheckpointedAt,
),
<VALIDATOR_STATUS as alloy_sol_types::SolType>::tokenize(&self.status),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> 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> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::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::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.validatorIndex,
)
.0,
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.restakedBalanceGwei,
)
.0,
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.lastCheckpointedAt,
)
.0,
<VALIDATOR_STATUS as alloy_sol_types::SolType>::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
+ <alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.validatorIndex,
)
+ <alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.restakedBalanceGwei,
)
+ <alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.lastCheckpointedAt,
)
+ <VALIDATOR_STATUS as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.status,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.validatorIndex,
out,
);
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.restakedBalanceGwei,
out,
);
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.lastCheckpointedAt,
out,
);
<VALIDATOR_STATUS as alloy_sol_types::EventTopic>::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();
<Self as alloy_sol_types::EventTopic>::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 [`IEigenPodTypes`](self) contract instance.
See the [wrapper's documentation](`IEigenPodTypesInstance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> IEigenPodTypesInstance<P, N> {
IEigenPodTypesInstance::<P, N>::new(address, provider)
}
/**A [`IEigenPodTypes`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`IEigenPodTypes`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct IEigenPodTypesInstance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for IEigenPodTypesInstance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("IEigenPodTypesInstance")
.field(&self.address)
.finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IEigenPodTypesInstance<P, N>
{
/**Creates a new wrapper around an on-chain [`IEigenPodTypes`](self) contract instance.
See the [wrapper's documentation](`IEigenPodTypesInstance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::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<P: ::core::clone::Clone, N> IEigenPodTypesInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> IEigenPodTypesInstance<P, N> {
IEigenPodTypesInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IEigenPodTypesInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IEigenPodTypesInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
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 IEigenPodTypes {
type VALIDATOR_STATUS is uint8;
struct Checkpoint {
bytes32 beaconBlockRoot;
uint24 proofsRemaining;
uint64 podBalanceGwei;
int64 balanceDeltasGwei;
uint64 prevBeaconBalanceGwei;
}
struct ValidatorInfo {
uint64 validatorIndex;
uint64 restakedBalanceGwei;
uint64 lastCheckpointedAt;
VALIDATOR_STATUS status;
}
}
interface EigenPod {
error BeaconTimestampTooFarInPast();
error CannotCheckpointTwiceInSingleBlock();
error CheckpointAlreadyActive();
error CredentialsAlreadyVerified();
error CurrentlyPaused();
error InputAddressZero();
error InputArrayLengthMismatch();
error InsufficientWithdrawableBalance();
error InvalidEIP4788Response();
error InvalidProof();
error InvalidProofLength();
error InvalidPubKeyLength();
error InvalidShortString();
error InvalidValidatorFieldsLength();
error MsgValueNot32ETH();
error NoActiveCheckpoint();
error NoBalanceToCheckpoint();
error OnlyEigenPodManager();
error OnlyEigenPodOwner();
error OnlyEigenPodOwnerOrProofSubmitter();
error StringTooLong(string str);
error TimestampOutOfRange();
error ValidatorInactiveOnBeaconChain();
error ValidatorIsExitingBeaconChain();
error ValidatorNotActiveInPod();
error ValidatorNotSlashedOnBeaconChain();
error WithdrawalCredentialsNotForEigenPod();
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, string _version);
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 (IEigenPodTypes.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 (IEigenPodTypes.ValidatorInfo memory);
function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (IEigenPodTypes.ValidatorInfo memory);
function validatorStatus(bytes memory validatorPubkey) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
function validatorStatus(bytes32 pubkeyHash) external view returns (IEigenPodTypes.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 version() external view returns (string memory);
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"
},
{
"name": "_version",
"type": "string",
"internalType": "string"
}
],
"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 IEigenPodTypes.Checkpoint",
"components": [
{
"name": "beaconBlockRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "proofsRemaining",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "podBalanceGwei",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "balanceDeltasGwei",
"type": "int64",
"internalType": "int64"
},
{
"name": "prevBeaconBalanceGwei",
"type": "uint64",
"internalType": "uint64"
}
]
}
],
"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 IEigenPodTypes.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 IEigenPodTypes.VALIDATOR_STATUS"
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "validatorPubkeyToInfo",
"inputs": [
{
"name": "validatorPubkey",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct IEigenPodTypes.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 IEigenPodTypes.VALIDATOR_STATUS"
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "validatorStatus",
"inputs": [
{
"name": "validatorPubkey",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "validatorStatus",
"inputs": [
{
"name": "pubkeyHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "enum IEigenPodTypes.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": "version",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"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
},
{
"type": "error",
"name": "BeaconTimestampTooFarInPast",
"inputs": []
},
{
"type": "error",
"name": "CannotCheckpointTwiceInSingleBlock",
"inputs": []
},
{
"type": "error",
"name": "CheckpointAlreadyActive",
"inputs": []
},
{
"type": "error",
"name": "CredentialsAlreadyVerified",
"inputs": []
},
{
"type": "error",
"name": "CurrentlyPaused",
"inputs": []
},
{
"type": "error",
"name": "InputAddressZero",
"inputs": []
},
{
"type": "error",
"name": "InputArrayLengthMismatch",
"inputs": []
},
{
"type": "error",
"name": "InsufficientWithdrawableBalance",
"inputs": []
},
{
"type": "error",
"name": "InvalidEIP4788Response",
"inputs": []
},
{
"type": "error",
"name": "InvalidProof",
"inputs": []
},
{
"type": "error",
"name": "InvalidProofLength",
"inputs": []
},
{
"type": "error",
"name": "InvalidPubKeyLength",
"inputs": []
},
{
"type": "error",
"name": "InvalidShortString",
"inputs": []
},
{
"type": "error",
"name": "InvalidValidatorFieldsLength",
"inputs": []
},
{
"type": "error",
"name": "MsgValueNot32ETH",
"inputs": []
},
{
"type": "error",
"name": "NoActiveCheckpoint",
"inputs": []
},
{
"type": "error",
"name": "NoBalanceToCheckpoint",
"inputs": []
},
{
"type": "error",
"name": "OnlyEigenPodManager",
"inputs": []
},
{
"type": "error",
"name": "OnlyEigenPodOwner",
"inputs": []
},
{
"type": "error",
"name": "OnlyEigenPodOwnerOrProofSubmitter",
"inputs": []
},
{
"type": "error",
"name": "StringTooLong",
"inputs": [
{
"name": "str",
"type": "string",
"internalType": "string"
}
]
},
{
"type": "error",
"name": "TimestampOutOfRange",
"inputs": []
},
{
"type": "error",
"name": "ValidatorInactiveOnBeaconChain",
"inputs": []
},
{
"type": "error",
"name": "ValidatorIsExitingBeaconChain",
"inputs": []
},
{
"type": "error",
"name": "ValidatorNotActiveInPod",
"inputs": []
},
{
"type": "error",
"name": "ValidatorNotSlashedOnBeaconChain",
"inputs": []
},
{
"type": "error",
"name": "WithdrawalCredentialsNotForEigenPod",
"inputs": []
}
]
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod EigenPod {
use super::*;
use alloy::sol_types as alloy_sol_types;
/// The creation / init bytecode of the contract.
///
/// ```text
///0x610100604052348015610010575f5ffd5b50604051613eb5380380613eb583398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613b4e6103675f395f61063f01525f81816102c30152818161067a01528181610722015281816109e601528181610bb001528181610eb901528181610f6001528181611196015281816114e401528181611618015261286301525f81816105010152610fc901525f610c1c0152613b4e5ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d63660046130c2565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461317b565b61098d565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea366004613250565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c15565b604051610210919061329e565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e3660046132ed565b610c45565b604051610210919061335f565b34801561047b575f5ffd5b5061022e61048a366004613250565b610ca7565b34801561049a575f5ffd5b506104ae6104a936600461336d565b610db5565b6040516102109190613384565b3480156104c6575f5ffd5b506104636104d536600461336d565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d3660046133e7565b610e60565b6101db610550366004613402565b610f55565b348015610560575f5ffd5b506104ae61056f3660046132ed565b61109c565b34801561057f575f5ffd5b506101db61058e366004613492565b61118b565b34801561059e575f5ffd5b506101db6105ad3660046134bc565b6112c2565b3480156105bd575f5ffd5b506101db6105cc3660046134bc565b61140c565b3480156105dc575f5ffd5b506101db6105eb3660046135a7565b6114a0565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db610629366004613679565b6115ff565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb91906136e0565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079391906136e0565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf85806136fb565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119fc92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156108635761086361332b565b60028111156108745761087461332b565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c861332b565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f386806136fb565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a1e92505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610ca7565b87611a46565b61097b863561096787806136fb565b61097460208a018a613740565b8651611aeb565b6109845f611c12565b50505050505050565b6033546001600160a01b03163314806109b05750603e546001600160a01b031633145b6109cd5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a33573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5791906136e0565b15610a755760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8357508382145b610aa0576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ad6576040516337e07ffd60e01b815260040160405180910390fd5b610ae8610ae28a610ca7565b89611a46565b5f805b87811015610b8057610b6c8a358a8a84818110610b0a57610b0a613782565b9050602002016020810190610b1f9190613796565b898985818110610b3157610b31613782565b9050602002810190610b439190613740565b898987818110610b5557610b55613782565b9050602002810190610b6791906136fb565b611d92565b610b7690836137ce565b9150600101610aeb565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bf3575f5ffd5b505af1158015610c05573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c407f0000000000000000000000000000000000000000000000000000000000000000612247565b905090565b5f5f610c8584848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061228492505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cb5611fff600c6137e1565b610cc86001600160401b038416426137f8565b10610ce657604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d2d91613822565b5f60405180830381855afa9150503d805f8114610d65576040519150601f19603f3d011682016040523d82523d5f602084013e610d6a565b606091505b5091509150818015610d7c57505f8151115b610d995760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610dad919061382d565b949350505050565b610ddc604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e4657610e4661332b565b6002811115610e5757610e5761332b565b90525092915050565b6033546001600160a01b0316331480610e835750603e546001600160a01b031633145b610ea05760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2a91906136e0565b15610f485760405163840a48d560e01b815260040160405180910390fd5b610f5182611c12565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f9e57604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fc75760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec800000878761100a612315565b8888886040518863ffffffff1660e01b815260040161102e9695949392919061386c565b5f604051808303818588803b158015611045575f5ffd5b505af1158015611057573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161108d9291906138ba565b60405180910390a15050505050565b6110c3604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110485858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061228492505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156111705761117061332b565b60028111156111815761118161332b565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d457604051633213a66160e21b815260040160405180910390fd5b5f6111e3633b9aca00836138e1565b90506111fc633b9aca006001600160401b0383166137e1565b6034549092506001600160401b03908116908216111561122f576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f9061124c9084906001600160401b03166138f4565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112ab91815260200190565b60405180910390a26112bd8383612359565b505050565b5f54610100900460ff16158080156112e057505f54600160ff909116105b806112f95750303b1580156112f957505f5460ff166001145b6113615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611382575f805461ff0019166101001790555b6001600160a01b0382166113a9576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f51575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114375760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114cb5760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611531573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155591906136e0565b156115735760405163840a48d560e01b815260040160405180910390fd5b8251845114611595576040516343714afd60e01b815260040160405180910390fd5b5f5b84518110156115f8576115f0838583815181106115b6576115b6613782565b60200260200101518784815181106115d0576115d0613782565b60200260200101516001600160a01b031661246e9092919063ffffffff16565b600101611597565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611665573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168991906136e0565b156116a75760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116db57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b900490921660808201529061173a90876124c0565b5f805b858110156119a3573687878381811061175857611758613782565b905060200281019061176a9190613913565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117da576117da61332b565b60028111156117eb576117eb61332b565b90525090506001816060015160028111156118085761180861332b565b1461181457505061199b565b856001600160401b031681604001516001600160401b03161061183857505061199b565b5f8080611848848a8f3588612571565b60208b018051939650919450925061185f82613931565b62ffffff1690525060808801805184919061187b90839061394e565b6001600160401b031690525060608801805183919061189b90839061396d565b60070b9052506118ab818861394e565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561194f5761194f61332b565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161173d565b506001600160401b038084165f908152603b60205260408120805484939192916119cf9185911661394e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098482612694565b5f815f81518110611a0f57611a0f613782565b60200260200101519050919050565b5f81600381518110611a3257611a32613782565b60200260200101515f5f1b14159050919050565b611a52600360206137e1565b611a5f6020830183613740565b905014611a7f576040516313717da960e21b815260040160405180910390fd5b611ace611a8f6020830183613740565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869250508435905060036128c3565b610f51576040516309bde33960e01b815260040160405180910390fd5b60088414611b0c5760405163200591bd60e01b815260040160405180910390fd5b6005611b1a602860016137ce565b611b2491906137ce565b611b2f9060206137e1565b8214611b4e576040516313717da960e21b815260040160405180910390fd5b5f611b8a8686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506128da92505050565b90505f64ffffffffff8316611ba1602860016137ce565b600b901b179050611beb85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c92508691508590506128c3565b611c08576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611c425760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611c70576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611c8c633b9aca00476138e1565b611c9691906138f4565b9050818015611cac57506001600160401b038116155b15611cca576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611cdf42610ca7565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611d4381612694565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611dcf8484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119fc92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611e3d57611e3d61332b565b6002811115611e4e57611e4e61332b565b90525090505f81606001516002811115611e6a57611e6a61332b565b14611e88576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611ecd8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b6a92505050565b6001600160401b031603611ef457604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611f398686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b8e92505050565b6001600160401b031614611f6057604051632eade63760e01b815260040160405180910390fd5b611f68612315565b611f719061399c565b611fac8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ba592505050565b14611fca57604051633772dd5360e11b815260040160405180910390fd5b5f6120068686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612bb992505050565b90506120168a87878b8b8e611aeb565b60398054905f612025836139bf565b9091555050603a545f90600160401b90046001600160401b03161561205c57603a54600160401b90046001600160401b0316612069565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561213e5761213e61332b565b021790555050603d8054849250601390612169908490600160981b90046001600160401b031661394e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a6040516121c9919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612238633b9aca006001600160401b0384166137e1565b9b9a5050505050505050505050565b60605f61225383612bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146122a757604051634f88323960e11b815260040160405180910390fd5b6040516002906122bd9084905f906020016139d7565b60408051601f19818403018152908290526122d791613822565b602060405180830381855afa1580156122f2573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ca1919061382d565b60408051600160f81b60208201525f602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b804710156123a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611358565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146123f2576040519150601f19603f3d011682016040523d82523d5f602084013e6123f7565b606091505b50509050806112bd5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611358565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112bd908490612bf7565b6124cc600560036137ce565b6124d79060206137e1565b6124e46020830183613740565b905014612504576040516313717da960e21b815260040160405180910390fd5b606c6125546125166020840184613740565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508792505085359050846128c3565b6112bd576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f90819081612589878388612cca565b9050846001600160401b0316816001600160401b031614612603576125ae85826139fb565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036126885760398054905f61263283613a2a565b9091555050600260608a015261264784613a3f565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612734578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f91612750916001600160401b031661394e565b90505f82606001518360400151612767919061396d565b60408401516034805492935090915f9061278b9084906001600160401b031661394e565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f91506127db90633b9aca009085166137e1565b90505f6127f0633b9aca00600785900b613a64565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156128a6575f5ffd5b505af11580156128b8573d5f5f3e3d5ffd5b505050505050505050565b5f836128d0868585612da8565b1495945050505050565b5f5f600283516128ea91906138e1565b90505f816001600160401b03811115612905576129056134d7565b60405190808252806020026020018201604052801561292e578160200160208202803683370190505b5090505f5b82811015612a285760028561294883836137e1565b8151811061295857612958613782565b60200260200101518683600261296e91906137e1565b6129799060016137ce565b8151811061298957612989613782565b60200260200101516040516020016129ab929190918252602082015260400190565b60408051601f19818403018152908290526129c591613822565b602060405180830381855afa1580156129e0573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612a03919061382d565b828281518110612a1557612a15613782565b6020908102919091010152600101612933565b50612a346002836138e1565b91505b8115612b47575f5b82811015612b3457600282612a5483836137e1565b81518110612a6457612a64613782565b602002602001015183836002612a7a91906137e1565b612a859060016137ce565b81518110612a9557612a95613782565b6020026020010151604051602001612ab7929190918252602082015260400190565b60408051601f1981840301815290829052612ad191613822565b602060405180830381855afa158015612aec573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b0f919061382d565b828281518110612b2157612b21613782565b6020908102919091010152600101612a3f565b50612b406002836138e1565b9150612a37565b805f81518110612b5957612b59613782565b602002602001015192505050919050565b5f610ca182600581518110612b8157612b81613782565b6020026020010151612e7c565b5f610ca182600681518110612b8157612b81613782565b5f81600181518110611a0f57611a0f613782565b5f610ca182600281518110612b8157612b81613782565b5f60ff8216601f811115610ca157604051632cd44ac360e21b815260040160405180910390fd5b5f612c4b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ee39092919063ffffffff16565b905080515f1480612c6b575080806020019051810190612c6b91906136e0565b6112bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611358565b5f612cd7602660016137ce565b612ce29060206137e1565b612cef6040840184613740565b905014612d0f576040516313717da960e21b815260040160405180910390fd5b5f612d1b600485613a93565b64ffffffffff169050612d74612d346040850185613740565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525089925050506020860135846128c3565b612d91576040516309bde33960e01b815260040160405180910390fd5b612d9f836020013585612ef1565b95945050505050565b5f83515f14158015612dc5575060208451612dc39190613abc565b155b612de2576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612e7257612e06600285613abc565b5f03612e385781515f528086015160205260208260405f60026107d05a03fa612e2d575f5ffd5b600284049350612e60565b808601515f52815160205260208260405f60026107d05a03fa612e59575f5ffd5b6002840493505b612e6b6020826137ce565b9050612df3565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610dad84845f85612f1d565b5f80612efe600484613acf565b612f09906040613af8565b64ffffffffff169050610dad84821b612e7c565b606082471015612f7e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611358565b5f5f866001600160a01b03168587604051612f999190613822565b5f6040518083038185875af1925050503d805f8114612fd3576040519150601f19603f3d011682016040523d82523d5f602084013e612fd8565b606091505b5091509150612fe987838387612ff4565b979650505050505050565b606083156130625782515f0361305b576001600160a01b0385163b61305b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611358565b5081610dad565b610dad83838151156130775781518083602001fd5b8060405162461bcd60e51b8152600401611358919061329e565b80356001600160401b03811681146130a7575f5ffd5b919050565b5f604082840312156130bc575f5ffd5b50919050565b5f5f5f606084860312156130d4575f5ffd5b6130dd84613091565b925060208401356001600160401b038111156130f7575f5ffd5b613103868287016130ac565b92505060408401356001600160401b0381111561311e575f5ffd5b61312a868287016130ac565b9150509250925092565b5f5f83601f840112613144575f5ffd5b5081356001600160401b0381111561315a575f5ffd5b6020830191508360208260051b8501011115613174575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613192575f5ffd5b61319b89613091565b975060208901356001600160401b038111156131b5575f5ffd5b6131c18b828c016130ac565b97505060408901356001600160401b038111156131dc575f5ffd5b6131e88b828c01613134565b90975095505060608901356001600160401b03811115613206575f5ffd5b6132128b828c01613134565b90955093505060808901356001600160401b03811115613230575f5ffd5b61323c8b828c01613134565b999c989b5096995094979396929594505050565b5f60208284031215613260575f5ffd5b61326982613091565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6132696020830184613270565b5f5f83601f8401126132c0575f5ffd5b5081356001600160401b038111156132d6575f5ffd5b602083019150836020828501011115613174575f5ffd5b5f5f602083850312156132fe575f5ffd5b82356001600160401b03811115613313575f5ffd5b61331f858286016132b0565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b6003811061335b57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610ca1828461333f565b5f6020828403121561337d575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b03604084015116604083015260608301516133d0606084018261333f565b5092915050565b80151581146133e4575f5ffd5b50565b5f602082840312156133f7575f5ffd5b8135613269816133d7565b5f5f5f5f5f60608688031215613416575f5ffd5b85356001600160401b0381111561342b575f5ffd5b613437888289016132b0565b90965094505060208601356001600160401b03811115613455575f5ffd5b613461888289016132b0565b96999598509660400135949350505050565b6001600160a01b03811681146133e4575f5ffd5b80356130a781613473565b5f5f604083850312156134a3575f5ffd5b82356134ae81613473565b946020939093013593505050565b5f602082840312156134cc575f5ffd5b813561326981613473565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613513576135136134d7565b604052919050565b5f6001600160401b03821115613533576135336134d7565b5060051b60200190565b5f82601f83011261354c575f5ffd5b813561355f61355a8261351b565b6134eb565b8082825260208201915060208360051b860101925085831115613580575f5ffd5b602085015b8381101561359d578035835260209283019201613585565b5095945050505050565b5f5f5f606084860312156135b9575f5ffd5b83356001600160401b038111156135ce575f5ffd5b8401601f810186136135de575f5ffd5b80356135ec61355a8261351b565b8082825260208201915060208360051b85010192508883111561360d575f5ffd5b6020840193505b8284101561363857833561362781613473565b825260209384019390910190613614565b955050505060208401356001600160401b03811115613655575f5ffd5b6136618682870161353d565b92505061367060408501613487565b90509250925092565b5f5f5f6040848603121561368b575f5ffd5b83356001600160401b038111156136a0575f5ffd5b6136ac868287016130ac565b93505060208401356001600160401b038111156136c7575f5ffd5b6136d386828701613134565b9497909650939450505050565b5f602082840312156136f0575f5ffd5b8151613269816133d7565b5f5f8335601e19843603018112613710575f5ffd5b8301803591506001600160401b03821115613729575f5ffd5b6020019150600581901b3603821315613174575f5ffd5b5f5f8335601e19843603018112613755575f5ffd5b8301803591506001600160401b0382111561376e575f5ffd5b602001915036819003821315613174575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156137a6575f5ffd5b813564ffffffffff81168114613269575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ca157610ca16137ba565b8082028115828204841417610ca157610ca16137ba565b81810381811115610ca157610ca16137ba565b5f81518060208401855e5f93019283525090919050565b5f613269828461380b565b5f6020828403121561383d575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f61387f60808301888a613844565b82810360208401526138918188613270565b905082810360408401526138a6818688613844565b915050826060830152979650505050505050565b602081525f610dad602083018486613844565b634e487b7160e01b5f52601260045260245ffd5b5f826138ef576138ef6138cd565b500490565b6001600160401b038281168282160390811115610ca157610ca16137ba565b5f8235605e19833603018112613927575f5ffd5b9190910192915050565b5f62ffffff821680613945576139456137ba565b5f190192915050565b6001600160401b038181168382160190811115610ca157610ca16137ba565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610ca157610ca16137ba565b805160208083015191908110156130bc575f1960209190910360031b1b16919050565b5f600182016139d0576139d06137ba565b5060010190565b5f6139e2828561380b565b6001600160801b03199390931683525050601001919050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610ca157610ca16137ba565b5f81613a3857613a386137ba565b505f190190565b5f8160070b677fffffffffffffff198103613a5c57613a5c6137ba565b5f0392915050565b8082025f8212600160ff1b84141615613a7f57613a7f6137ba565b8181058314821517610ca157610ca16137ba565b5f64ffffffffff831680613aa957613aa96138cd565b8064ffffffffff84160491505092915050565b5f82613aca57613aca6138cd565b500690565b5f64ffffffffff831680613ae557613ae56138cd565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146133d0576133d06137ba56fea2646970667358221220c634108fe6e7d7726b8b440787466078948a0a63cd311746f88324414eaa0e8264736f6c634300081b0033
/// ```
#[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>\xB58\x03\x80a>\xB5\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x97V[\x80a\09\x81a\0nV[`\x80RP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x16`\xC0R`\x01`\x01`@\x1B\x03\x82\x16`\xE0Ra\0ea\0\xB4V[PPPPa\x02\xE7V[__\x82\x90P`\x1F\x81Q\x11\x15a\0\xA1W\x82`@Qc0Z'\xA9`\xE0\x1B\x81R`\x04\x01a\0\x98\x91\x90a\x02\x8CV[`@Q\x80\x91\x03\x90\xFD[\x80Qa\0\xAC\x82a\x02\xC1V[\x17\x93\x92PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x01\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01a\0\x98V[_T`\xFF\x90\x81\x16\x14a\x01jW_\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\x01\x80W__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[____`\x80\x85\x87\x03\x12\x15a\x01\xAAW__\xFD[\x84Qa\x01\xB5\x81a\x01lV[` \x86\x01Q\x90\x94Pa\x01\xC6\x81a\x01lV[`@\x86\x01Q\x90\x93P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x01\xE2W__\xFD[``\x86\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01\xFDW__\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x02\rW__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02&Wa\x02&a\x01\x83V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02TWa\x02Ta\x01\x83V[`@R\x81\x81R\x82\x82\x01` \x01\x89\x10\x15a\x02kW__\xFD[\x81` \x84\x01` \x83\x01^_` \x83\x83\x01\x01R\x80\x93PPPP\x92\x95\x91\x94P\x92PV[` \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[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x02\xE1W_\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa;Na\x03g_9_a\x06?\x01R_\x81\x81a\x02\xC3\x01R\x81\x81a\x06z\x01R\x81\x81a\x07\"\x01R\x81\x81a\t\xE6\x01R\x81\x81a\x0B\xB0\x01R\x81\x81a\x0E\xB9\x01R\x81\x81a\x0F`\x01R\x81\x81a\x11\x96\x01R\x81\x81a\x14\xE4\x01R\x81\x81a\x16\x18\x01Ra(c\x01R_\x81\x81a\x05\x01\x01Ra\x0F\xC9\x01R_a\x0C\x1C\x01Ra;N_\xF3\xFE`\x80`@R`\x046\x10a\x01~W_5`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xCDW\x80c\xC4\x90tB\x11a\0\x87W\x80c\xDD\xA34l\x11a\0bW\x80c\xDD\xA34l\x14a\x05\xD1W\x80c\xEE\x94\xD6|\x14a\x05\xF0W\x80c\xF0t\xBAb\x14a\x06\x0FW\x80c\xF2\x88$a\x14a\x06.W__\xFD[\x80c\xC4\x90tB\x14a\x05tW\x80c\xC4\xD6m\xE8\x14a\x05\x93W\x80c\xD0mU\x87\x14a\x05\xB2W__\xFD[\x80co\xCD\x0ES\x14a\x04\x8FW\x80ct9\x84\x1F\x14a\x04\xBBW\x80ct\xCD\xD7\x98\x14a\x04\xF0W\x80c\x88gl\xAD\x14a\x05#W\x80c\x9BNF4\x14a\x05BW\x80c\xB5\"S\x8A\x14a\x05UW__\xFD[\x80cFe\xBC\xDA\x11a\x018W\x80cT\xFDMP\x11a\x01\x13W\x80cT\xFDMP\x14a\x04\x04W\x80cXu3W\x14a\x04%W\x80cX\xEA\xEEy\x14a\x04DW\x80cl\r-Z\x14a\x04pW__\xFD[\x80cFe\xBC\xDA\x14a\x02\xB2W\x80cG\xD2\x83r\x14a\x02\xE5W\x80cR9jY\x14a\x03\xD0W__\xFD[\x80c\x03\x91W\xD2\x14a\x01\xBCW\x80c\x0B\x18\xFFf\x14a\x01\xDDW\x80c#@\xE8\xD3\x14a\x02\x19W\x80c4t\xAA\x16\x14a\x02<W\x80c?e\xCF\x19\x14a\x02mW\x80cB\xEC\xFF*\x14a\x02\x8CW__\xFD[6a\x01\xB8W`@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[__\xFD[4\x80\x15a\x01\xC7W__\xFD[Pa\x01\xDBa\x01\xD66`\x04a0\xC2V[a\x06aV[\0[4\x80\x15a\x01\xE8W__\xFD[P`3Ta\x01\xFC\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$W__\xFD[Pa\x02.`9T\x81V[`@Q\x90\x81R` \x01a\x02\x10V[4\x80\x15a\x02GW__\xFD[P`4T`\x01`\x01`@\x1B\x03\x16[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x10V[4\x80\x15a\x02xW__\xFD[Pa\x01\xDBa\x02\x876`\x04a1{V[a\t\x8DV[4\x80\x15a\x02\x97W__\xFD[P`:Ta\x02U\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xBDW__\xFD[Pa\x01\xFC\x7F\0\0\0\0\0\0\0\0\0\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\xF0W__\xFD[Pa\x03u`@\x80Q`\xA0\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R`<T\x81R`=Tb\xFF\xFF\xFF\x81\x16` \x83\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x93\x83\x01\x93\x90\x93R`\x01`X\x1B\x81\x04`\x07\x0B``\x83\x01R`\x01`\x98\x1B\x90\x04\x90\x91\x16`\x80\x82\x01R\x90V[`@Qa\x02\x10\x91\x90_`\xA0\x82\x01\x90P\x82Q\x82Rb\xFF\xFF\xFF` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Q`\x07\x0B``\x83\x01R`\x01`\x01`@\x1B\x03`\x80\x84\x01Q\x16`\x80\x83\x01R\x92\x91PPV[4\x80\x15a\x03\xDBW__\xFD[Pa\x02Ua\x03\xEA6`\x04a2PV[`;` R_\x90\x81R`@\x90 T`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x0FW__\xFD[Pa\x04\x18a\x0C\x15V[`@Qa\x02\x10\x91\x90a2\x9EV[4\x80\x15a\x040W__\xFD[P`>Ta\x01\xFC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04OW__\xFD[Pa\x04ca\x04^6`\x04a2\xEDV[a\x0CEV[`@Qa\x02\x10\x91\x90a3_V[4\x80\x15a\x04{W__\xFD[Pa\x02.a\x04\x8A6`\x04a2PV[a\x0C\xA7V[4\x80\x15a\x04\x9AW__\xFD[Pa\x04\xAEa\x04\xA96`\x04a3mV[a\r\xB5V[`@Qa\x02\x10\x91\x90a3\x84V[4\x80\x15a\x04\xC6W__\xFD[Pa\x04ca\x04\xD56`\x04a3mV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xFBW__\xFD[Pa\x01\xFC\x7F\0\0\0\0\0\0\0\0\0\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.W__\xFD[Pa\x01\xDBa\x05=6`\x04a3\xE7V[a\x0E`V[a\x01\xDBa\x05P6`\x04a4\x02V[a\x0FUV[4\x80\x15a\x05`W__\xFD[Pa\x04\xAEa\x05o6`\x04a2\xEDV[a\x10\x9CV[4\x80\x15a\x05\x7FW__\xFD[Pa\x01\xDBa\x05\x8E6`\x04a4\x92V[a\x11\x8BV[4\x80\x15a\x05\x9EW__\xFD[Pa\x01\xDBa\x05\xAD6`\x04a4\xBCV[a\x12\xC2V[4\x80\x15a\x05\xBDW__\xFD[Pa\x01\xDBa\x05\xCC6`\x04a4\xBCV[a\x14\x0CV[4\x80\x15a\x05\xDCW__\xFD[Pa\x01\xDBa\x05\xEB6`\x04a5\xA7V[a\x14\xA0V[4\x80\x15a\x05\xFBW__\xFD[P`:Ta\x02U\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x06\x1AW__\xFD[Pa\x01\xDBa\x06)6`\x04a6yV[a\x15\xFFV[4\x80\x15a\x069W__\xFD[Pa\x02U\x7F\0\0\0\0\0\0\0\0\0\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\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xEB\x91\x90a6\xE0V[\x15a\x07\tW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@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\x07oW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x93\x91\x90a6\xE0V[\x15a\x07\xB1W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x07\xF5a\x07\xBF\x85\x80a6\xFBV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xFC\x92PPPV[_\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\x08cWa\x08ca3+V[`\x02\x81\x11\x15a\x08tWa\x08ta3+V[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xB0W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xC8Wa\x08\xC8a3+V[\x14a\x08\xE6W`@Qc\xD4\x9E\x19\xA7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t)a\x08\xF3\x86\x80a6\xFBV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x1A\x1E\x92PPPV[a\tFW`@Qc\x16\x1C\xE5\xED`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\tXa\tR\x88a\x0C\xA7V[\x87a\x1AFV[a\t{\x865a\tg\x87\x80a6\xFBV[a\tt` \x8A\x01\x8Aa7@V[\x86Qa\x1A\xEBV[a\t\x84_a\x1C\x12V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\t\xB0WP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xCDW`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@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\n3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nW\x91\x90a6\xE0V[\x15a\nuW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85\x84\x14\x80\x15a\n\x83WP\x83\x82\x14[a\n\xA0W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\n\xD6W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\n\xE8a\n\xE2\x8Aa\x0C\xA7V[\x89a\x1AFV[_\x80[\x87\x81\x10\x15a\x0B\x80Wa\x0Bl\x8A5\x8A\x8A\x84\x81\x81\x10a\x0B\nWa\x0B\na7\x82V[\x90P` \x02\x01` \x81\x01\x90a\x0B\x1F\x91\x90a7\x96V[\x89\x89\x85\x81\x81\x10a\x0B1Wa\x0B1a7\x82V[\x90P` \x02\x81\x01\x90a\x0BC\x91\x90a7@V[\x89\x89\x87\x81\x81\x10a\x0BUWa\x0BUa7\x82V[\x90P` \x02\x81\x01\x90a\x0Bg\x91\x90a6\xFBV[a\x1D\x92V[a\x0Bv\x90\x83a7\xCEV[\x91P`\x01\x01a\n\xEBV[P`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R_`$\x82\x01R`D\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\xA1\xCAx\x0B\x90`d\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\xF3W__\xFD[PZ\xF1\x15\x80\x15a\x0C\x05W=__>=_\xFD[PPPPPPPPPPPPPPV[``a\x0C@\x7F\0\0\0\0\0\0\0\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\"GV[\x90P\x90V[__a\x0C\x85\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\"\x84\x92PPPV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[_a\x0C\xB5a\x1F\xFF`\x0Ca7\xE1V[a\x0C\xC8`\x01`\x01`@\x1B\x03\x84\x16Ba7\xF8V[\x10a\x0C\xE6W`@QcyD\xE6m`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R_\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\r-\x91a8\"V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\reW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rjV[``\x91P[P\x91P\x91P\x81\x80\x15a\r|WP_\x81Q\x11[a\r\x99W`@QcU\x8A\xD0\xA3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\r\xAD\x91\x90a8-V[\x94\x93PPPPV[a\r\xDC`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[_\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\x0EFWa\x0EFa3+V[`\x02\x81\x11\x15a\x0EWWa\x0EWa3+V[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x0E\x83WP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x0E\xA0W`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@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\x0F\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F*\x91\x90a6\xE0V[\x15a\x0FHW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0FQ\x82a\x1C\x12V[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\x0F\x9EW`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x0F\xC7W`@Qc\x04\x96\x96\xB3`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\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\x10\na#\x15V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10.\x96\x95\x94\x93\x92\x91\x90a8lV[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x10EW__\xFD[PZ\xF1\x15\x80\x15a\x10WW=__>=_\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x10\x8D\x92\x91\x90a8\xBAV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x10\xC3`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6_a\x11\x04\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_\x92\x01\x91\x90\x91RPa\"\x84\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \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\x11pWa\x11pa3+V[`\x02\x81\x11\x15a\x11\x81Wa\x11\x81a3+V[\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\x11\xD4W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xE3c;\x9A\xCA\0\x83a8\xE1V[\x90Pa\x11\xFCc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x83\x16a7\xE1V[`4T\x90\x92P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x12/W`@Qc\x02\xC6\xF5G`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4\x80T\x82\x91\x90_\x90a\x12L\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a8\xF4V[\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\x12\xAB\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x12\xBD\x83\x83a#YV[PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12\xE0WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12\xF9WP0;\x15\x80\x15a\x12\xF9WP_T`\xFF\x16`\x01\x14[a\x13aW`@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[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x13\x82W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x13\xA9W`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x0FQW_\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\x147W`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`>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\x14\xCBW`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@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\x151W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15U\x91\x90a6\xE0V[\x15a\x15sW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q\x84Q\x14a\x15\x95W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x84Q\x81\x10\x15a\x15\xF8Wa\x15\xF0\x83\x85\x83\x81Q\x81\x10a\x15\xB6Wa\x15\xB6a7\x82V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x15\xD0Wa\x15\xD0a7\x82V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a$n\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x15\x97V[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\x16eW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\x89\x91\x90a6\xE0V[\x15a\x16\xA7W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16_\x81\x90\x03a\x16\xDBW`@Qc\x1ATOI`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\xA0\x81\x01\x82R`<T\x80\x82R`=Tb\xFF\xFF\xFF\x81\x16` \x84\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x94\x84\x01\x94\x90\x94R`\x01`X\x1B\x81\x04`\x07\x0B``\x84\x01R`\x01`\x98\x1B\x90\x04\x90\x92\x16`\x80\x82\x01R\x90a\x17:\x90\x87a$\xC0V[_\x80[\x85\x81\x10\x15a\x19\xA3W6\x87\x87\x83\x81\x81\x10a\x17XWa\x17Xa7\x82V[\x90P` \x02\x81\x01\x90a\x17j\x91\x90a9\x13V[\x805_\x90\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\x17\xDAWa\x17\xDAa3+V[`\x02\x81\x11\x15a\x17\xEBWa\x17\xEBa3+V[\x90RP\x90P`\x01\x81``\x01Q`\x02\x81\x11\x15a\x18\x08Wa\x18\x08a3+V[\x14a\x18\x14WPPa\x19\x9BV[\x85`\x01`\x01`@\x1B\x03\x16\x81`@\x01Q`\x01`\x01`@\x1B\x03\x16\x10a\x188WPPa\x19\x9BV[_\x80\x80a\x18H\x84\x8A\x8F5\x88a%qV[` \x8B\x01\x80Q\x93\x96P\x91\x94P\x92Pa\x18_\x82a91V[b\xFF\xFF\xFF\x16\x90RP`\x80\x88\x01\x80Q\x84\x91\x90a\x18{\x90\x83\x90a9NV[`\x01`\x01`@\x1B\x03\x16\x90RP``\x88\x01\x80Q\x83\x91\x90a\x18\x9B\x90\x83\x90a9mV[`\x07\x0B\x90RPa\x18\xAB\x81\x88a9NV[\x855_\x90\x81R`6` \x90\x81R`@\x91\x82\x90 \x87Q\x81T\x92\x89\x01Q\x93\x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x88\x01Q\x93\x9AP\x87\x93\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a\x19OWa\x19Oa3+V[\x02\x17\x90UPP\x84Q`@Qd\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x91P`\x01`\x01`@\x1B\x03\x8B\x16\x90\x7F\xA9\x1CY\x03<4#\xE1\x8BT\xD0\xAC\xEC\xEB\xB4\x97/\x9E\xA9Z\xED\xF5\xF4\xCA\xE3\xB6w\xB0.\xAF:?\x90_\x90\xA3PPPPP[`\x01\x01a\x17=V[P`\x01`\x01`@\x1B\x03\x80\x84\x16_\x90\x81R`;` R`@\x81 \x80T\x84\x93\x91\x92\x91a\x19\xCF\x91\x85\x91\x16a9NV[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPa\t\x84\x82a&\x94V[_\x81_\x81Q\x81\x10a\x1A\x0FWa\x1A\x0Fa7\x82V[` \x02` \x01\x01Q\x90P\x91\x90PV[_\x81`\x03\x81Q\x81\x10a\x1A2Wa\x1A2a7\x82V[` \x02` \x01\x01Q__\x1B\x14\x15\x90P\x91\x90PV[a\x1AR`\x03` a7\xE1V[a\x1A_` \x83\x01\x83a7@V[\x90P\x14a\x1A\x7FW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xCEa\x1A\x8F` \x83\x01\x83a7@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\x91RP\x86\x92PP\x845\x90P`\x03a(\xC3V[a\x0FQW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x84\x14a\x1B\x0CW`@Qc \x05\x91\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x05a\x1B\x1A`(`\x01a7\xCEV[a\x1B$\x91\x90a7\xCEV[a\x1B/\x90` a7\xE1V[\x82\x14a\x1BNW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1B\x8A\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa(\xDA\x92PPPV[\x90P_d\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA1`(`\x01a7\xCEV[`\x0B\x90\x1B\x17\x90Pa\x1B\xEB\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_\x92\x01\x91\x90\x91RP\x8C\x92P\x86\x91P\x85\x90Pa(\xC3V[a\x1C\x08W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a\x1CBW`@Qb\xBE\x9B\xC3`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03B\x81\x16\x91\x16\x03a\x1CpW`@Qcg\xDB[\x8B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4T_\x90`\x01`\x01`@\x1B\x03\x16a\x1C\x8Cc;\x9A\xCA\0Ga8\xE1V[a\x1C\x96\x91\x90a8\xF4V[\x90P\x81\x80\x15a\x1C\xACWP`\x01`\x01`@\x1B\x03\x81\x16\x15[\x15a\x1C\xCAW`@Qc2\xDE\xA9Y`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xA0\x01`@R\x80a\x1C\xDFBa\x0C\xA7V[\x81R`9Tb\xFF\xFF\xFF\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x80\x85\x16`@\x83\x01R_``\x83\x01\x81\x90R`\x80\x90\x92\x01\x91\x90\x91R`:\x80TB\x90\x92\x16`\x01`@\x1B\x02o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x90Pa\x1DC\x81a&\x94V[\x80Q` \x80\x83\x01Q`@Qb\xFF\xFF\xFF\x90\x91\x16\x81R`\x01`\x01`@\x1B\x03B\x16\x91\x7FWW\x96\x13;\xBE\xD37\xE5\xB3\x9A\xA4\x9A0\xDC%V\xA9\x1E\x0Cl*\xF4\xB7\xB8\x86\xAEw\xEB\xEF\x10v\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[__a\x1D\xCF\x84\x84\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xFC\x92PPPV[_\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\x1E=Wa\x1E=a3+V[`\x02\x81\x11\x15a\x1ENWa\x1ENa3+V[\x90RP\x90P_\x81``\x01Q`\x02\x81\x11\x15a\x1EjWa\x1Eja3+V[\x14a\x1E\x88W`@Qc5\xE0\x9E\x9D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1E\xCD\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+j\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x03a\x1E\xF4W`@Qc\x19X#m`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1F9\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\x8E\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x14a\x1F`W`@Qc.\xAD\xE67`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Fha#\x15V[a\x1Fq\x90a9\x9CV[a\x1F\xAC\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\xA5\x92PPPV[\x14a\x1F\xCAW`@Qc7r\xDDS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a \x06\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\xB9\x92PPPV[\x90Pa \x16\x8A\x87\x87\x8B\x8B\x8Ea\x1A\xEBV[`9\x80T\x90_a %\x83a9\xBFV[\x90\x91UPP`:T_\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a \\W`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a iV[`:T`\x01`\x01`@\x1B\x03\x16[`@\x80Q`\x80\x81\x01\x82Rd\xFF\xFF\xFF\xFF\xFF\x8D\x16\x81R`\x01`\x01`@\x1B\x03\x85\x81\x16` \x83\x01R\x83\x16\x91\x81\x01\x91\x90\x91R\x90\x91P``\x81\x01`\x01\x90R_\x85\x81R`6` \x90\x81R`@\x91\x82\x90 \x83Q\x81T\x92\x85\x01Q\x93\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x84\x01Q\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a!>Wa!>a3+V[\x02\x17\x90UPP`=\x80T\x84\x92P`\x13\x90a!i\x90\x84\x90`\x01`\x98\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a9NV[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x7F-\x08\0\xBB\xC3w\xEAT\xA0\x8C]\xB6\xA8z\xAF\xFF^>\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x8A`@Qa!\xC9\x91\x90d\xFF\xFF\xFF\xFF\xFF\x91\x90\x91\x16\x81R` \x01\x90V[`@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\"8c;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16a7\xE1V[\x9B\x9APPPPPPPPPPPV[``_a\"S\x83a+\xD0V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[_\x81Q`0\x14a\"\xA7W`@QcO\x8829`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q`\x02\x90a\"\xBD\x90\x84\x90_\x90` \x01a9\xD7V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xD7\x91a8\"V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\"\xF2W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xA1\x91\x90a8-V[`@\x80Q`\x01`\xF8\x1B` \x82\x01R_`!\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#\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x13XV[_\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a#\xF2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xF7V[``\x91P[PP\x90P\x80a\x12\xBDW`@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\x13XV[`@\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\x12\xBD\x90\x84\x90a+\xF7V[a$\xCC`\x05`\x03a7\xCEV[a$\xD7\x90` a7\xE1V[a$\xE4` \x83\x01\x83a7@V[\x90P\x14a%\x04W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`la%Ta%\x16` \x84\x01\x84a7@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\x91RP\x87\x92PP\x855\x90P\x84a(\xC3V[a\x12\xBDW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q` \x85\x01Q\x90_\x90\x81\x90\x81a%\x89\x87\x83\x88a,\xCAV[\x90P\x84`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a&\x03Wa%\xAE\x85\x82a9\xFBV[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x85\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x95P\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\x01R_\x03a&\x88W`9\x80T\x90_a&2\x83a:*V[\x90\x91UPP`\x02``\x8A\x01Ra&G\x84a:?V[\x92P\x81d\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[PP\x94P\x94P\x94\x91PPV[` \x81\x01Qb\xFF\xFF\xFF\x16\x15a'4W\x80Q`<U` \x81\x01Q`=\x80T`@\x84\x01Q``\x85\x01Q`\x80\x90\x95\x01Qb\xFF\xFF\xFF\x90\x94\x16j\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x92\x16\x91\x90\x91\x17c\x01\0\0\0`\x01`\x01`@\x1B\x03\x92\x83\x16\x02\x17o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`X\x1B\x19\x16`\x01`X\x1B\x94\x82\x16\x94\x90\x94\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x98\x1B\x19\x16\x93\x90\x93\x17`\x01`\x98\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90UV[`\x80\x81\x01Q`4T_\x91a'P\x91`\x01`\x01`@\x1B\x03\x16a9NV[\x90P_\x82``\x01Q\x83`@\x01Qa'g\x91\x90a9mV[`@\x84\x01Q`4\x80T\x92\x93P\x90\x91_\x90a'\x8B\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a9NV[\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\x83\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x91\x16\x17\x90U_\x91Pa'\xDB\x90c;\x9A\xCA\0\x90\x85\x16a7\xE1V[\x90P_a'\xF0c;\x9A\xCA\0`\x07\x85\x90\x0Ba:dV[`:T`@Q\x82\x81R\x91\x92P`\x01`\x01`@\x1B\x03\x16\x90\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x90` \x01`@Q\x80\x91\x03\x90\xA2`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x84\x90R`D\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\xA1\xCAx\x0B\x90`d\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a(\xA6W__\xFD[PZ\xF1\x15\x80\x15a(\xB8W=__>=_\xFD[PPPPPPPPPV[_\x83a(\xD0\x86\x85\x85a-\xA8V[\x14\x95\x94PPPPPV[__`\x02\x83Qa(\xEA\x91\x90a8\xE1V[\x90P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x05Wa)\x05a4\xD7V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a).W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a*(W`\x02\x85a)H\x83\x83a7\xE1V[\x81Q\x81\x10a)XWa)Xa7\x82V[` \x02` \x01\x01Q\x86\x83`\x02a)n\x91\x90a7\xE1V[a)y\x90`\x01a7\xCEV[\x81Q\x81\x10a)\x89Wa)\x89a7\x82V[` \x02` \x01\x01Q`@Q` \x01a)\xAB\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra)\xC5\x91a8\"V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a)\xE0W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\x03\x91\x90a8-V[\x82\x82\x81Q\x81\x10a*\x15Wa*\x15a7\x82V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a)3V[Pa*4`\x02\x83a8\xE1V[\x91P[\x81\x15a+GW_[\x82\x81\x10\x15a+4W`\x02\x82a*T\x83\x83a7\xE1V[\x81Q\x81\x10a*dWa*da7\x82V[` \x02` \x01\x01Q\x83\x83`\x02a*z\x91\x90a7\xE1V[a*\x85\x90`\x01a7\xCEV[\x81Q\x81\x10a*\x95Wa*\x95a7\x82V[` \x02` \x01\x01Q`@Q` \x01a*\xB7\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra*\xD1\x91a8\"V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a*\xECW=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+\x0F\x91\x90a8-V[\x82\x82\x81Q\x81\x10a+!Wa+!a7\x82V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a*?V[Pa+@`\x02\x83a8\xE1V[\x91Pa*7V[\x80_\x81Q\x81\x10a+YWa+Ya7\x82V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[_a\x0C\xA1\x82`\x05\x81Q\x81\x10a+\x81Wa+\x81a7\x82V[` \x02` \x01\x01Qa.|V[_a\x0C\xA1\x82`\x06\x81Q\x81\x10a+\x81Wa+\x81a7\x82V[_\x81`\x01\x81Q\x81\x10a\x1A\x0FWa\x1A\x0Fa7\x82V[_a\x0C\xA1\x82`\x02\x81Q\x81\x10a+\x81Wa+\x81a7\x82V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x0C\xA1W`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a,K\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a.\xE3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a,kWP\x80\x80` \x01\x90Q\x81\x01\x90a,k\x91\x90a6\xE0V[a\x12\xBDW`@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\x13XV[_a,\xD7`&`\x01a7\xCEV[a,\xE2\x90` a7\xE1V[a,\xEF`@\x84\x01\x84a7@V[\x90P\x14a-\x0FW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a-\x1B`\x04\x85a:\x93V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa-ta-4`@\x85\x01\x85a7@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\x91RP\x89\x92PPP` \x86\x015\x84a(\xC3V[a-\x91W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a-\x9F\x83` \x015\x85a.\xF1V[\x95\x94PPPPPV[_\x83Q_\x14\x15\x80\x15a-\xC5WP` \x84Qa-\xC3\x91\x90a:\xBCV[\x15[a-\xE2W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a.rWa.\x06`\x02\x85a:\xBCV[_\x03a.8W\x81Q_R\x80\x86\x01Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa.-W__\xFD[`\x02\x84\x04\x93Pa.`V[\x80\x86\x01Q_R\x81Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa.YW__\xFD[`\x02\x84\x04\x93P[a.k` \x82a7\xCEV[\x90Pa-\xF3V[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\r\xAD\x84\x84_\x85a/\x1DV[_\x80a.\xFE`\x04\x84a:\xCFV[a/\t\x90`@a:\xF8V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\r\xAD\x84\x82\x1Ba.|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\x13XV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa/\x99\x91\x90a8\"V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a/\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a/\xD8V[``\x91P[P\x91P\x91Pa/\xE9\x87\x83\x83\x87a/\xF4V[\x97\x96PPPPPPPV[``\x83\x15a0bW\x82Q_\x03a0[W`\x01`\x01`\xA0\x1B\x03\x85\x16;a0[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\x13XV[P\x81a\r\xADV[a\r\xAD\x83\x83\x81Q\x15a0wW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x13X\x91\x90a2\x9EV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a0\xA7W__\xFD[\x91\x90PV[_`@\x82\x84\x03\x12\x15a0\xBCW__\xFD[P\x91\x90PV[___``\x84\x86\x03\x12\x15a0\xD4W__\xFD[a0\xDD\x84a0\x91V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xF7W__\xFD[a1\x03\x86\x82\x87\x01a0\xACV[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x1EW__\xFD[a1*\x86\x82\x87\x01a0\xACV[\x91PP\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a1DW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1ZW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a1tW__\xFD[\x92P\x92\x90PV[________`\xA0\x89\x8B\x03\x12\x15a1\x92W__\xFD[a1\x9B\x89a0\x91V[\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB5W__\xFD[a1\xC1\x8B\x82\x8C\x01a0\xACV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDCW__\xFD[a1\xE8\x8B\x82\x8C\x01a14V[\x90\x97P\x95PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x06W__\xFD[a2\x12\x8B\x82\x8C\x01a14V[\x90\x95P\x93PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a20W__\xFD[a2<\x8B\x82\x8C\x01a14V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[_` \x82\x84\x03\x12\x15a2`W__\xFD[a2i\x82a0\x91V[\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_a2i` \x83\x01\x84a2pV[__\x83`\x1F\x84\x01\x12a2\xC0W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xD6W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a1tW__\xFD[__` \x83\x85\x03\x12\x15a2\xFEW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x13W__\xFD[a3\x1F\x85\x82\x86\x01a2\xB0V[\x90\x96\x90\x95P\x93PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10a3[WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[` \x81\x01a\x0C\xA1\x82\x84a3?V[_` \x82\x84\x03\x12\x15a3}W__\xFD[P5\x91\x90PV[_`\x80\x82\x01\x90P`\x01`\x01`@\x1B\x03\x83Q\x16\x82R`\x01`\x01`@\x1B\x03` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Qa3\xD0``\x84\x01\x82a3?V[P\x92\x91PPV[\x80\x15\x15\x81\x14a3\xE4W__\xFD[PV[_` \x82\x84\x03\x12\x15a3\xF7W__\xFD[\x815a2i\x81a3\xD7V[_____``\x86\x88\x03\x12\x15a4\x16W__\xFD[\x855`\x01`\x01`@\x1B\x03\x81\x11\x15a4+W__\xFD[a47\x88\x82\x89\x01a2\xB0V[\x90\x96P\x94PP` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4UW__\xFD[a4a\x88\x82\x89\x01a2\xB0V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a3\xE4W__\xFD[\x805a0\xA7\x81a4sV[__`@\x83\x85\x03\x12\x15a4\xA3W__\xFD[\x825a4\xAE\x81a4sV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a4\xCCW__\xFD[\x815a2i\x81a4sV[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\x15a5\x13Wa5\x13a4\xD7V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a53Wa53a4\xD7V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a5LW__\xFD[\x815a5_a5Z\x82a5\x1BV[a4\xEBV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a5\x80W__\xFD[` \x85\x01[\x83\x81\x10\x15a5\x9DW\x805\x83R` \x92\x83\x01\x92\x01a5\x85V[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a5\xB9W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xCEW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a5\xDEW__\xFD[\x805a5\xECa5Z\x82a5\x1BV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a6\rW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a68W\x835a6'\x81a4sV[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a6\x14V[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6UW__\xFD[a6a\x86\x82\x87\x01a5=V[\x92PPa6p`@\x85\x01a4\x87V[\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a6\x8BW__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a6\xA0W__\xFD[a6\xAC\x86\x82\x87\x01a0\xACV[\x93PP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6\xC7W__\xFD[a6\xD3\x86\x82\x87\x01a14V[\x94\x97\x90\x96P\x93\x94PPPPV[_` \x82\x84\x03\x12\x15a6\xF0W__\xFD[\x81Qa2i\x81a3\xD7V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a7\x10W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a7)W__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a1tW__\xFD[__\x835`\x1E\x19\x846\x03\x01\x81\x12a7UW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a7nW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a1tW__\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a7\xA6W__\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a2iW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\xA1Wa\x0C\xA1a7\xBAV[\x81\x81\x03\x81\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2i\x82\x84a8\x0BV[_` \x82\x84\x03\x12\x15a8=W__\xFD[PQ\x91\x90PV[\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[`\x80\x81R_a8\x7F`\x80\x83\x01\x88\x8Aa8DV[\x82\x81\x03` \x84\x01Ra8\x91\x81\x88a2pV[\x90P\x82\x81\x03`@\x84\x01Ra8\xA6\x81\x86\x88a8DV[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R_a\r\xAD` \x83\x01\x84\x86a8DV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a8\xEFWa8\xEFa8\xCDV[P\x04\x90V[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[_\x825`^\x19\x836\x03\x01\x81\x12a9'W__\xFD[\x91\x90\x91\x01\x92\x91PPV[_b\xFF\xFF\xFF\x82\x16\x80a9EWa9Ea7\xBAV[_\x19\x01\x92\x91PPV[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[`\x07\x81\x81\x0B\x90\x83\x90\x0B\x01g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x13g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x82\x12\x17\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a0\xBCW_\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[_`\x01\x82\x01a9\xD0Wa9\xD0a7\xBAV[P`\x01\x01\x90V[_a9\xE2\x82\x85a8\x0BV[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x10\x01\x91\x90PV[`\x07\x82\x81\x0B\x90\x82\x90\x0B\x03g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x12g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x13\x17\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[_\x81a:8Wa:8a7\xBAV[P_\x19\x01\x90V[_\x81`\x07\x0Bg\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x03a:\\Wa:\\a7\xBAV[_\x03\x92\x91PPV[\x80\x82\x02_\x82\x12`\x01`\xFF\x1B\x84\x14\x16\x15a:\x7FWa:\x7Fa7\xBAV[\x81\x81\x05\x83\x14\x82\x15\x17a\x0C\xA1Wa\x0C\xA1a7\xBAV[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a:\xA9Wa:\xA9a8\xCDV[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x04\x91PP\x92\x91PPV[_\x82a:\xCAWa:\xCAa8\xCDV[P\x06\x90V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a:\xE5Wa:\xE5a8\xCDV[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x06\x91PP\x92\x91PPV[d\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a3\xD0Wa3\xD0a7\xBAV\xFE\xA2dipfsX\"\x12 \xC64\x10\x8F\xE6\xE7\xD7rk\x8BD\x07\x87F`x\x94\x8A\nc\xCD1\x17F\xF8\x83$AN\xAA\x0E\x82dsolcC\0\x08\x1B\x003",
);
/// The runtime bytecode of the contract, as deployed on the network.
///
/// ```text
///0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d63660046130c2565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461317b565b61098d565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea366004613250565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c15565b604051610210919061329e565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e3660046132ed565b610c45565b604051610210919061335f565b34801561047b575f5ffd5b5061022e61048a366004613250565b610ca7565b34801561049a575f5ffd5b506104ae6104a936600461336d565b610db5565b6040516102109190613384565b3480156104c6575f5ffd5b506104636104d536600461336d565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d3660046133e7565b610e60565b6101db610550366004613402565b610f55565b348015610560575f5ffd5b506104ae61056f3660046132ed565b61109c565b34801561057f575f5ffd5b506101db61058e366004613492565b61118b565b34801561059e575f5ffd5b506101db6105ad3660046134bc565b6112c2565b3480156105bd575f5ffd5b506101db6105cc3660046134bc565b61140c565b3480156105dc575f5ffd5b506101db6105eb3660046135a7565b6114a0565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db610629366004613679565b6115ff565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb91906136e0565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079391906136e0565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf85806136fb565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119fc92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156108635761086361332b565b60028111156108745761087461332b565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c861332b565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f386806136fb565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a1e92505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610ca7565b87611a46565b61097b863561096787806136fb565b61097460208a018a613740565b8651611aeb565b6109845f611c12565b50505050505050565b6033546001600160a01b03163314806109b05750603e546001600160a01b031633145b6109cd5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a33573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5791906136e0565b15610a755760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8357508382145b610aa0576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ad6576040516337e07ffd60e01b815260040160405180910390fd5b610ae8610ae28a610ca7565b89611a46565b5f805b87811015610b8057610b6c8a358a8a84818110610b0a57610b0a613782565b9050602002016020810190610b1f9190613796565b898985818110610b3157610b31613782565b9050602002810190610b439190613740565b898987818110610b5557610b55613782565b9050602002810190610b6791906136fb565b611d92565b610b7690836137ce565b9150600101610aeb565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bf3575f5ffd5b505af1158015610c05573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c407f0000000000000000000000000000000000000000000000000000000000000000612247565b905090565b5f5f610c8584848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061228492505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cb5611fff600c6137e1565b610cc86001600160401b038416426137f8565b10610ce657604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d2d91613822565b5f60405180830381855afa9150503d805f8114610d65576040519150601f19603f3d011682016040523d82523d5f602084013e610d6a565b606091505b5091509150818015610d7c57505f8151115b610d995760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610dad919061382d565b949350505050565b610ddc604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e4657610e4661332b565b6002811115610e5757610e5761332b565b90525092915050565b6033546001600160a01b0316331480610e835750603e546001600160a01b031633145b610ea05760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2a91906136e0565b15610f485760405163840a48d560e01b815260040160405180910390fd5b610f5182611c12565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f9e57604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fc75760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec800000878761100a612315565b8888886040518863ffffffff1660e01b815260040161102e9695949392919061386c565b5f604051808303818588803b158015611045575f5ffd5b505af1158015611057573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161108d9291906138ba565b60405180910390a15050505050565b6110c3604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110485858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061228492505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156111705761117061332b565b60028111156111815761118161332b565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d457604051633213a66160e21b815260040160405180910390fd5b5f6111e3633b9aca00836138e1565b90506111fc633b9aca006001600160401b0383166137e1565b6034549092506001600160401b03908116908216111561122f576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f9061124c9084906001600160401b03166138f4565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112ab91815260200190565b60405180910390a26112bd8383612359565b505050565b5f54610100900460ff16158080156112e057505f54600160ff909116105b806112f95750303b1580156112f957505f5460ff166001145b6113615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611382575f805461ff0019166101001790555b6001600160a01b0382166113a9576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f51575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114375760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114cb5760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611531573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155591906136e0565b156115735760405163840a48d560e01b815260040160405180910390fd5b8251845114611595576040516343714afd60e01b815260040160405180910390fd5b5f5b84518110156115f8576115f0838583815181106115b6576115b6613782565b60200260200101518784815181106115d0576115d0613782565b60200260200101516001600160a01b031661246e9092919063ffffffff16565b600101611597565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611665573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168991906136e0565b156116a75760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116db57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b900490921660808201529061173a90876124c0565b5f805b858110156119a3573687878381811061175857611758613782565b905060200281019061176a9190613913565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117da576117da61332b565b60028111156117eb576117eb61332b565b90525090506001816060015160028111156118085761180861332b565b1461181457505061199b565b856001600160401b031681604001516001600160401b03161061183857505061199b565b5f8080611848848a8f3588612571565b60208b018051939650919450925061185f82613931565b62ffffff1690525060808801805184919061187b90839061394e565b6001600160401b031690525060608801805183919061189b90839061396d565b60070b9052506118ab818861394e565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561194f5761194f61332b565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161173d565b506001600160401b038084165f908152603b60205260408120805484939192916119cf9185911661394e565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098482612694565b5f815f81518110611a0f57611a0f613782565b60200260200101519050919050565b5f81600381518110611a3257611a32613782565b60200260200101515f5f1b14159050919050565b611a52600360206137e1565b611a5f6020830183613740565b905014611a7f576040516313717da960e21b815260040160405180910390fd5b611ace611a8f6020830183613740565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869250508435905060036128c3565b610f51576040516309bde33960e01b815260040160405180910390fd5b60088414611b0c5760405163200591bd60e01b815260040160405180910390fd5b6005611b1a602860016137ce565b611b2491906137ce565b611b2f9060206137e1565b8214611b4e576040516313717da960e21b815260040160405180910390fd5b5f611b8a8686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506128da92505050565b90505f64ffffffffff8316611ba1602860016137ce565b600b901b179050611beb85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c92508691508590506128c3565b611c08576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611c425760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611c70576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611c8c633b9aca00476138e1565b611c9691906138f4565b9050818015611cac57506001600160401b038116155b15611cca576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611cdf42610ca7565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611d4381612694565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611dcf8484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119fc92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611e3d57611e3d61332b565b6002811115611e4e57611e4e61332b565b90525090505f81606001516002811115611e6a57611e6a61332b565b14611e88576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611ecd8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b6a92505050565b6001600160401b031603611ef457604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611f398686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b8e92505050565b6001600160401b031614611f6057604051632eade63760e01b815260040160405180910390fd5b611f68612315565b611f719061399c565b611fac8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ba592505050565b14611fca57604051633772dd5360e11b815260040160405180910390fd5b5f6120068686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612bb992505050565b90506120168a87878b8b8e611aeb565b60398054905f612025836139bf565b9091555050603a545f90600160401b90046001600160401b03161561205c57603a54600160401b90046001600160401b0316612069565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561213e5761213e61332b565b021790555050603d8054849250601390612169908490600160981b90046001600160401b031661394e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a6040516121c9919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612238633b9aca006001600160401b0384166137e1565b9b9a5050505050505050505050565b60605f61225383612bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146122a757604051634f88323960e11b815260040160405180910390fd5b6040516002906122bd9084905f906020016139d7565b60408051601f19818403018152908290526122d791613822565b602060405180830381855afa1580156122f2573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ca1919061382d565b60408051600160f81b60208201525f602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b804710156123a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611358565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146123f2576040519150601f19603f3d011682016040523d82523d5f602084013e6123f7565b606091505b50509050806112bd5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611358565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112bd908490612bf7565b6124cc600560036137ce565b6124d79060206137e1565b6124e46020830183613740565b905014612504576040516313717da960e21b815260040160405180910390fd5b606c6125546125166020840184613740565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508792505085359050846128c3565b6112bd576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f90819081612589878388612cca565b9050846001600160401b0316816001600160401b031614612603576125ae85826139fb565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036126885760398054905f61263283613a2a565b9091555050600260608a015261264784613a3f565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612734578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f91612750916001600160401b031661394e565b90505f82606001518360400151612767919061396d565b60408401516034805492935090915f9061278b9084906001600160401b031661394e565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f91506127db90633b9aca009085166137e1565b90505f6127f0633b9aca00600785900b613a64565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156128a6575f5ffd5b505af11580156128b8573d5f5f3e3d5ffd5b505050505050505050565b5f836128d0868585612da8565b1495945050505050565b5f5f600283516128ea91906138e1565b90505f816001600160401b03811115612905576129056134d7565b60405190808252806020026020018201604052801561292e578160200160208202803683370190505b5090505f5b82811015612a285760028561294883836137e1565b8151811061295857612958613782565b60200260200101518683600261296e91906137e1565b6129799060016137ce565b8151811061298957612989613782565b60200260200101516040516020016129ab929190918252602082015260400190565b60408051601f19818403018152908290526129c591613822565b602060405180830381855afa1580156129e0573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612a03919061382d565b828281518110612a1557612a15613782565b6020908102919091010152600101612933565b50612a346002836138e1565b91505b8115612b47575f5b82811015612b3457600282612a5483836137e1565b81518110612a6457612a64613782565b602002602001015183836002612a7a91906137e1565b612a859060016137ce565b81518110612a9557612a95613782565b6020026020010151604051602001612ab7929190918252602082015260400190565b60408051601f1981840301815290829052612ad191613822565b602060405180830381855afa158015612aec573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b0f919061382d565b828281518110612b2157612b21613782565b6020908102919091010152600101612a3f565b50612b406002836138e1565b9150612a37565b805f81518110612b5957612b59613782565b602002602001015192505050919050565b5f610ca182600581518110612b8157612b81613782565b6020026020010151612e7c565b5f610ca182600681518110612b8157612b81613782565b5f81600181518110611a0f57611a0f613782565b5f610ca182600281518110612b8157612b81613782565b5f60ff8216601f811115610ca157604051632cd44ac360e21b815260040160405180910390fd5b5f612c4b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ee39092919063ffffffff16565b905080515f1480612c6b575080806020019051810190612c6b91906136e0565b6112bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611358565b5f612cd7602660016137ce565b612ce29060206137e1565b612cef6040840184613740565b905014612d0f576040516313717da960e21b815260040160405180910390fd5b5f612d1b600485613a93565b64ffffffffff169050612d74612d346040850185613740565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525089925050506020860135846128c3565b612d91576040516309bde33960e01b815260040160405180910390fd5b612d9f836020013585612ef1565b95945050505050565b5f83515f14158015612dc5575060208451612dc39190613abc565b155b612de2576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612e7257612e06600285613abc565b5f03612e385781515f528086015160205260208260405f60026107d05a03fa612e2d575f5ffd5b600284049350612e60565b808601515f52815160205260208260405f60026107d05a03fa612e59575f5ffd5b6002840493505b612e6b6020826137ce565b9050612df3565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610dad84845f85612f1d565b5f80612efe600484613acf565b612f09906040613af8565b64ffffffffff169050610dad84821b612e7c565b606082471015612f7e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611358565b5f5f866001600160a01b03168587604051612f999190613822565b5f6040518083038185875af1925050503d805f8114612fd3576040519150601f19603f3d011682016040523d82523d5f602084013e612fd8565b606091505b5091509150612fe987838387612ff4565b979650505050505050565b606083156130625782515f0361305b576001600160a01b0385163b61305b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611358565b5081610dad565b610dad83838151156130775781518083602001fd5b8060405162461bcd60e51b8152600401611358919061329e565b80356001600160401b03811681146130a7575f5ffd5b919050565b5f604082840312156130bc575f5ffd5b50919050565b5f5f5f606084860312156130d4575f5ffd5b6130dd84613091565b925060208401356001600160401b038111156130f7575f5ffd5b613103868287016130ac565b92505060408401356001600160401b0381111561311e575f5ffd5b61312a868287016130ac565b9150509250925092565b5f5f83601f840112613144575f5ffd5b5081356001600160401b0381111561315a575f5ffd5b6020830191508360208260051b8501011115613174575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613192575f5ffd5b61319b89613091565b975060208901356001600160401b038111156131b5575f5ffd5b6131c18b828c016130ac565b97505060408901356001600160401b038111156131dc575f5ffd5b6131e88b828c01613134565b90975095505060608901356001600160401b03811115613206575f5ffd5b6132128b828c01613134565b90955093505060808901356001600160401b03811115613230575f5ffd5b61323c8b828c01613134565b999c989b5096995094979396929594505050565b5f60208284031215613260575f5ffd5b61326982613091565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6132696020830184613270565b5f5f83601f8401126132c0575f5ffd5b5081356001600160401b038111156132d6575f5ffd5b602083019150836020828501011115613174575f5ffd5b5f5f602083850312156132fe575f5ffd5b82356001600160401b03811115613313575f5ffd5b61331f858286016132b0565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b6003811061335b57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610ca1828461333f565b5f6020828403121561337d575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b03604084015116604083015260608301516133d0606084018261333f565b5092915050565b80151581146133e4575f5ffd5b50565b5f602082840312156133f7575f5ffd5b8135613269816133d7565b5f5f5f5f5f60608688031215613416575f5ffd5b85356001600160401b0381111561342b575f5ffd5b613437888289016132b0565b90965094505060208601356001600160401b03811115613455575f5ffd5b613461888289016132b0565b96999598509660400135949350505050565b6001600160a01b03811681146133e4575f5ffd5b80356130a781613473565b5f5f604083850312156134a3575f5ffd5b82356134ae81613473565b946020939093013593505050565b5f602082840312156134cc575f5ffd5b813561326981613473565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613513576135136134d7565b604052919050565b5f6001600160401b03821115613533576135336134d7565b5060051b60200190565b5f82601f83011261354c575f5ffd5b813561355f61355a8261351b565b6134eb565b8082825260208201915060208360051b860101925085831115613580575f5ffd5b602085015b8381101561359d578035835260209283019201613585565b5095945050505050565b5f5f5f606084860312156135b9575f5ffd5b83356001600160401b038111156135ce575f5ffd5b8401601f810186136135de575f5ffd5b80356135ec61355a8261351b565b8082825260208201915060208360051b85010192508883111561360d575f5ffd5b6020840193505b8284101561363857833561362781613473565b825260209384019390910190613614565b955050505060208401356001600160401b03811115613655575f5ffd5b6136618682870161353d565b92505061367060408501613487565b90509250925092565b5f5f5f6040848603121561368b575f5ffd5b83356001600160401b038111156136a0575f5ffd5b6136ac868287016130ac565b93505060208401356001600160401b038111156136c7575f5ffd5b6136d386828701613134565b9497909650939450505050565b5f602082840312156136f0575f5ffd5b8151613269816133d7565b5f5f8335601e19843603018112613710575f5ffd5b8301803591506001600160401b03821115613729575f5ffd5b6020019150600581901b3603821315613174575f5ffd5b5f5f8335601e19843603018112613755575f5ffd5b8301803591506001600160401b0382111561376e575f5ffd5b602001915036819003821315613174575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156137a6575f5ffd5b813564ffffffffff81168114613269575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ca157610ca16137ba565b8082028115828204841417610ca157610ca16137ba565b81810381811115610ca157610ca16137ba565b5f81518060208401855e5f93019283525090919050565b5f613269828461380b565b5f6020828403121561383d575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f61387f60808301888a613844565b82810360208401526138918188613270565b905082810360408401526138a6818688613844565b915050826060830152979650505050505050565b602081525f610dad602083018486613844565b634e487b7160e01b5f52601260045260245ffd5b5f826138ef576138ef6138cd565b500490565b6001600160401b038281168282160390811115610ca157610ca16137ba565b5f8235605e19833603018112613927575f5ffd5b9190910192915050565b5f62ffffff821680613945576139456137ba565b5f190192915050565b6001600160401b038181168382160190811115610ca157610ca16137ba565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610ca157610ca16137ba565b805160208083015191908110156130bc575f1960209190910360031b1b16919050565b5f600182016139d0576139d06137ba565b5060010190565b5f6139e2828561380b565b6001600160801b03199390931683525050601001919050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610ca157610ca16137ba565b5f81613a3857613a386137ba565b505f190190565b5f8160070b677fffffffffffffff198103613a5c57613a5c6137ba565b5f0392915050565b8082025f8212600160ff1b84141615613a7f57613a7f6137ba565b8181058314821517610ca157610ca16137ba565b5f64ffffffffff831680613aa957613aa96138cd565b8064ffffffffff84160491505092915050565b5f82613aca57613aca6138cd565b500690565b5f64ffffffffff831680613ae557613ae56138cd565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146133d0576133d06137ba56fea2646970667358221220c634108fe6e7d7726b8b440787466078948a0a63cd311746f88324414eaa0e8264736f6c634300081b0033
/// ```
#[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~W_5`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xCDW\x80c\xC4\x90tB\x11a\0\x87W\x80c\xDD\xA34l\x11a\0bW\x80c\xDD\xA34l\x14a\x05\xD1W\x80c\xEE\x94\xD6|\x14a\x05\xF0W\x80c\xF0t\xBAb\x14a\x06\x0FW\x80c\xF2\x88$a\x14a\x06.W__\xFD[\x80c\xC4\x90tB\x14a\x05tW\x80c\xC4\xD6m\xE8\x14a\x05\x93W\x80c\xD0mU\x87\x14a\x05\xB2W__\xFD[\x80co\xCD\x0ES\x14a\x04\x8FW\x80ct9\x84\x1F\x14a\x04\xBBW\x80ct\xCD\xD7\x98\x14a\x04\xF0W\x80c\x88gl\xAD\x14a\x05#W\x80c\x9BNF4\x14a\x05BW\x80c\xB5\"S\x8A\x14a\x05UW__\xFD[\x80cFe\xBC\xDA\x11a\x018W\x80cT\xFDMP\x11a\x01\x13W\x80cT\xFDMP\x14a\x04\x04W\x80cXu3W\x14a\x04%W\x80cX\xEA\xEEy\x14a\x04DW\x80cl\r-Z\x14a\x04pW__\xFD[\x80cFe\xBC\xDA\x14a\x02\xB2W\x80cG\xD2\x83r\x14a\x02\xE5W\x80cR9jY\x14a\x03\xD0W__\xFD[\x80c\x03\x91W\xD2\x14a\x01\xBCW\x80c\x0B\x18\xFFf\x14a\x01\xDDW\x80c#@\xE8\xD3\x14a\x02\x19W\x80c4t\xAA\x16\x14a\x02<W\x80c?e\xCF\x19\x14a\x02mW\x80cB\xEC\xFF*\x14a\x02\x8CW__\xFD[6a\x01\xB8W`@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[__\xFD[4\x80\x15a\x01\xC7W__\xFD[Pa\x01\xDBa\x01\xD66`\x04a0\xC2V[a\x06aV[\0[4\x80\x15a\x01\xE8W__\xFD[P`3Ta\x01\xFC\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$W__\xFD[Pa\x02.`9T\x81V[`@Q\x90\x81R` \x01a\x02\x10V[4\x80\x15a\x02GW__\xFD[P`4T`\x01`\x01`@\x1B\x03\x16[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x10V[4\x80\x15a\x02xW__\xFD[Pa\x01\xDBa\x02\x876`\x04a1{V[a\t\x8DV[4\x80\x15a\x02\x97W__\xFD[P`:Ta\x02U\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xBDW__\xFD[Pa\x01\xFC\x7F\0\0\0\0\0\0\0\0\0\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\xF0W__\xFD[Pa\x03u`@\x80Q`\xA0\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R`<T\x81R`=Tb\xFF\xFF\xFF\x81\x16` \x83\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x93\x83\x01\x93\x90\x93R`\x01`X\x1B\x81\x04`\x07\x0B``\x83\x01R`\x01`\x98\x1B\x90\x04\x90\x91\x16`\x80\x82\x01R\x90V[`@Qa\x02\x10\x91\x90_`\xA0\x82\x01\x90P\x82Q\x82Rb\xFF\xFF\xFF` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Q`\x07\x0B``\x83\x01R`\x01`\x01`@\x1B\x03`\x80\x84\x01Q\x16`\x80\x83\x01R\x92\x91PPV[4\x80\x15a\x03\xDBW__\xFD[Pa\x02Ua\x03\xEA6`\x04a2PV[`;` R_\x90\x81R`@\x90 T`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x0FW__\xFD[Pa\x04\x18a\x0C\x15V[`@Qa\x02\x10\x91\x90a2\x9EV[4\x80\x15a\x040W__\xFD[P`>Ta\x01\xFC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04OW__\xFD[Pa\x04ca\x04^6`\x04a2\xEDV[a\x0CEV[`@Qa\x02\x10\x91\x90a3_V[4\x80\x15a\x04{W__\xFD[Pa\x02.a\x04\x8A6`\x04a2PV[a\x0C\xA7V[4\x80\x15a\x04\x9AW__\xFD[Pa\x04\xAEa\x04\xA96`\x04a3mV[a\r\xB5V[`@Qa\x02\x10\x91\x90a3\x84V[4\x80\x15a\x04\xC6W__\xFD[Pa\x04ca\x04\xD56`\x04a3mV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xFBW__\xFD[Pa\x01\xFC\x7F\0\0\0\0\0\0\0\0\0\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.W__\xFD[Pa\x01\xDBa\x05=6`\x04a3\xE7V[a\x0E`V[a\x01\xDBa\x05P6`\x04a4\x02V[a\x0FUV[4\x80\x15a\x05`W__\xFD[Pa\x04\xAEa\x05o6`\x04a2\xEDV[a\x10\x9CV[4\x80\x15a\x05\x7FW__\xFD[Pa\x01\xDBa\x05\x8E6`\x04a4\x92V[a\x11\x8BV[4\x80\x15a\x05\x9EW__\xFD[Pa\x01\xDBa\x05\xAD6`\x04a4\xBCV[a\x12\xC2V[4\x80\x15a\x05\xBDW__\xFD[Pa\x01\xDBa\x05\xCC6`\x04a4\xBCV[a\x14\x0CV[4\x80\x15a\x05\xDCW__\xFD[Pa\x01\xDBa\x05\xEB6`\x04a5\xA7V[a\x14\xA0V[4\x80\x15a\x05\xFBW__\xFD[P`:Ta\x02U\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x06\x1AW__\xFD[Pa\x01\xDBa\x06)6`\x04a6yV[a\x15\xFFV[4\x80\x15a\x069W__\xFD[Pa\x02U\x7F\0\0\0\0\0\0\0\0\0\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\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xEB\x91\x90a6\xE0V[\x15a\x07\tW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@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\x07oW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x93\x91\x90a6\xE0V[\x15a\x07\xB1W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x07\xF5a\x07\xBF\x85\x80a6\xFBV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xFC\x92PPPV[_\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\x08cWa\x08ca3+V[`\x02\x81\x11\x15a\x08tWa\x08ta3+V[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xB0W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xC8Wa\x08\xC8a3+V[\x14a\x08\xE6W`@Qc\xD4\x9E\x19\xA7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t)a\x08\xF3\x86\x80a6\xFBV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x1A\x1E\x92PPPV[a\tFW`@Qc\x16\x1C\xE5\xED`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\tXa\tR\x88a\x0C\xA7V[\x87a\x1AFV[a\t{\x865a\tg\x87\x80a6\xFBV[a\tt` \x8A\x01\x8Aa7@V[\x86Qa\x1A\xEBV[a\t\x84_a\x1C\x12V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\t\xB0WP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xCDW`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@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\n3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nW\x91\x90a6\xE0V[\x15a\nuW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85\x84\x14\x80\x15a\n\x83WP\x83\x82\x14[a\n\xA0W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\n\xD6W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\n\xE8a\n\xE2\x8Aa\x0C\xA7V[\x89a\x1AFV[_\x80[\x87\x81\x10\x15a\x0B\x80Wa\x0Bl\x8A5\x8A\x8A\x84\x81\x81\x10a\x0B\nWa\x0B\na7\x82V[\x90P` \x02\x01` \x81\x01\x90a\x0B\x1F\x91\x90a7\x96V[\x89\x89\x85\x81\x81\x10a\x0B1Wa\x0B1a7\x82V[\x90P` \x02\x81\x01\x90a\x0BC\x91\x90a7@V[\x89\x89\x87\x81\x81\x10a\x0BUWa\x0BUa7\x82V[\x90P` \x02\x81\x01\x90a\x0Bg\x91\x90a6\xFBV[a\x1D\x92V[a\x0Bv\x90\x83a7\xCEV[\x91P`\x01\x01a\n\xEBV[P`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R_`$\x82\x01R`D\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\xA1\xCAx\x0B\x90`d\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\xF3W__\xFD[PZ\xF1\x15\x80\x15a\x0C\x05W=__>=_\xFD[PPPPPPPPPPPPPPV[``a\x0C@\x7F\0\0\0\0\0\0\0\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\"GV[\x90P\x90V[__a\x0C\x85\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\"\x84\x92PPPV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[_a\x0C\xB5a\x1F\xFF`\x0Ca7\xE1V[a\x0C\xC8`\x01`\x01`@\x1B\x03\x84\x16Ba7\xF8V[\x10a\x0C\xE6W`@QcyD\xE6m`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R_\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\r-\x91a8\"V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\reW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rjV[``\x91P[P\x91P\x91P\x81\x80\x15a\r|WP_\x81Q\x11[a\r\x99W`@QcU\x8A\xD0\xA3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\r\xAD\x91\x90a8-V[\x94\x93PPPPV[a\r\xDC`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[_\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\x0EFWa\x0EFa3+V[`\x02\x81\x11\x15a\x0EWWa\x0EWa3+V[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x0E\x83WP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x0E\xA0W`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@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\x0F\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F*\x91\x90a6\xE0V[\x15a\x0FHW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0FQ\x82a\x1C\x12V[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\x0F\x9EW`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x0F\xC7W`@Qc\x04\x96\x96\xB3`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\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\x10\na#\x15V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10.\x96\x95\x94\x93\x92\x91\x90a8lV[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x10EW__\xFD[PZ\xF1\x15\x80\x15a\x10WW=__>=_\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x10\x8D\x92\x91\x90a8\xBAV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x10\xC3`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6_a\x11\x04\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_\x92\x01\x91\x90\x91RPa\"\x84\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \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\x11pWa\x11pa3+V[`\x02\x81\x11\x15a\x11\x81Wa\x11\x81a3+V[\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\x11\xD4W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xE3c;\x9A\xCA\0\x83a8\xE1V[\x90Pa\x11\xFCc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x83\x16a7\xE1V[`4T\x90\x92P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x12/W`@Qc\x02\xC6\xF5G`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4\x80T\x82\x91\x90_\x90a\x12L\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a8\xF4V[\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\x12\xAB\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x12\xBD\x83\x83a#YV[PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12\xE0WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12\xF9WP0;\x15\x80\x15a\x12\xF9WP_T`\xFF\x16`\x01\x14[a\x13aW`@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[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x13\x82W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x13\xA9W`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x0FQW_\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\x147W`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`>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\x14\xCBW`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@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\x151W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15U\x91\x90a6\xE0V[\x15a\x15sW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q\x84Q\x14a\x15\x95W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x84Q\x81\x10\x15a\x15\xF8Wa\x15\xF0\x83\x85\x83\x81Q\x81\x10a\x15\xB6Wa\x15\xB6a7\x82V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x15\xD0Wa\x15\xD0a7\x82V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a$n\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x15\x97V[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\x16eW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\x89\x91\x90a6\xE0V[\x15a\x16\xA7W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16_\x81\x90\x03a\x16\xDBW`@Qc\x1ATOI`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\xA0\x81\x01\x82R`<T\x80\x82R`=Tb\xFF\xFF\xFF\x81\x16` \x84\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x94\x84\x01\x94\x90\x94R`\x01`X\x1B\x81\x04`\x07\x0B``\x84\x01R`\x01`\x98\x1B\x90\x04\x90\x92\x16`\x80\x82\x01R\x90a\x17:\x90\x87a$\xC0V[_\x80[\x85\x81\x10\x15a\x19\xA3W6\x87\x87\x83\x81\x81\x10a\x17XWa\x17Xa7\x82V[\x90P` \x02\x81\x01\x90a\x17j\x91\x90a9\x13V[\x805_\x90\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\x17\xDAWa\x17\xDAa3+V[`\x02\x81\x11\x15a\x17\xEBWa\x17\xEBa3+V[\x90RP\x90P`\x01\x81``\x01Q`\x02\x81\x11\x15a\x18\x08Wa\x18\x08a3+V[\x14a\x18\x14WPPa\x19\x9BV[\x85`\x01`\x01`@\x1B\x03\x16\x81`@\x01Q`\x01`\x01`@\x1B\x03\x16\x10a\x188WPPa\x19\x9BV[_\x80\x80a\x18H\x84\x8A\x8F5\x88a%qV[` \x8B\x01\x80Q\x93\x96P\x91\x94P\x92Pa\x18_\x82a91V[b\xFF\xFF\xFF\x16\x90RP`\x80\x88\x01\x80Q\x84\x91\x90a\x18{\x90\x83\x90a9NV[`\x01`\x01`@\x1B\x03\x16\x90RP``\x88\x01\x80Q\x83\x91\x90a\x18\x9B\x90\x83\x90a9mV[`\x07\x0B\x90RPa\x18\xAB\x81\x88a9NV[\x855_\x90\x81R`6` \x90\x81R`@\x91\x82\x90 \x87Q\x81T\x92\x89\x01Q\x93\x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x88\x01Q\x93\x9AP\x87\x93\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a\x19OWa\x19Oa3+V[\x02\x17\x90UPP\x84Q`@Qd\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x91P`\x01`\x01`@\x1B\x03\x8B\x16\x90\x7F\xA9\x1CY\x03<4#\xE1\x8BT\xD0\xAC\xEC\xEB\xB4\x97/\x9E\xA9Z\xED\xF5\xF4\xCA\xE3\xB6w\xB0.\xAF:?\x90_\x90\xA3PPPPP[`\x01\x01a\x17=V[P`\x01`\x01`@\x1B\x03\x80\x84\x16_\x90\x81R`;` R`@\x81 \x80T\x84\x93\x91\x92\x91a\x19\xCF\x91\x85\x91\x16a9NV[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPa\t\x84\x82a&\x94V[_\x81_\x81Q\x81\x10a\x1A\x0FWa\x1A\x0Fa7\x82V[` \x02` \x01\x01Q\x90P\x91\x90PV[_\x81`\x03\x81Q\x81\x10a\x1A2Wa\x1A2a7\x82V[` \x02` \x01\x01Q__\x1B\x14\x15\x90P\x91\x90PV[a\x1AR`\x03` a7\xE1V[a\x1A_` \x83\x01\x83a7@V[\x90P\x14a\x1A\x7FW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xCEa\x1A\x8F` \x83\x01\x83a7@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\x91RP\x86\x92PP\x845\x90P`\x03a(\xC3V[a\x0FQW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x84\x14a\x1B\x0CW`@Qc \x05\x91\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x05a\x1B\x1A`(`\x01a7\xCEV[a\x1B$\x91\x90a7\xCEV[a\x1B/\x90` a7\xE1V[\x82\x14a\x1BNW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1B\x8A\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa(\xDA\x92PPPV[\x90P_d\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA1`(`\x01a7\xCEV[`\x0B\x90\x1B\x17\x90Pa\x1B\xEB\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_\x92\x01\x91\x90\x91RP\x8C\x92P\x86\x91P\x85\x90Pa(\xC3V[a\x1C\x08W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a\x1CBW`@Qb\xBE\x9B\xC3`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03B\x81\x16\x91\x16\x03a\x1CpW`@Qcg\xDB[\x8B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4T_\x90`\x01`\x01`@\x1B\x03\x16a\x1C\x8Cc;\x9A\xCA\0Ga8\xE1V[a\x1C\x96\x91\x90a8\xF4V[\x90P\x81\x80\x15a\x1C\xACWP`\x01`\x01`@\x1B\x03\x81\x16\x15[\x15a\x1C\xCAW`@Qc2\xDE\xA9Y`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xA0\x01`@R\x80a\x1C\xDFBa\x0C\xA7V[\x81R`9Tb\xFF\xFF\xFF\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x80\x85\x16`@\x83\x01R_``\x83\x01\x81\x90R`\x80\x90\x92\x01\x91\x90\x91R`:\x80TB\x90\x92\x16`\x01`@\x1B\x02o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x90Pa\x1DC\x81a&\x94V[\x80Q` \x80\x83\x01Q`@Qb\xFF\xFF\xFF\x90\x91\x16\x81R`\x01`\x01`@\x1B\x03B\x16\x91\x7FWW\x96\x13;\xBE\xD37\xE5\xB3\x9A\xA4\x9A0\xDC%V\xA9\x1E\x0Cl*\xF4\xB7\xB8\x86\xAEw\xEB\xEF\x10v\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[__a\x1D\xCF\x84\x84\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xFC\x92PPPV[_\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\x1E=Wa\x1E=a3+V[`\x02\x81\x11\x15a\x1ENWa\x1ENa3+V[\x90RP\x90P_\x81``\x01Q`\x02\x81\x11\x15a\x1EjWa\x1Eja3+V[\x14a\x1E\x88W`@Qc5\xE0\x9E\x9D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1E\xCD\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+j\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x03a\x1E\xF4W`@Qc\x19X#m`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1F9\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\x8E\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x14a\x1F`W`@Qc.\xAD\xE67`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Fha#\x15V[a\x1Fq\x90a9\x9CV[a\x1F\xAC\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\xA5\x92PPPV[\x14a\x1F\xCAW`@Qc7r\xDDS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a \x06\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\xB9\x92PPPV[\x90Pa \x16\x8A\x87\x87\x8B\x8B\x8Ea\x1A\xEBV[`9\x80T\x90_a %\x83a9\xBFV[\x90\x91UPP`:T_\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a \\W`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a iV[`:T`\x01`\x01`@\x1B\x03\x16[`@\x80Q`\x80\x81\x01\x82Rd\xFF\xFF\xFF\xFF\xFF\x8D\x16\x81R`\x01`\x01`@\x1B\x03\x85\x81\x16` \x83\x01R\x83\x16\x91\x81\x01\x91\x90\x91R\x90\x91P``\x81\x01`\x01\x90R_\x85\x81R`6` \x90\x81R`@\x91\x82\x90 \x83Q\x81T\x92\x85\x01Q\x93\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x84\x01Q\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a!>Wa!>a3+V[\x02\x17\x90UPP`=\x80T\x84\x92P`\x13\x90a!i\x90\x84\x90`\x01`\x98\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a9NV[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x7F-\x08\0\xBB\xC3w\xEAT\xA0\x8C]\xB6\xA8z\xAF\xFF^>\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x8A`@Qa!\xC9\x91\x90d\xFF\xFF\xFF\xFF\xFF\x91\x90\x91\x16\x81R` \x01\x90V[`@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\"8c;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16a7\xE1V[\x9B\x9APPPPPPPPPPPV[``_a\"S\x83a+\xD0V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[_\x81Q`0\x14a\"\xA7W`@QcO\x8829`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q`\x02\x90a\"\xBD\x90\x84\x90_\x90` \x01a9\xD7V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xD7\x91a8\"V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\"\xF2W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xA1\x91\x90a8-V[`@\x80Q`\x01`\xF8\x1B` \x82\x01R_`!\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#\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x13XV[_\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a#\xF2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xF7V[``\x91P[PP\x90P\x80a\x12\xBDW`@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\x13XV[`@\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\x12\xBD\x90\x84\x90a+\xF7V[a$\xCC`\x05`\x03a7\xCEV[a$\xD7\x90` a7\xE1V[a$\xE4` \x83\x01\x83a7@V[\x90P\x14a%\x04W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`la%Ta%\x16` \x84\x01\x84a7@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\x91RP\x87\x92PP\x855\x90P\x84a(\xC3V[a\x12\xBDW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q` \x85\x01Q\x90_\x90\x81\x90\x81a%\x89\x87\x83\x88a,\xCAV[\x90P\x84`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a&\x03Wa%\xAE\x85\x82a9\xFBV[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x85\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x95P\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\x01R_\x03a&\x88W`9\x80T\x90_a&2\x83a:*V[\x90\x91UPP`\x02``\x8A\x01Ra&G\x84a:?V[\x92P\x81d\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[PP\x94P\x94P\x94\x91PPV[` \x81\x01Qb\xFF\xFF\xFF\x16\x15a'4W\x80Q`<U` \x81\x01Q`=\x80T`@\x84\x01Q``\x85\x01Q`\x80\x90\x95\x01Qb\xFF\xFF\xFF\x90\x94\x16j\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x92\x16\x91\x90\x91\x17c\x01\0\0\0`\x01`\x01`@\x1B\x03\x92\x83\x16\x02\x17o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`X\x1B\x19\x16`\x01`X\x1B\x94\x82\x16\x94\x90\x94\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x98\x1B\x19\x16\x93\x90\x93\x17`\x01`\x98\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90UV[`\x80\x81\x01Q`4T_\x91a'P\x91`\x01`\x01`@\x1B\x03\x16a9NV[\x90P_\x82``\x01Q\x83`@\x01Qa'g\x91\x90a9mV[`@\x84\x01Q`4\x80T\x92\x93P\x90\x91_\x90a'\x8B\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a9NV[\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\x83\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x91\x16\x17\x90U_\x91Pa'\xDB\x90c;\x9A\xCA\0\x90\x85\x16a7\xE1V[\x90P_a'\xF0c;\x9A\xCA\0`\x07\x85\x90\x0Ba:dV[`:T`@Q\x82\x81R\x91\x92P`\x01`\x01`@\x1B\x03\x16\x90\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x90` \x01`@Q\x80\x91\x03\x90\xA2`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x84\x90R`D\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\xA1\xCAx\x0B\x90`d\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a(\xA6W__\xFD[PZ\xF1\x15\x80\x15a(\xB8W=__>=_\xFD[PPPPPPPPPV[_\x83a(\xD0\x86\x85\x85a-\xA8V[\x14\x95\x94PPPPPV[__`\x02\x83Qa(\xEA\x91\x90a8\xE1V[\x90P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x05Wa)\x05a4\xD7V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a).W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a*(W`\x02\x85a)H\x83\x83a7\xE1V[\x81Q\x81\x10a)XWa)Xa7\x82V[` \x02` \x01\x01Q\x86\x83`\x02a)n\x91\x90a7\xE1V[a)y\x90`\x01a7\xCEV[\x81Q\x81\x10a)\x89Wa)\x89a7\x82V[` \x02` \x01\x01Q`@Q` \x01a)\xAB\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra)\xC5\x91a8\"V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a)\xE0W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\x03\x91\x90a8-V[\x82\x82\x81Q\x81\x10a*\x15Wa*\x15a7\x82V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a)3V[Pa*4`\x02\x83a8\xE1V[\x91P[\x81\x15a+GW_[\x82\x81\x10\x15a+4W`\x02\x82a*T\x83\x83a7\xE1V[\x81Q\x81\x10a*dWa*da7\x82V[` \x02` \x01\x01Q\x83\x83`\x02a*z\x91\x90a7\xE1V[a*\x85\x90`\x01a7\xCEV[\x81Q\x81\x10a*\x95Wa*\x95a7\x82V[` \x02` \x01\x01Q`@Q` \x01a*\xB7\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra*\xD1\x91a8\"V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a*\xECW=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+\x0F\x91\x90a8-V[\x82\x82\x81Q\x81\x10a+!Wa+!a7\x82V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a*?V[Pa+@`\x02\x83a8\xE1V[\x91Pa*7V[\x80_\x81Q\x81\x10a+YWa+Ya7\x82V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[_a\x0C\xA1\x82`\x05\x81Q\x81\x10a+\x81Wa+\x81a7\x82V[` \x02` \x01\x01Qa.|V[_a\x0C\xA1\x82`\x06\x81Q\x81\x10a+\x81Wa+\x81a7\x82V[_\x81`\x01\x81Q\x81\x10a\x1A\x0FWa\x1A\x0Fa7\x82V[_a\x0C\xA1\x82`\x02\x81Q\x81\x10a+\x81Wa+\x81a7\x82V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x0C\xA1W`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a,K\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a.\xE3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a,kWP\x80\x80` \x01\x90Q\x81\x01\x90a,k\x91\x90a6\xE0V[a\x12\xBDW`@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\x13XV[_a,\xD7`&`\x01a7\xCEV[a,\xE2\x90` a7\xE1V[a,\xEF`@\x84\x01\x84a7@V[\x90P\x14a-\x0FW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a-\x1B`\x04\x85a:\x93V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa-ta-4`@\x85\x01\x85a7@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\x91RP\x89\x92PPP` \x86\x015\x84a(\xC3V[a-\x91W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a-\x9F\x83` \x015\x85a.\xF1V[\x95\x94PPPPPV[_\x83Q_\x14\x15\x80\x15a-\xC5WP` \x84Qa-\xC3\x91\x90a:\xBCV[\x15[a-\xE2W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a.rWa.\x06`\x02\x85a:\xBCV[_\x03a.8W\x81Q_R\x80\x86\x01Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa.-W__\xFD[`\x02\x84\x04\x93Pa.`V[\x80\x86\x01Q_R\x81Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa.YW__\xFD[`\x02\x84\x04\x93P[a.k` \x82a7\xCEV[\x90Pa-\xF3V[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\r\xAD\x84\x84_\x85a/\x1DV[_\x80a.\xFE`\x04\x84a:\xCFV[a/\t\x90`@a:\xF8V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\r\xAD\x84\x82\x1Ba.|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\x13XV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa/\x99\x91\x90a8\"V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a/\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a/\xD8V[``\x91P[P\x91P\x91Pa/\xE9\x87\x83\x83\x87a/\xF4V[\x97\x96PPPPPPPV[``\x83\x15a0bW\x82Q_\x03a0[W`\x01`\x01`\xA0\x1B\x03\x85\x16;a0[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\x13XV[P\x81a\r\xADV[a\r\xAD\x83\x83\x81Q\x15a0wW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x13X\x91\x90a2\x9EV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a0\xA7W__\xFD[\x91\x90PV[_`@\x82\x84\x03\x12\x15a0\xBCW__\xFD[P\x91\x90PV[___``\x84\x86\x03\x12\x15a0\xD4W__\xFD[a0\xDD\x84a0\x91V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xF7W__\xFD[a1\x03\x86\x82\x87\x01a0\xACV[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x1EW__\xFD[a1*\x86\x82\x87\x01a0\xACV[\x91PP\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a1DW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1ZW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a1tW__\xFD[\x92P\x92\x90PV[________`\xA0\x89\x8B\x03\x12\x15a1\x92W__\xFD[a1\x9B\x89a0\x91V[\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB5W__\xFD[a1\xC1\x8B\x82\x8C\x01a0\xACV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDCW__\xFD[a1\xE8\x8B\x82\x8C\x01a14V[\x90\x97P\x95PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x06W__\xFD[a2\x12\x8B\x82\x8C\x01a14V[\x90\x95P\x93PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a20W__\xFD[a2<\x8B\x82\x8C\x01a14V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[_` \x82\x84\x03\x12\x15a2`W__\xFD[a2i\x82a0\x91V[\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_a2i` \x83\x01\x84a2pV[__\x83`\x1F\x84\x01\x12a2\xC0W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xD6W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a1tW__\xFD[__` \x83\x85\x03\x12\x15a2\xFEW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x13W__\xFD[a3\x1F\x85\x82\x86\x01a2\xB0V[\x90\x96\x90\x95P\x93PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10a3[WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[` \x81\x01a\x0C\xA1\x82\x84a3?V[_` \x82\x84\x03\x12\x15a3}W__\xFD[P5\x91\x90PV[_`\x80\x82\x01\x90P`\x01`\x01`@\x1B\x03\x83Q\x16\x82R`\x01`\x01`@\x1B\x03` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Qa3\xD0``\x84\x01\x82a3?V[P\x92\x91PPV[\x80\x15\x15\x81\x14a3\xE4W__\xFD[PV[_` \x82\x84\x03\x12\x15a3\xF7W__\xFD[\x815a2i\x81a3\xD7V[_____``\x86\x88\x03\x12\x15a4\x16W__\xFD[\x855`\x01`\x01`@\x1B\x03\x81\x11\x15a4+W__\xFD[a47\x88\x82\x89\x01a2\xB0V[\x90\x96P\x94PP` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4UW__\xFD[a4a\x88\x82\x89\x01a2\xB0V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a3\xE4W__\xFD[\x805a0\xA7\x81a4sV[__`@\x83\x85\x03\x12\x15a4\xA3W__\xFD[\x825a4\xAE\x81a4sV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a4\xCCW__\xFD[\x815a2i\x81a4sV[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\x15a5\x13Wa5\x13a4\xD7V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a53Wa53a4\xD7V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a5LW__\xFD[\x815a5_a5Z\x82a5\x1BV[a4\xEBV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a5\x80W__\xFD[` \x85\x01[\x83\x81\x10\x15a5\x9DW\x805\x83R` \x92\x83\x01\x92\x01a5\x85V[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a5\xB9W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xCEW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a5\xDEW__\xFD[\x805a5\xECa5Z\x82a5\x1BV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a6\rW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a68W\x835a6'\x81a4sV[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a6\x14V[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6UW__\xFD[a6a\x86\x82\x87\x01a5=V[\x92PPa6p`@\x85\x01a4\x87V[\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a6\x8BW__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a6\xA0W__\xFD[a6\xAC\x86\x82\x87\x01a0\xACV[\x93PP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6\xC7W__\xFD[a6\xD3\x86\x82\x87\x01a14V[\x94\x97\x90\x96P\x93\x94PPPPV[_` \x82\x84\x03\x12\x15a6\xF0W__\xFD[\x81Qa2i\x81a3\xD7V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a7\x10W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a7)W__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a1tW__\xFD[__\x835`\x1E\x19\x846\x03\x01\x81\x12a7UW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a7nW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a1tW__\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a7\xA6W__\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a2iW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\xA1Wa\x0C\xA1a7\xBAV[\x81\x81\x03\x81\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2i\x82\x84a8\x0BV[_` \x82\x84\x03\x12\x15a8=W__\xFD[PQ\x91\x90PV[\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[`\x80\x81R_a8\x7F`\x80\x83\x01\x88\x8Aa8DV[\x82\x81\x03` \x84\x01Ra8\x91\x81\x88a2pV[\x90P\x82\x81\x03`@\x84\x01Ra8\xA6\x81\x86\x88a8DV[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R_a\r\xAD` \x83\x01\x84\x86a8DV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a8\xEFWa8\xEFa8\xCDV[P\x04\x90V[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[_\x825`^\x19\x836\x03\x01\x81\x12a9'W__\xFD[\x91\x90\x91\x01\x92\x91PPV[_b\xFF\xFF\xFF\x82\x16\x80a9EWa9Ea7\xBAV[_\x19\x01\x92\x91PPV[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[`\x07\x81\x81\x0B\x90\x83\x90\x0B\x01g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x13g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x82\x12\x17\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a0\xBCW_\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[_`\x01\x82\x01a9\xD0Wa9\xD0a7\xBAV[P`\x01\x01\x90V[_a9\xE2\x82\x85a8\x0BV[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x10\x01\x91\x90PV[`\x07\x82\x81\x0B\x90\x82\x90\x0B\x03g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x12g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x13\x17\x15a\x0C\xA1Wa\x0C\xA1a7\xBAV[_\x81a:8Wa:8a7\xBAV[P_\x19\x01\x90V[_\x81`\x07\x0Bg\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x03a:\\Wa:\\a7\xBAV[_\x03\x92\x91PPV[\x80\x82\x02_\x82\x12`\x01`\xFF\x1B\x84\x14\x16\x15a:\x7FWa:\x7Fa7\xBAV[\x81\x81\x05\x83\x14\x82\x15\x17a\x0C\xA1Wa\x0C\xA1a7\xBAV[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a:\xA9Wa:\xA9a8\xCDV[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x04\x91PP\x92\x91PPV[_\x82a:\xCAWa:\xCAa8\xCDV[P\x06\x90V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a:\xE5Wa:\xE5a8\xCDV[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x06\x91PP\x92\x91PPV[d\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a3\xD0Wa3\xD0a7\xBAV\xFE\xA2dipfsX\"\x12 \xC64\x10\x8F\xE6\xE7\xD7rk\x8BD\x07\x87F`x\x94\x8A\nc\xCD1\x17F\xF8\x83$AN\xAA\x0E\x82dsolcC\0\x08\x1B\x003",
);
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `BeaconTimestampTooFarInPast()` and selector `0x37e07ffd`.
```solidity
error BeaconTimestampTooFarInPast();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct BeaconTimestampTooFarInPast;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<BeaconTimestampTooFarInPast> for UnderlyingRustTuple<'_> {
fn from(value: BeaconTimestampTooFarInPast) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for BeaconTimestampTooFarInPast {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for BeaconTimestampTooFarInPast {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "BeaconTimestampTooFarInPast()";
const SELECTOR: [u8; 4] = [55u8, 224u8, 127u8, 253u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `CannotCheckpointTwiceInSingleBlock()` and selector `0x67db5b8b`.
```solidity
error CannotCheckpointTwiceInSingleBlock();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct CannotCheckpointTwiceInSingleBlock;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<CannotCheckpointTwiceInSingleBlock> for UnderlyingRustTuple<'_> {
fn from(value: CannotCheckpointTwiceInSingleBlock) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for CannotCheckpointTwiceInSingleBlock {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for CannotCheckpointTwiceInSingleBlock {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "CannotCheckpointTwiceInSingleBlock()";
const SELECTOR: [u8; 4] = [103u8, 219u8, 91u8, 139u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `CheckpointAlreadyActive()` and selector `0xbe9bc300`.
```solidity
error CheckpointAlreadyActive();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct CheckpointAlreadyActive;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<CheckpointAlreadyActive> for UnderlyingRustTuple<'_> {
fn from(value: CheckpointAlreadyActive) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for CheckpointAlreadyActive {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for CheckpointAlreadyActive {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "CheckpointAlreadyActive()";
const SELECTOR: [u8; 4] = [190u8, 155u8, 195u8, 0u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `CredentialsAlreadyVerified()` and selector `0x35e09e9d`.
```solidity
error CredentialsAlreadyVerified();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct CredentialsAlreadyVerified;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<CredentialsAlreadyVerified> for UnderlyingRustTuple<'_> {
fn from(value: CredentialsAlreadyVerified) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for CredentialsAlreadyVerified {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for CredentialsAlreadyVerified {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "CredentialsAlreadyVerified()";
const SELECTOR: [u8; 4] = [53u8, 224u8, 158u8, 157u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
```solidity
error CurrentlyPaused();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct CurrentlyPaused;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
fn from(value: CurrentlyPaused) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for CurrentlyPaused {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "CurrentlyPaused()";
const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
```solidity
error InputAddressZero();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InputAddressZero;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
fn from(value: InputAddressZero) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InputAddressZero {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InputAddressZero()";
const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
```solidity
error InputArrayLengthMismatch();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InputArrayLengthMismatch;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InputArrayLengthMismatch> for UnderlyingRustTuple<'_> {
fn from(value: InputArrayLengthMismatch) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthMismatch {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InputArrayLengthMismatch {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InsufficientWithdrawableBalance()` and selector `0x0b1bd51c`.
```solidity
error InsufficientWithdrawableBalance();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InsufficientWithdrawableBalance;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InsufficientWithdrawableBalance> for UnderlyingRustTuple<'_> {
fn from(value: InsufficientWithdrawableBalance) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientWithdrawableBalance {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InsufficientWithdrawableBalance {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InsufficientWithdrawableBalance()";
const SELECTOR: [u8; 4] = [11u8, 27u8, 213u8, 28u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InvalidEIP4788Response()` and selector `0x558ad0a3`.
```solidity
error InvalidEIP4788Response();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InvalidEIP4788Response;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InvalidEIP4788Response> for UnderlyingRustTuple<'_> {
fn from(value: InvalidEIP4788Response) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidEIP4788Response {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InvalidEIP4788Response {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InvalidEIP4788Response()";
const SELECTOR: [u8; 4] = [85u8, 138u8, 208u8, 163u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
```solidity
error InvalidProof();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InvalidProof;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
fn from(value: InvalidProof) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InvalidProof {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InvalidProof()";
const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InvalidProofLength()` and selector `0x4dc5f6a4`.
```solidity
error InvalidProofLength();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InvalidProofLength;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InvalidProofLength> for UnderlyingRustTuple<'_> {
fn from(value: InvalidProofLength) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProofLength {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InvalidProofLength {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InvalidProofLength()";
const SELECTOR: [u8; 4] = [77u8, 197u8, 246u8, 164u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InvalidPubKeyLength()` and selector `0x9f106472`.
```solidity
error InvalidPubKeyLength();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InvalidPubKeyLength;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InvalidPubKeyLength> for UnderlyingRustTuple<'_> {
fn from(value: InvalidPubKeyLength) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPubKeyLength {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InvalidPubKeyLength {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InvalidPubKeyLength()";
const SELECTOR: [u8; 4] = [159u8, 16u8, 100u8, 114u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`.
```solidity
error InvalidShortString();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InvalidShortString;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InvalidShortString> for UnderlyingRustTuple<'_> {
fn from(value: InvalidShortString) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidShortString {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InvalidShortString {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InvalidShortString()";
const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InvalidValidatorFieldsLength()` and selector `0x200591bd`.
```solidity
error InvalidValidatorFieldsLength();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InvalidValidatorFieldsLength;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InvalidValidatorFieldsLength> for UnderlyingRustTuple<'_> {
fn from(value: InvalidValidatorFieldsLength) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidValidatorFieldsLength {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InvalidValidatorFieldsLength {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InvalidValidatorFieldsLength()";
const SELECTOR: [u8; 4] = [32u8, 5u8, 145u8, 189u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `MsgValueNot32ETH()` and selector `0x24b4b598`.
```solidity
error MsgValueNot32ETH();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct MsgValueNot32ETH;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<MsgValueNot32ETH> for UnderlyingRustTuple<'_> {
fn from(value: MsgValueNot32ETH) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for MsgValueNot32ETH {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for MsgValueNot32ETH {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "MsgValueNot32ETH()";
const SELECTOR: [u8; 4] = [36u8, 180u8, 181u8, 152u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `NoActiveCheckpoint()` and selector `0x1a544f49`.
```solidity
error NoActiveCheckpoint();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct NoActiveCheckpoint;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<NoActiveCheckpoint> for UnderlyingRustTuple<'_> {
fn from(value: NoActiveCheckpoint) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoActiveCheckpoint {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for NoActiveCheckpoint {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "NoActiveCheckpoint()";
const SELECTOR: [u8; 4] = [26u8, 84u8, 79u8, 73u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `NoBalanceToCheckpoint()` and selector `0xcb7aa564`.
```solidity
error NoBalanceToCheckpoint();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct NoBalanceToCheckpoint;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<NoBalanceToCheckpoint> for UnderlyingRustTuple<'_> {
fn from(value: NoBalanceToCheckpoint) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoBalanceToCheckpoint {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for NoBalanceToCheckpoint {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "NoBalanceToCheckpoint()";
const SELECTOR: [u8; 4] = [203u8, 122u8, 165u8, 100u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `OnlyEigenPodManager()` and selector `0xc84e9984`.
```solidity
error OnlyEigenPodManager();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OnlyEigenPodManager;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OnlyEigenPodManager> for UnderlyingRustTuple<'_> {
fn from(value: OnlyEigenPodManager) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodManager {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for OnlyEigenPodManager {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "OnlyEigenPodManager()";
const SELECTOR: [u8; 4] = [200u8, 78u8, 153u8, 132u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `OnlyEigenPodOwner()` and selector `0xe33e6e06`.
```solidity
error OnlyEigenPodOwner();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OnlyEigenPodOwner;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OnlyEigenPodOwner> for UnderlyingRustTuple<'_> {
fn from(value: OnlyEigenPodOwner) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodOwner {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for OnlyEigenPodOwner {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "OnlyEigenPodOwner()";
const SELECTOR: [u8; 4] = [227u8, 62u8, 110u8, 6u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `OnlyEigenPodOwnerOrProofSubmitter()` and selector `0x427a7779`.
```solidity
error OnlyEigenPodOwnerOrProofSubmitter();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OnlyEigenPodOwnerOrProofSubmitter;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OnlyEigenPodOwnerOrProofSubmitter> for UnderlyingRustTuple<'_> {
fn from(value: OnlyEigenPodOwnerOrProofSubmitter) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodOwnerOrProofSubmitter {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for OnlyEigenPodOwnerOrProofSubmitter {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "OnlyEigenPodOwnerOrProofSubmitter()";
const SELECTOR: [u8; 4] = [66u8, 122u8, 119u8, 121u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`.
```solidity
error StringTooLong(string str);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct StringTooLong {
#[allow(missing_docs)]
pub str: 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::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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<StringTooLong> for UnderlyingRustTuple<'_> {
fn from(value: StringTooLong) -> Self {
(value.str,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for StringTooLong {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { str: tuple.0 }
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for StringTooLong {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "StringTooLong(string)";
const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
&self.str,
),
)
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `TimestampOutOfRange()` and selector `0xf289ccda`.
```solidity
error TimestampOutOfRange();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct TimestampOutOfRange;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<TimestampOutOfRange> for UnderlyingRustTuple<'_> {
fn from(value: TimestampOutOfRange) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for TimestampOutOfRange {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for TimestampOutOfRange {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "TimestampOutOfRange()";
const SELECTOR: [u8; 4] = [242u8, 137u8, 204u8, 218u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `ValidatorInactiveOnBeaconChain()` and selector `0x65608db4`.
```solidity
error ValidatorInactiveOnBeaconChain();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ValidatorInactiveOnBeaconChain;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ValidatorInactiveOnBeaconChain> for UnderlyingRustTuple<'_> {
fn from(value: ValidatorInactiveOnBeaconChain) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactiveOnBeaconChain {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for ValidatorInactiveOnBeaconChain {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "ValidatorInactiveOnBeaconChain()";
const SELECTOR: [u8; 4] = [101u8, 96u8, 141u8, 180u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `ValidatorIsExitingBeaconChain()` and selector `0x2eade637`.
```solidity
error ValidatorIsExitingBeaconChain();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ValidatorIsExitingBeaconChain;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ValidatorIsExitingBeaconChain> for UnderlyingRustTuple<'_> {
fn from(value: ValidatorIsExitingBeaconChain) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorIsExitingBeaconChain {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for ValidatorIsExitingBeaconChain {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "ValidatorIsExitingBeaconChain()";
const SELECTOR: [u8; 4] = [46u8, 173u8, 230u8, 55u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `ValidatorNotActiveInPod()` and selector `0xd49e19a7`.
```solidity
error ValidatorNotActiveInPod();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ValidatorNotActiveInPod;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ValidatorNotActiveInPod> for UnderlyingRustTuple<'_> {
fn from(value: ValidatorNotActiveInPod) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotActiveInPod {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for ValidatorNotActiveInPod {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "ValidatorNotActiveInPod()";
const SELECTOR: [u8; 4] = [212u8, 158u8, 25u8, 167u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `ValidatorNotSlashedOnBeaconChain()` and selector `0xb0e72f68`.
```solidity
error ValidatorNotSlashedOnBeaconChain();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ValidatorNotSlashedOnBeaconChain;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ValidatorNotSlashedOnBeaconChain> for UnderlyingRustTuple<'_> {
fn from(value: ValidatorNotSlashedOnBeaconChain) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotSlashedOnBeaconChain {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for ValidatorNotSlashedOnBeaconChain {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "ValidatorNotSlashedOnBeaconChain()";
const SELECTOR: [u8; 4] = [176u8, 231u8, 47u8, 104u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `WithdrawalCredentialsNotForEigenPod()` and selector `0x6ee5baa6`.
```solidity
error WithdrawalCredentialsNotForEigenPod();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct WithdrawalCredentialsNotForEigenPod;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<WithdrawalCredentialsNotForEigenPod> for UnderlyingRustTuple<'_> {
fn from(value: WithdrawalCredentialsNotForEigenPod) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for WithdrawalCredentialsNotForEigenPod {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for WithdrawalCredentialsNotForEigenPod {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "WithdrawalCredentialsNotForEigenPod()";
const SELECTOR: [u8; 4] = [110u8, 229u8, 186u8, 166u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
checkpointTimestamp: topics.1,
beaconBlockRoot: topics.2,
validatorCount: data.0,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.validatorCount,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::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() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
out[1usize] = <alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::encode_topic(
&self.checkpointTimestamp,
);
out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
32,
> 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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
checkpointTimestamp: topics.1,
totalShareDeltaWei: data.0,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Int<256> as alloy_sol_types::SolType>::tokenize(
&self.totalShareDeltaWei,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::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() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
out[1usize] = <alloy::sol_types::sol_data::Uint<
64,
> 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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self { pubkey: data.0 }
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.pubkey,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self { version: data.0 }
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.version,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
amountReceived: data.0,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.amountReceived,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
prevProofSubmitter: data.0,
newProofSubmitter: data.1,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.prevProofSubmitter,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.newProofSubmitter,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
recipient: topics.1,
amount: data.0,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.amount,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::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() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
validatorIndex: data.0,
balanceTimestamp: data.1,
newValidatorBalanceGwei: data.2,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Uint<40> as alloy_sol_types::SolType>::tokenize(
&self.validatorIndex,
),
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self.balanceTimestamp,
),
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self.newValidatorBalanceGwei,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
checkpointTimestamp: topics.1,
validatorIndex: topics.2,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return 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) -> <Self::TopicList as alloy_sol_types::SolType>::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() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
out[1usize] = <alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::encode_topic(
&self.checkpointTimestamp,
);
out[2usize] = <alloy::sol_types::sol_data::Uint<
40,
> 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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
validatorIndex: data.0,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Uint<40> as alloy_sol_types::SolType>::tokenize(
&self.validatorIndex,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_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)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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> = <Self::DataTuple<'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: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
checkpointTimestamp: topics.1,
validatorIndex: topics.2,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return 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) -> <Self::TopicList as alloy_sol_types::SolType>::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() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
out[1usize] = <alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::EventTopic>::encode_topic(
&self.checkpointTimestamp,
);
out[2usize] = <alloy::sol_types::sol_data::Uint<
40,
> 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, string _version);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct constructorCall {
#[allow(missing_docs)]
pub _ethPOS: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub _eigenPodManager: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub _GENESIS_TIME: u64,
#[allow(missing_docs)]
pub _version: alloy::sol_types::private::String,
}
const _: () = {
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>,
alloy::sol_types::sol_data::String,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::Address,
u64,
alloy::sol_types::private::String,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
fn from(value: constructorCall) -> Self {
(
value._ethPOS,
value._eigenPodManager,
value._GENESIS_TIME,
value._version,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
_ethPOS: tuple.0,
_eigenPodManager: tuple.1,
_GENESIS_TIME: tuple.2,
_version: 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::Uint<64>,
alloy::sol_types::sol_data::String,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self._ethPOS,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self._eigenPodManager,
),
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self._GENESIS_TIME,
),
<alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
&self._version,
),
)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<GENESIS_TIMECall> for UnderlyingRustTuple<'_> {
fn from(value: GENESIS_TIMECall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<GENESIS_TIMEReturn> for UnderlyingRustTuple<'_> {
fn from(value: GENESIS_TIMEReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = u64;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: GENESIS_TIMEReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: GENESIS_TIMEReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[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;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<activeValidatorCountCall> for UnderlyingRustTuple<'_> {
fn from(value: activeValidatorCountCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<activeValidatorCountReturn> for UnderlyingRustTuple<'_> {
fn from(value: activeValidatorCountReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::primitives::aliases::U256;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: activeValidatorCountReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: activeValidatorCountReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 u64);
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<checkpointBalanceExitedGweiCall> for UnderlyingRustTuple<'_> {
fn from(value: checkpointBalanceExitedGweiCall) -> Self {
(value.0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkpointBalanceExitedGweiCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self(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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<checkpointBalanceExitedGweiReturn> for UnderlyingRustTuple<'_> {
fn from(value: checkpointBalanceExitedGweiReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = u64;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self.0,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: checkpointBalanceExitedGweiReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: checkpointBalanceExitedGweiReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `currentCheckpoint()` and selector `0x47d28372`.
```solidity
function currentCheckpoint() external view returns (IEigenPodTypes.Checkpoint memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct currentCheckpointCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[allow(missing_docs)]
pub _0: <IEigenPodTypes::Checkpoint as alloy::sol_types::SolType>::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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<currentCheckpointCall> for UnderlyingRustTuple<'_> {
fn from(value: currentCheckpointCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentCheckpointCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (IEigenPodTypes::Checkpoint,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(<IEigenPodTypes::Checkpoint as alloy::sol_types::SolType>::RustType,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<currentCheckpointReturn> for UnderlyingRustTuple<'_> {
fn from(value: currentCheckpointReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = <IEigenPodTypes::Checkpoint as alloy::sol_types::SolType>::RustType;
type ReturnTuple<'a> = (IEigenPodTypes::Checkpoint,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<IEigenPodTypes::Checkpoint as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: currentCheckpointReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: currentCheckpointReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<currentCheckpointTimestampCall> for UnderlyingRustTuple<'_> {
fn from(value: currentCheckpointTimestampCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<currentCheckpointTimestampReturn> for UnderlyingRustTuple<'_> {
fn from(value: currentCheckpointTimestampReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = u64;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: currentCheckpointTimestampReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: currentCheckpointTimestampReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[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;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<eigenPodManagerCall> for UnderlyingRustTuple<'_> {
fn from(value: eigenPodManagerCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<eigenPodManagerReturn> for UnderlyingRustTuple<'_> {
fn from(value: eigenPodManagerReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: eigenPodManagerReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: eigenPodManagerReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[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;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ethPOSCall> for UnderlyingRustTuple<'_> {
fn from(value: ethPOSCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ethPOSReturn> for UnderlyingRustTuple<'_> {
fn from(value: ethPOSReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: ethPOSReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: ethPOSReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
pub timestamp: u64,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[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;
{
#[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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getParentBlockRootCall> for UnderlyingRustTuple<'_> {
fn from(value: getParentBlockRootCall) -> Self {
(value.timestamp,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getParentBlockRootReturn> for UnderlyingRustTuple<'_> {
fn from(value: getParentBlockRootReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::FixedBytes<32>;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self.timestamp,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(ret),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getParentBlockRootReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getParentBlockRootReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
fn from(value: initializeCall) -> Self {
(value._podOwner,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
fn from(value: initializeReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl initializeReturn {
fn _tokenize(&self) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for initializeCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = initializeReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self._podOwner,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
initializeReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<lastCheckpointTimestampCall> for UnderlyingRustTuple<'_> {
fn from(value: lastCheckpointTimestampCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<lastCheckpointTimestampReturn> for UnderlyingRustTuple<'_> {
fn from(value: lastCheckpointTimestampReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = u64;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: lastCheckpointTimestampReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: lastCheckpointTimestampReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[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;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<podOwnerCall> for UnderlyingRustTuple<'_> {
fn from(value: podOwnerCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<podOwnerReturn> for UnderlyingRustTuple<'_> {
fn from(value: podOwnerReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: podOwnerReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: podOwnerReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[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;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<proofSubmitterCall> for UnderlyingRustTuple<'_> {
fn from(value: proofSubmitterCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<proofSubmitterReturn> for UnderlyingRustTuple<'_> {
fn from(value: proofSubmitterReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: proofSubmitterReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: proofSubmitterReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
pub tokenList: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
#[allow(missing_docs)]
pub amountsToWithdraw:
alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
#[allow(missing_docs)]
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::Address>,
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
alloy::sol_types::sol_data::Address,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<recoverTokensCall> for UnderlyingRustTuple<'_> {
fn from(value: recoverTokensCall) -> Self {
(value.tokenList, value.amountsToWithdraw, value.recipient)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<recoverTokensReturn> for UnderlyingRustTuple<'_> {
fn from(value: recoverTokensReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for recoverTokensReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl recoverTokensReturn {
fn _tokenize(
&self,
) -> <recoverTokensCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for recoverTokensCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
alloy::sol_types::sol_data::Address,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = recoverTokensReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Address,
> as alloy_sol_types::SolType>::tokenize(&self.tokenList),
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<256>,
> as alloy_sol_types::SolType>::tokenize(&self.amountsToWithdraw),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.recipient,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
recoverTokensReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<setProofSubmitterCall> for UnderlyingRustTuple<'_> {
fn from(value: setProofSubmitterCall) -> Self {
(value.newProofSubmitter,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<setProofSubmitterReturn> for UnderlyingRustTuple<'_> {
fn from(value: setProofSubmitterReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for setProofSubmitterReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl setProofSubmitterReturn {
fn _tokenize(
&self,
) -> <setProofSubmitterCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for setProofSubmitterCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = setProofSubmitterReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.newProofSubmitter,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
setProofSubmitterReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
pub pubkey: alloy::sol_types::private::Bytes,
#[allow(missing_docs)]
pub signature: alloy::sol_types::private::Bytes,
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<stakeCall> for UnderlyingRustTuple<'_> {
fn from(value: stakeCall) -> Self {
(value.pubkey, value.signature, value.depositDataRoot)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<stakeReturn> for UnderlyingRustTuple<'_> {
fn from(value: stakeReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl stakeReturn {
fn _tokenize(&self) -> <stakeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = stakeReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.pubkey,
),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.signature,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.depositDataRoot),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
stakeReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<startCheckpointCall> for UnderlyingRustTuple<'_> {
fn from(value: startCheckpointCall) -> Self {
(value.revertIfNoBalance,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<startCheckpointReturn> for UnderlyingRustTuple<'_> {
fn from(value: startCheckpointReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for startCheckpointReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl startCheckpointReturn {
fn _tokenize(
&self,
) -> <startCheckpointCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for startCheckpointCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Bool,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = startCheckpointReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
&self.revertIfNoBalance,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
startCheckpointReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `validatorPubkeyHashToInfo(bytes32)` and selector `0x6fcd0e53`.
```solidity
function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (IEigenPodTypes.ValidatorInfo memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct validatorPubkeyHashToInfoCall {
#[allow(missing_docs)]
pub validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
///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 {
#[allow(missing_docs)]
pub _0: <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<validatorPubkeyHashToInfoCall> for UnderlyingRustTuple<'_> {
fn from(value: validatorPubkeyHashToInfoCall) -> Self {
(value.validatorPubkeyHash,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorPubkeyHashToInfoCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
validatorPubkeyHash: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(<IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<validatorPubkeyHashToInfoReturn> for UnderlyingRustTuple<'_> {
fn from(value: validatorPubkeyHashToInfoReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType;
type ReturnTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.validatorPubkeyHash),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<IEigenPodTypes::ValidatorInfo as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: validatorPubkeyHashToInfoReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: validatorPubkeyHashToInfoReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `validatorPubkeyToInfo(bytes)` and selector `0xb522538a`.
```solidity
function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (IEigenPodTypes.ValidatorInfo memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct validatorPubkeyToInfoCall {
#[allow(missing_docs)]
pub validatorPubkey: alloy::sol_types::private::Bytes,
}
#[derive(serde::Serialize, serde::Deserialize)]
///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 {
#[allow(missing_docs)]
pub _0: <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<validatorPubkeyToInfoCall> for UnderlyingRustTuple<'_> {
fn from(value: validatorPubkeyToInfoCall) -> Self {
(value.validatorPubkey,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorPubkeyToInfoCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
validatorPubkey: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(<IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<validatorPubkeyToInfoReturn> for UnderlyingRustTuple<'_> {
fn from(value: validatorPubkeyToInfoReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType;
type ReturnTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.validatorPubkey,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<IEigenPodTypes::ValidatorInfo as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: validatorPubkeyToInfoReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: validatorPubkeyToInfoReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `validatorStatus(bytes)` and selector `0x58eaee79`.
```solidity
function validatorStatus(bytes memory validatorPubkey) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct validatorStatus_0Call {
#[allow(missing_docs)]
pub validatorPubkey: alloy::sol_types::private::Bytes,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[allow(missing_docs)]
pub _0: <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<validatorStatus_0Call> for UnderlyingRustTuple<'_> {
fn from(value: validatorStatus_0Call) -> Self {
(value.validatorPubkey,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorStatus_0Call {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
validatorPubkey: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(<IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<validatorStatus_0Return> for UnderlyingRustTuple<'_> {
fn from(value: validatorStatus_0Return) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType;
type ReturnTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.validatorPubkey,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<IEigenPodTypes::VALIDATOR_STATUS as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: validatorStatus_0Return = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: validatorStatus_0Return = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `validatorStatus(bytes32)` and selector `0x7439841f`.
```solidity
function validatorStatus(bytes32 pubkeyHash) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct validatorStatus_1Call {
#[allow(missing_docs)]
pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[allow(missing_docs)]
pub _0: <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<validatorStatus_1Call> for UnderlyingRustTuple<'_> {
fn from(value: validatorStatus_1Call) -> Self {
(value.pubkeyHash,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorStatus_1Call {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
pubkeyHash: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(<IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<validatorStatus_1Return> for UnderlyingRustTuple<'_> {
fn from(value: validatorStatus_1Return) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType;
type ReturnTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<IEigenPodTypes::VALIDATOR_STATUS as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: validatorStatus_1Return = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: validatorStatus_1Return = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
pub balanceContainerProof:
<BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub proofs: alloy::sol_types::private::Vec<
<BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::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<BeaconChainProofs::BalanceProof>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
<BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
alloy::sol_types::private::Vec<
<BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::RustType,
>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<verifyCheckpointProofsCall> for UnderlyingRustTuple<'_> {
fn from(value: verifyCheckpointProofsCall) -> Self {
(value.balanceContainerProof, value.proofs)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<verifyCheckpointProofsReturn> for UnderlyingRustTuple<'_> {
fn from(value: verifyCheckpointProofsReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCheckpointProofsReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl verifyCheckpointProofsReturn {
fn _tokenize(
&self,
) -> <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for verifyCheckpointProofsCall {
type Parameters<'a> = (
BeaconChainProofs::BalanceContainerProof,
alloy::sol_types::sol_data::Array<BeaconChainProofs::BalanceProof>,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = verifyCheckpointProofsReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<BeaconChainProofs::BalanceContainerProof as alloy_sol_types::SolType>::tokenize(
&self.balanceContainerProof,
),
<alloy::sol_types::sol_data::Array<
BeaconChainProofs::BalanceProof,
> as alloy_sol_types::SolType>::tokenize(&self.proofs),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
verifyCheckpointProofsReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
pub beaconTimestamp: u64,
#[allow(missing_docs)]
pub stateRootProof:
<BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub proof: <BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::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,
<BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
<BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<verifyStaleBalanceCall> for UnderlyingRustTuple<'_> {
fn from(value: verifyStaleBalanceCall) -> Self {
(value.beaconTimestamp, value.stateRootProof, value.proof)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<verifyStaleBalanceReturn> for UnderlyingRustTuple<'_> {
fn from(value: verifyStaleBalanceReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyStaleBalanceReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl verifyStaleBalanceReturn {
fn _tokenize(
&self,
) -> <verifyStaleBalanceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = verifyStaleBalanceReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
&self.beaconTimestamp,
),
<BeaconChainProofs::StateRootProof as alloy_sol_types::SolType>::tokenize(
&self.stateRootProof,
),
<BeaconChainProofs::ValidatorProof as alloy_sol_types::SolType>::tokenize(
&self.proof,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
verifyStaleBalanceReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
pub beaconTimestamp: u64,
#[allow(missing_docs)]
pub stateRootProof:
<BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub validatorIndices:
alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U40>,
#[allow(missing_docs)]
pub validatorFieldsProofs: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
#[allow(missing_docs)]
pub validatorFields: alloy::sol_types::private::Vec<
alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
>,
}
///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::Uint<40>>,
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
u64,
<BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U40>,
alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
alloy::sol_types::private::Vec<
alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<verifyWithdrawalCredentialsCall> 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<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<verifyWithdrawalCredentialsReturn> for UnderlyingRustTuple<'_> {
fn from(value: verifyWithdrawalCredentialsReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyWithdrawalCredentialsReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl verifyWithdrawalCredentialsReturn {
fn _tokenize(
&self,
) -> <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[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::Uint<40>>,
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
>,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = verifyWithdrawalCredentialsReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<
64,
> as alloy_sol_types::SolType>::tokenize(&self.beaconTimestamp),
<BeaconChainProofs::StateRootProof as alloy_sol_types::SolType>::tokenize(
&self.stateRootProof,
),
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<40>,
> as alloy_sol_types::SolType>::tokenize(&self.validatorIndices),
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Bytes,
> as alloy_sol_types::SolType>::tokenize(
&self.validatorFieldsProofs,
),
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::FixedBytes<32>,
>,
> as alloy_sol_types::SolType>::tokenize(&self.validatorFields),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
verifyWithdrawalCredentialsReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `version()` and selector `0x54fd4d50`.
```solidity
function version() external view returns (string memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct versionCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`version()`](versionCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct versionReturn {
#[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;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<versionCall> for UnderlyingRustTuple<'_> {
fn from(value: versionCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<versionReturn> for UnderlyingRustTuple<'_> {
fn from(value: versionReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for versionCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::String;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "version()";
const SELECTOR: [u8; 4] = [84u8, 253u8, 77u8, 80u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: versionReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: versionReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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 {
#[allow(missing_docs)]
pub recipient: alloy::sol_types::private::Address,
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<withdrawRestakedBeaconChainETHCall> for UnderlyingRustTuple<'_> {
fn from(value: withdrawRestakedBeaconChainETHCall) -> Self {
(value.recipient, value.amountWei)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<withdrawRestakedBeaconChainETHReturn> for UnderlyingRustTuple<'_> {
fn from(value: withdrawRestakedBeaconChainETHReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for withdrawRestakedBeaconChainETHReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl withdrawRestakedBeaconChainETHReturn {
fn _tokenize(
&self,
) -> <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = withdrawRestakedBeaconChainETHReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.recipient,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.amountWei,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
withdrawRestakedBeaconChainETHReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**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;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///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 {
#[allow(missing_docs)]
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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<withdrawableRestakedExecutionLayerGweiCall> for UnderlyingRustTuple<'_> {
fn from(value: withdrawableRestakedExecutionLayerGweiCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> 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<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<withdrawableRestakedExecutionLayerGweiReturn>
for UnderlyingRustTuple<'_>
{
fn from(value: withdrawableRestakedExecutionLayerGweiReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
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> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = u64;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
type ReturnToken<'a> = <Self::ReturnTuple<'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: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: withdrawableRestakedExecutionLayerGweiReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: withdrawableRestakedExecutionLayerGweiReturn = r.into();
r._0
})
}
}
};
///Container for all the [`EigenPod`](self) function calls.
#[derive(serde::Serialize, serde::Deserialize)]
pub enum EigenPodCalls {
#[allow(missing_docs)]
GENESIS_TIME(GENESIS_TIMECall),
#[allow(missing_docs)]
activeValidatorCount(activeValidatorCountCall),
#[allow(missing_docs)]
checkpointBalanceExitedGwei(checkpointBalanceExitedGweiCall),
#[allow(missing_docs)]
currentCheckpoint(currentCheckpointCall),
#[allow(missing_docs)]
currentCheckpointTimestamp(currentCheckpointTimestampCall),
#[allow(missing_docs)]
eigenPodManager(eigenPodManagerCall),
#[allow(missing_docs)]
ethPOS(ethPOSCall),
#[allow(missing_docs)]
getParentBlockRoot(getParentBlockRootCall),
#[allow(missing_docs)]
initialize(initializeCall),
#[allow(missing_docs)]
lastCheckpointTimestamp(lastCheckpointTimestampCall),
#[allow(missing_docs)]
podOwner(podOwnerCall),
#[allow(missing_docs)]
proofSubmitter(proofSubmitterCall),
#[allow(missing_docs)]
recoverTokens(recoverTokensCall),
#[allow(missing_docs)]
setProofSubmitter(setProofSubmitterCall),
#[allow(missing_docs)]
stake(stakeCall),
#[allow(missing_docs)]
startCheckpoint(startCheckpointCall),
#[allow(missing_docs)]
validatorPubkeyHashToInfo(validatorPubkeyHashToInfoCall),
#[allow(missing_docs)]
validatorPubkeyToInfo(validatorPubkeyToInfoCall),
#[allow(missing_docs)]
validatorStatus_0(validatorStatus_0Call),
#[allow(missing_docs)]
validatorStatus_1(validatorStatus_1Call),
#[allow(missing_docs)]
verifyCheckpointProofs(verifyCheckpointProofsCall),
#[allow(missing_docs)]
verifyStaleBalance(verifyStaleBalanceCall),
#[allow(missing_docs)]
verifyWithdrawalCredentials(verifyWithdrawalCredentialsCall),
#[allow(missing_docs)]
version(versionCall),
#[allow(missing_docs)]
withdrawRestakedBeaconChainETH(withdrawRestakedBeaconChainETHCall),
#[allow(missing_docs)]
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],
[84u8, 253u8, 77u8, 80u8],
[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 = 26usize;
#[inline]
fn selector(&self) -> [u8; 4] {
match self {
Self::GENESIS_TIME(_) => {
<GENESIS_TIMECall as alloy_sol_types::SolCall>::SELECTOR
}
Self::activeValidatorCount(_) => {
<activeValidatorCountCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::checkpointBalanceExitedGwei(_) => {
<checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::currentCheckpoint(_) => {
<currentCheckpointCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::currentCheckpointTimestamp(_) => {
<currentCheckpointTimestampCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::eigenPodManager(_) => {
<eigenPodManagerCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::ethPOS(_) => <ethPOSCall as alloy_sol_types::SolCall>::SELECTOR,
Self::getParentBlockRoot(_) => {
<getParentBlockRootCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::initialize(_) => {
<initializeCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::lastCheckpointTimestamp(_) => {
<lastCheckpointTimestampCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::podOwner(_) => <podOwnerCall as alloy_sol_types::SolCall>::SELECTOR,
Self::proofSubmitter(_) => {
<proofSubmitterCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::recoverTokens(_) => {
<recoverTokensCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::setProofSubmitter(_) => {
<setProofSubmitterCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::stake(_) => <stakeCall as alloy_sol_types::SolCall>::SELECTOR,
Self::startCheckpoint(_) => {
<startCheckpointCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::validatorPubkeyHashToInfo(_) => {
<validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::validatorPubkeyToInfo(_) => {
<validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::validatorStatus_0(_) => {
<validatorStatus_0Call as alloy_sol_types::SolCall>::SELECTOR
}
Self::validatorStatus_1(_) => {
<validatorStatus_1Call as alloy_sol_types::SolCall>::SELECTOR
}
Self::verifyCheckpointProofs(_) => {
<verifyCheckpointProofsCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::verifyStaleBalance(_) => {
<verifyStaleBalanceCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::verifyWithdrawalCredentials(_) => {
<verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::version(_) => <versionCall as alloy_sol_types::SolCall>::SELECTOR,
Self::withdrawRestakedBeaconChainETH(_) => {
<withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::withdrawableRestakedExecutionLayerGwei(_) => {
<withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::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(non_snake_case)]
fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<EigenPodCalls>] = &[
{
fn verifyStaleBalance(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::verifyStaleBalance)
}
verifyStaleBalance
},
{
fn podOwner(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<podOwnerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::podOwner)
}
podOwner
},
{
fn activeValidatorCount(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<activeValidatorCountCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::activeValidatorCount)
}
activeValidatorCount
},
{
fn withdrawableRestakedExecutionLayerGwei(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::withdrawableRestakedExecutionLayerGwei)
}
withdrawableRestakedExecutionLayerGwei
},
{
fn verifyWithdrawalCredentials(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::verifyWithdrawalCredentials)
}
verifyWithdrawalCredentials
},
{
fn currentCheckpointTimestamp(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::currentCheckpointTimestamp)
}
currentCheckpointTimestamp
},
{
fn eigenPodManager(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::eigenPodManager)
}
eigenPodManager
},
{
fn currentCheckpoint(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<currentCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::currentCheckpoint)
}
currentCheckpoint
},
{
fn checkpointBalanceExitedGwei(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::checkpointBalanceExitedGwei)
}
checkpointBalanceExitedGwei
},
{
fn version(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<versionCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::version)
}
version
},
{
fn proofSubmitter(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<proofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::proofSubmitter)
}
proofSubmitter
},
{
fn validatorStatus_0(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<validatorStatus_0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::validatorStatus_0)
}
validatorStatus_0
},
{
fn getParentBlockRoot(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<getParentBlockRootCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::getParentBlockRoot)
}
getParentBlockRoot
},
{
fn validatorPubkeyHashToInfo(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::validatorPubkeyHashToInfo)
}
validatorPubkeyHashToInfo
},
{
fn validatorStatus_1(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<validatorStatus_1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::validatorStatus_1)
}
validatorStatus_1
},
{
fn ethPOS(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<ethPOSCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::ethPOS)
}
ethPOS
},
{
fn startCheckpoint(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<startCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::startCheckpoint)
}
startCheckpoint
},
{
fn stake(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<stakeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::stake)
}
stake
},
{
fn validatorPubkeyToInfo(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::validatorPubkeyToInfo)
}
validatorPubkeyToInfo
},
{
fn withdrawRestakedBeaconChainETH(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::withdrawRestakedBeaconChainETH)
}
withdrawRestakedBeaconChainETH
},
{
fn initialize(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::initialize)
}
initialize
},
{
fn setProofSubmitter(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<setProofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::setProofSubmitter)
}
setProofSubmitter
},
{
fn recoverTokens(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<recoverTokensCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::recoverTokens)
}
recoverTokens
},
{
fn lastCheckpointTimestamp(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::lastCheckpointTimestamp)
}
lastCheckpointTimestamp
},
{
fn verifyCheckpointProofs(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(EigenPodCalls::verifyCheckpointProofs)
}
verifyCheckpointProofs
},
{
fn GENESIS_TIME(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(EigenPodCalls::GENESIS_TIME)
}
GENESIS_TIME
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_SHIMS[idx](data)
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw_validate(
selector: [u8; 4],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
static DECODE_VALIDATE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<EigenPodCalls>] =
&[
{
fn verifyStaleBalance(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::verifyStaleBalance)
}
verifyStaleBalance
},
{
fn podOwner(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<podOwnerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::podOwner)
}
podOwner
},
{
fn activeValidatorCount(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<activeValidatorCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::activeValidatorCount)
}
activeValidatorCount
},
{
fn withdrawableRestakedExecutionLayerGwei(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::withdrawableRestakedExecutionLayerGwei)
}
withdrawableRestakedExecutionLayerGwei
},
{
fn verifyWithdrawalCredentials(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::verifyWithdrawalCredentials)
}
verifyWithdrawalCredentials
},
{
fn currentCheckpointTimestamp(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::currentCheckpointTimestamp)
}
currentCheckpointTimestamp
},
{
fn eigenPodManager(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::eigenPodManager)
}
eigenPodManager
},
{
fn currentCheckpoint(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<currentCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::currentCheckpoint)
}
currentCheckpoint
},
{
fn checkpointBalanceExitedGwei(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::checkpointBalanceExitedGwei)
}
checkpointBalanceExitedGwei
},
{
fn version(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<versionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(EigenPodCalls::version)
}
version
},
{
fn proofSubmitter(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<proofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::proofSubmitter)
}
proofSubmitter
},
{
fn validatorStatus_0(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<validatorStatus_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::validatorStatus_0)
}
validatorStatus_0
},
{
fn getParentBlockRoot(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<getParentBlockRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::getParentBlockRoot)
}
getParentBlockRoot
},
{
fn validatorPubkeyHashToInfo(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::validatorPubkeyHashToInfo)
}
validatorPubkeyHashToInfo
},
{
fn validatorStatus_1(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<validatorStatus_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::validatorStatus_1)
}
validatorStatus_1
},
{
fn ethPOS(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<ethPOSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(EigenPodCalls::ethPOS)
}
ethPOS
},
{
fn startCheckpoint(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<startCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::startCheckpoint)
}
startCheckpoint
},
{
fn stake(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<stakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(EigenPodCalls::stake)
}
stake
},
{
fn validatorPubkeyToInfo(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::validatorPubkeyToInfo)
}
validatorPubkeyToInfo
},
{
fn withdrawRestakedBeaconChainETH(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::withdrawRestakedBeaconChainETH)
}
withdrawRestakedBeaconChainETH
},
{
fn initialize(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::initialize)
}
initialize
},
{
fn setProofSubmitter(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<setProofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::setProofSubmitter)
}
setProofSubmitter
},
{
fn recoverTokens(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<recoverTokensCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::recoverTokens)
}
recoverTokens
},
{
fn lastCheckpointTimestamp(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::lastCheckpointTimestamp)
}
lastCheckpointTimestamp
},
{
fn verifyCheckpointProofs(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodCalls> {
<verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::verifyCheckpointProofs)
}
verifyCheckpointProofs
},
{
fn GENESIS_TIME(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
<GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(EigenPodCalls::GENESIS_TIME)
}
GENESIS_TIME
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_VALIDATE_SHIMS[idx](data)
}
#[inline]
fn abi_encoded_size(&self) -> usize {
match self {
Self::GENESIS_TIME(inner) => {
<GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::activeValidatorCount(inner) => {
<activeValidatorCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::checkpointBalanceExitedGwei(inner) => {
<checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::currentCheckpoint(inner) => {
<currentCheckpointCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::currentCheckpointTimestamp(inner) => {
<currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::eigenPodManager(inner) => {
<eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::ethPOS(inner) => {
<ethPOSCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::getParentBlockRoot(inner) => {
<getParentBlockRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::initialize(inner) => {
<initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::lastCheckpointTimestamp(inner) => {
<lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::podOwner(inner) => {
<podOwnerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::proofSubmitter(inner) => {
<proofSubmitterCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::recoverTokens(inner) => {
<recoverTokensCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::setProofSubmitter(inner) => {
<setProofSubmitterCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::stake(inner) => {
<stakeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::startCheckpoint(inner) => {
<startCheckpointCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::validatorPubkeyHashToInfo(inner) => {
<validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::validatorPubkeyToInfo(inner) => {
<validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::validatorStatus_0(inner) => {
<validatorStatus_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::validatorStatus_1(inner) => {
<validatorStatus_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::verifyCheckpointProofs(inner) => {
<verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::verifyStaleBalance(inner) => {
<verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::verifyWithdrawalCredentials(inner) => {
<verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::version(inner) => {
<versionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::withdrawRestakedBeaconChainETH(inner) => {
<withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::withdrawableRestakedExecutionLayerGwei(inner) => {
<withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
}
}
#[inline]
fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
match self {
Self::GENESIS_TIME(inner) => {
<GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::activeValidatorCount(inner) => {
<activeValidatorCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::checkpointBalanceExitedGwei(inner) => {
<checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::currentCheckpoint(inner) => {
<currentCheckpointCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::currentCheckpointTimestamp(inner) => {
<currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::eigenPodManager(inner) => {
<eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::ethPOS(inner) => {
<ethPOSCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
}
Self::getParentBlockRoot(inner) => {
<getParentBlockRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::initialize(inner) => {
<initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::lastCheckpointTimestamp(inner) => {
<lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::podOwner(inner) => {
<podOwnerCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::proofSubmitter(inner) => {
<proofSubmitterCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::recoverTokens(inner) => {
<recoverTokensCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::setProofSubmitter(inner) => {
<setProofSubmitterCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::stake(inner) => {
<stakeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
}
Self::startCheckpoint(inner) => {
<startCheckpointCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::validatorPubkeyHashToInfo(inner) => {
<validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::validatorPubkeyToInfo(inner) => {
<validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::validatorStatus_0(inner) => {
<validatorStatus_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::validatorStatus_1(inner) => {
<validatorStatus_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::verifyCheckpointProofs(inner) => {
<verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::verifyStaleBalance(inner) => {
<verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::verifyWithdrawalCredentials(inner) => {
<verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::version(inner) => {
<versionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
}
Self::withdrawRestakedBeaconChainETH(inner) => {
<withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::withdrawableRestakedExecutionLayerGwei(inner) => {
<withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
}
}
}
///Container for all the [`EigenPod`](self) custom errors.
#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
pub enum EigenPodErrors {
#[allow(missing_docs)]
BeaconTimestampTooFarInPast(BeaconTimestampTooFarInPast),
#[allow(missing_docs)]
CannotCheckpointTwiceInSingleBlock(CannotCheckpointTwiceInSingleBlock),
#[allow(missing_docs)]
CheckpointAlreadyActive(CheckpointAlreadyActive),
#[allow(missing_docs)]
CredentialsAlreadyVerified(CredentialsAlreadyVerified),
#[allow(missing_docs)]
CurrentlyPaused(CurrentlyPaused),
#[allow(missing_docs)]
InputAddressZero(InputAddressZero),
#[allow(missing_docs)]
InputArrayLengthMismatch(InputArrayLengthMismatch),
#[allow(missing_docs)]
InsufficientWithdrawableBalance(InsufficientWithdrawableBalance),
#[allow(missing_docs)]
InvalidEIP4788Response(InvalidEIP4788Response),
#[allow(missing_docs)]
InvalidProof(InvalidProof),
#[allow(missing_docs)]
InvalidProofLength(InvalidProofLength),
#[allow(missing_docs)]
InvalidPubKeyLength(InvalidPubKeyLength),
#[allow(missing_docs)]
InvalidShortString(InvalidShortString),
#[allow(missing_docs)]
InvalidValidatorFieldsLength(InvalidValidatorFieldsLength),
#[allow(missing_docs)]
MsgValueNot32ETH(MsgValueNot32ETH),
#[allow(missing_docs)]
NoActiveCheckpoint(NoActiveCheckpoint),
#[allow(missing_docs)]
NoBalanceToCheckpoint(NoBalanceToCheckpoint),
#[allow(missing_docs)]
OnlyEigenPodManager(OnlyEigenPodManager),
#[allow(missing_docs)]
OnlyEigenPodOwner(OnlyEigenPodOwner),
#[allow(missing_docs)]
OnlyEigenPodOwnerOrProofSubmitter(OnlyEigenPodOwnerOrProofSubmitter),
#[allow(missing_docs)]
StringTooLong(StringTooLong),
#[allow(missing_docs)]
TimestampOutOfRange(TimestampOutOfRange),
#[allow(missing_docs)]
ValidatorInactiveOnBeaconChain(ValidatorInactiveOnBeaconChain),
#[allow(missing_docs)]
ValidatorIsExitingBeaconChain(ValidatorIsExitingBeaconChain),
#[allow(missing_docs)]
ValidatorNotActiveInPod(ValidatorNotActiveInPod),
#[allow(missing_docs)]
ValidatorNotSlashedOnBeaconChain(ValidatorNotSlashedOnBeaconChain),
#[allow(missing_docs)]
WithdrawalCredentialsNotForEigenPod(WithdrawalCredentialsNotForEigenPod),
}
#[automatically_derived]
impl EigenPodErrors {
/// All the selectors of this enum.
///
/// Note that the selectors might not be in the same 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, 189u8, 227u8, 57u8],
[11u8, 27u8, 213u8, 28u8],
[26u8, 84u8, 79u8, 73u8],
[32u8, 5u8, 145u8, 189u8],
[36u8, 180u8, 181u8, 152u8],
[46u8, 173u8, 230u8, 55u8],
[48u8, 90u8, 39u8, 169u8],
[53u8, 224u8, 158u8, 157u8],
[55u8, 224u8, 127u8, 253u8],
[66u8, 122u8, 119u8, 121u8],
[67u8, 113u8, 74u8, 253u8],
[77u8, 197u8, 246u8, 164u8],
[85u8, 138u8, 208u8, 163u8],
[101u8, 96u8, 141u8, 180u8],
[103u8, 219u8, 91u8, 139u8],
[110u8, 229u8, 186u8, 166u8],
[115u8, 99u8, 33u8, 118u8],
[132u8, 10u8, 72u8, 213u8],
[159u8, 16u8, 100u8, 114u8],
[176u8, 231u8, 47u8, 104u8],
[179u8, 81u8, 43u8, 12u8],
[190u8, 155u8, 195u8, 0u8],
[200u8, 78u8, 153u8, 132u8],
[203u8, 122u8, 165u8, 100u8],
[212u8, 158u8, 25u8, 167u8],
[227u8, 62u8, 110u8, 6u8],
[242u8, 137u8, 204u8, 218u8],
];
}
#[automatically_derived]
impl alloy_sol_types::SolInterface for EigenPodErrors {
const NAME: &'static str = "EigenPodErrors";
const MIN_DATA_LENGTH: usize = 0usize;
const COUNT: usize = 27usize;
#[inline]
fn selector(&self) -> [u8; 4] {
match self {
Self::BeaconTimestampTooFarInPast(_) => {
<BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::SELECTOR
}
Self::CannotCheckpointTwiceInSingleBlock(_) => {
<CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::SELECTOR
}
Self::CheckpointAlreadyActive(_) => {
<CheckpointAlreadyActive as alloy_sol_types::SolError>::SELECTOR
}
Self::CredentialsAlreadyVerified(_) => {
<CredentialsAlreadyVerified as alloy_sol_types::SolError>::SELECTOR
}
Self::CurrentlyPaused(_) => {
<CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
}
Self::InputAddressZero(_) => {
<InputAddressZero as alloy_sol_types::SolError>::SELECTOR
}
Self::InputArrayLengthMismatch(_) => {
<InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
}
Self::InsufficientWithdrawableBalance(_) => {
<InsufficientWithdrawableBalance as alloy_sol_types::SolError>::SELECTOR
}
Self::InvalidEIP4788Response(_) => {
<InvalidEIP4788Response as alloy_sol_types::SolError>::SELECTOR
}
Self::InvalidProof(_) => <InvalidProof as alloy_sol_types::SolError>::SELECTOR,
Self::InvalidProofLength(_) => {
<InvalidProofLength as alloy_sol_types::SolError>::SELECTOR
}
Self::InvalidPubKeyLength(_) => {
<InvalidPubKeyLength as alloy_sol_types::SolError>::SELECTOR
}
Self::InvalidShortString(_) => {
<InvalidShortString as alloy_sol_types::SolError>::SELECTOR
}
Self::InvalidValidatorFieldsLength(_) => {
<InvalidValidatorFieldsLength as alloy_sol_types::SolError>::SELECTOR
}
Self::MsgValueNot32ETH(_) => {
<MsgValueNot32ETH as alloy_sol_types::SolError>::SELECTOR
}
Self::NoActiveCheckpoint(_) => {
<NoActiveCheckpoint as alloy_sol_types::SolError>::SELECTOR
}
Self::NoBalanceToCheckpoint(_) => {
<NoBalanceToCheckpoint as alloy_sol_types::SolError>::SELECTOR
}
Self::OnlyEigenPodManager(_) => {
<OnlyEigenPodManager as alloy_sol_types::SolError>::SELECTOR
}
Self::OnlyEigenPodOwner(_) => {
<OnlyEigenPodOwner as alloy_sol_types::SolError>::SELECTOR
}
Self::OnlyEigenPodOwnerOrProofSubmitter(_) => {
<OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::SELECTOR
}
Self::StringTooLong(_) => <StringTooLong as alloy_sol_types::SolError>::SELECTOR,
Self::TimestampOutOfRange(_) => {
<TimestampOutOfRange as alloy_sol_types::SolError>::SELECTOR
}
Self::ValidatorInactiveOnBeaconChain(_) => {
<ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::SELECTOR
}
Self::ValidatorIsExitingBeaconChain(_) => {
<ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::SELECTOR
}
Self::ValidatorNotActiveInPod(_) => {
<ValidatorNotActiveInPod as alloy_sol_types::SolError>::SELECTOR
}
Self::ValidatorNotSlashedOnBeaconChain(_) => {
<ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::SELECTOR
}
Self::WithdrawalCredentialsNotForEigenPod(_) => {
<WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::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(non_snake_case)]
fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<EigenPodErrors>] = &[
{
fn InvalidProof(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::InvalidProof)
}
InvalidProof
},
{
fn InsufficientWithdrawableBalance(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::InsufficientWithdrawableBalance)
}
InsufficientWithdrawableBalance
},
{
fn NoActiveCheckpoint(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<NoActiveCheckpoint as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::NoActiveCheckpoint)
}
NoActiveCheckpoint
},
{
fn InvalidValidatorFieldsLength(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::InvalidValidatorFieldsLength)
}
InvalidValidatorFieldsLength
},
{
fn MsgValueNot32ETH(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<MsgValueNot32ETH as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::MsgValueNot32ETH)
}
MsgValueNot32ETH
},
{
fn ValidatorIsExitingBeaconChain(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::ValidatorIsExitingBeaconChain)
}
ValidatorIsExitingBeaconChain
},
{
fn StringTooLong(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<StringTooLong as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::StringTooLong)
}
StringTooLong
},
{
fn CredentialsAlreadyVerified(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::CredentialsAlreadyVerified)
}
CredentialsAlreadyVerified
},
{
fn BeaconTimestampTooFarInPast(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::BeaconTimestampTooFarInPast)
}
BeaconTimestampTooFarInPast
},
{
fn OnlyEigenPodOwnerOrProofSubmitter(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::OnlyEigenPodOwnerOrProofSubmitter)
}
OnlyEigenPodOwnerOrProofSubmitter
},
{
fn InputArrayLengthMismatch(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::InputArrayLengthMismatch)
}
InputArrayLengthMismatch
},
{
fn InvalidProofLength(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidProofLength as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::InvalidProofLength)
}
InvalidProofLength
},
{
fn InvalidEIP4788Response(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidEIP4788Response as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::InvalidEIP4788Response)
}
InvalidEIP4788Response
},
{
fn ValidatorInactiveOnBeaconChain(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::ValidatorInactiveOnBeaconChain)
}
ValidatorInactiveOnBeaconChain
},
{
fn CannotCheckpointTwiceInSingleBlock(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::CannotCheckpointTwiceInSingleBlock)
}
CannotCheckpointTwiceInSingleBlock
},
{
fn WithdrawalCredentialsNotForEigenPod(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::WithdrawalCredentialsNotForEigenPod)
}
WithdrawalCredentialsNotForEigenPod
},
{
fn InputAddressZero(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::InputAddressZero)
}
InputAddressZero
},
{
fn CurrentlyPaused(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::CurrentlyPaused)
}
CurrentlyPaused
},
{
fn InvalidPubKeyLength(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidPubKeyLength as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::InvalidPubKeyLength)
}
InvalidPubKeyLength
},
{
fn ValidatorNotSlashedOnBeaconChain(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(EigenPodErrors::ValidatorNotSlashedOnBeaconChain)
}
ValidatorNotSlashedOnBeaconChain
},
{
fn InvalidShortString(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::InvalidShortString)
}
InvalidShortString
},
{
fn CheckpointAlreadyActive(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::CheckpointAlreadyActive)
}
CheckpointAlreadyActive
},
{
fn OnlyEigenPodManager(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<OnlyEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::OnlyEigenPodManager)
}
OnlyEigenPodManager
},
{
fn NoBalanceToCheckpoint(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::NoBalanceToCheckpoint)
}
NoBalanceToCheckpoint
},
{
fn ValidatorNotActiveInPod(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::ValidatorNotActiveInPod)
}
ValidatorNotActiveInPod
},
{
fn OnlyEigenPodOwner(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::OnlyEigenPodOwner)
}
OnlyEigenPodOwner
},
{
fn TimestampOutOfRange(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<TimestampOutOfRange as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(EigenPodErrors::TimestampOutOfRange)
}
TimestampOutOfRange
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_SHIMS[idx](data)
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw_validate(
selector: [u8; 4],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
static DECODE_VALIDATE_SHIMS: &[fn(
&[u8],
)
-> alloy_sol_types::Result<EigenPodErrors>] = &[
{
fn InvalidProof(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(data)
.map(EigenPodErrors::InvalidProof)
}
InvalidProof
},
{
fn InsufficientWithdrawableBalance(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::InsufficientWithdrawableBalance)
}
InsufficientWithdrawableBalance
},
{
fn NoActiveCheckpoint(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<NoActiveCheckpoint as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::NoActiveCheckpoint)
}
NoActiveCheckpoint
},
{
fn InvalidValidatorFieldsLength(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::InvalidValidatorFieldsLength)
}
InvalidValidatorFieldsLength
},
{
fn MsgValueNot32ETH(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<MsgValueNot32ETH as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::MsgValueNot32ETH)
}
MsgValueNot32ETH
},
{
fn ValidatorIsExitingBeaconChain(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::ValidatorIsExitingBeaconChain)
}
ValidatorIsExitingBeaconChain
},
{
fn StringTooLong(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<StringTooLong as alloy_sol_types::SolError>::abi_decode_raw_validate(data)
.map(EigenPodErrors::StringTooLong)
}
StringTooLong
},
{
fn CredentialsAlreadyVerified(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::CredentialsAlreadyVerified)
}
CredentialsAlreadyVerified
},
{
fn BeaconTimestampTooFarInPast(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::BeaconTimestampTooFarInPast)
}
BeaconTimestampTooFarInPast
},
{
fn OnlyEigenPodOwnerOrProofSubmitter(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::OnlyEigenPodOwnerOrProofSubmitter)
}
OnlyEigenPodOwnerOrProofSubmitter
},
{
fn InputArrayLengthMismatch(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::InputArrayLengthMismatch)
}
InputArrayLengthMismatch
},
{
fn InvalidProofLength(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidProofLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::InvalidProofLength)
}
InvalidProofLength
},
{
fn InvalidEIP4788Response(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidEIP4788Response as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::InvalidEIP4788Response)
}
InvalidEIP4788Response
},
{
fn ValidatorInactiveOnBeaconChain(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::ValidatorInactiveOnBeaconChain)
}
ValidatorInactiveOnBeaconChain
},
{
fn CannotCheckpointTwiceInSingleBlock(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::CannotCheckpointTwiceInSingleBlock)
}
CannotCheckpointTwiceInSingleBlock
},
{
fn WithdrawalCredentialsNotForEigenPod(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::WithdrawalCredentialsNotForEigenPod)
}
WithdrawalCredentialsNotForEigenPod
},
{
fn InputAddressZero(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::InputAddressZero)
}
InputAddressZero
},
{
fn CurrentlyPaused(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::CurrentlyPaused)
}
CurrentlyPaused
},
{
fn InvalidPubKeyLength(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidPubKeyLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::InvalidPubKeyLength)
}
InvalidPubKeyLength
},
{
fn ValidatorNotSlashedOnBeaconChain(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::ValidatorNotSlashedOnBeaconChain)
}
ValidatorNotSlashedOnBeaconChain
},
{
fn InvalidShortString(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::InvalidShortString)
}
InvalidShortString
},
{
fn CheckpointAlreadyActive(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::CheckpointAlreadyActive)
}
CheckpointAlreadyActive
},
{
fn OnlyEigenPodManager(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<OnlyEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::OnlyEigenPodManager)
}
OnlyEigenPodManager
},
{
fn NoBalanceToCheckpoint(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::NoBalanceToCheckpoint)
}
NoBalanceToCheckpoint
},
{
fn ValidatorNotActiveInPod(
data: &[u8],
) -> alloy_sol_types::Result<EigenPodErrors> {
<ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::ValidatorNotActiveInPod)
}
ValidatorNotActiveInPod
},
{
fn OnlyEigenPodOwner(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::OnlyEigenPodOwner)
}
OnlyEigenPodOwner
},
{
fn TimestampOutOfRange(data: &[u8]) -> alloy_sol_types::Result<EigenPodErrors> {
<TimestampOutOfRange as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(EigenPodErrors::TimestampOutOfRange)
}
TimestampOutOfRange
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_VALIDATE_SHIMS[idx](data)
}
#[inline]
fn abi_encoded_size(&self) -> usize {
match self {
Self::BeaconTimestampTooFarInPast(inner) => {
<BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::CannotCheckpointTwiceInSingleBlock(inner) => {
<CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::CheckpointAlreadyActive(inner) => {
<CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::CredentialsAlreadyVerified(inner) => {
<CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::CurrentlyPaused(inner) => {
<CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::InputAddressZero(inner) => {
<InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::InputArrayLengthMismatch(inner) => {
<InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::InsufficientWithdrawableBalance(inner) => {
<InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::InvalidEIP4788Response(inner) => {
<InvalidEIP4788Response as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::InvalidProof(inner) => {
<InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::InvalidProofLength(inner) => {
<InvalidProofLength as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::InvalidPubKeyLength(inner) => {
<InvalidPubKeyLength as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::InvalidShortString(inner) => {
<InvalidShortString as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::InvalidValidatorFieldsLength(inner) => {
<InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::MsgValueNot32ETH(inner) => {
<MsgValueNot32ETH as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::NoActiveCheckpoint(inner) => {
<NoActiveCheckpoint as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::NoBalanceToCheckpoint(inner) => {
<NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::OnlyEigenPodManager(inner) => {
<OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::OnlyEigenPodOwner(inner) => {
<OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::OnlyEigenPodOwnerOrProofSubmitter(inner) => {
<OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::StringTooLong(inner) => {
<StringTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::TimestampOutOfRange(inner) => {
<TimestampOutOfRange as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::ValidatorInactiveOnBeaconChain(inner) => {
<ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::ValidatorIsExitingBeaconChain(inner) => {
<ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::ValidatorNotActiveInPod(inner) => {
<ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::ValidatorNotSlashedOnBeaconChain(inner) => {
<ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::WithdrawalCredentialsNotForEigenPod(inner) => {
<WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
}
}
#[inline]
fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
match self {
Self::BeaconTimestampTooFarInPast(inner) => {
<BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::CannotCheckpointTwiceInSingleBlock(inner) => {
<CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::CheckpointAlreadyActive(inner) => {
<CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::CredentialsAlreadyVerified(inner) => {
<CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::CurrentlyPaused(inner) => {
<CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InputAddressZero(inner) => {
<InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InputArrayLengthMismatch(inner) => {
<InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InsufficientWithdrawableBalance(inner) => {
<InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InvalidEIP4788Response(inner) => {
<InvalidEIP4788Response as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InvalidProof(inner) => {
<InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InvalidProofLength(inner) => {
<InvalidProofLength as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InvalidPubKeyLength(inner) => {
<InvalidPubKeyLength as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InvalidShortString(inner) => {
<InvalidShortString as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::InvalidValidatorFieldsLength(inner) => {
<InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::MsgValueNot32ETH(inner) => {
<MsgValueNot32ETH as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::NoActiveCheckpoint(inner) => {
<NoActiveCheckpoint as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::NoBalanceToCheckpoint(inner) => {
<NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::OnlyEigenPodManager(inner) => {
<OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::OnlyEigenPodOwner(inner) => {
<OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::OnlyEigenPodOwnerOrProofSubmitter(inner) => {
<OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::StringTooLong(inner) => {
<StringTooLong as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::TimestampOutOfRange(inner) => {
<TimestampOutOfRange as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::ValidatorInactiveOnBeaconChain(inner) => {
<ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::ValidatorIsExitingBeaconChain(inner) => {
<ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::ValidatorNotActiveInPod(inner) => {
<ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::ValidatorNotSlashedOnBeaconChain(inner) => {
<ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
Self::WithdrawalCredentialsNotForEigenPod(inner) => {
<WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_encode_raw(
inner,
out,
)
}
}
}
}
///Container for all the [`EigenPod`](self) events.
#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
pub enum EigenPodEvents {
#[allow(missing_docs)]
CheckpointCreated(CheckpointCreated),
#[allow(missing_docs)]
CheckpointFinalized(CheckpointFinalized),
#[allow(missing_docs)]
EigenPodStaked(EigenPodStaked),
#[allow(missing_docs)]
Initialized(Initialized),
#[allow(missing_docs)]
NonBeaconChainETHReceived(NonBeaconChainETHReceived),
#[allow(missing_docs)]
ProofSubmitterUpdated(ProofSubmitterUpdated),
#[allow(missing_docs)]
RestakedBeaconChainETHWithdrawn(RestakedBeaconChainETHWithdrawn),
#[allow(missing_docs)]
ValidatorBalanceUpdated(ValidatorBalanceUpdated),
#[allow(missing_docs)]
ValidatorCheckpointed(ValidatorCheckpointed),
#[allow(missing_docs)]
ValidatorRestaked(ValidatorRestaked),
#[allow(missing_docs)]
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],
) -> alloy_sol_types::Result<Self> {
match topics.first().copied() {
Some(<CheckpointCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<CheckpointCreated as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
.map(Self::CheckpointCreated)
}
Some(<CheckpointFinalized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<CheckpointFinalized as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
.map(Self::CheckpointFinalized)
}
Some(<EigenPodStaked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<EigenPodStaked as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
.map(Self::EigenPodStaked)
}
Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<Initialized as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
.map(Self::Initialized)
}
Some(<NonBeaconChainETHReceived as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<NonBeaconChainETHReceived as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::NonBeaconChainETHReceived)
}
Some(<ProofSubmitterUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<ProofSubmitterUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::ProofSubmitterUpdated)
}
Some(
<RestakedBeaconChainETHWithdrawn as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
) => {
<RestakedBeaconChainETHWithdrawn as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::RestakedBeaconChainETHWithdrawn)
}
Some(<ValidatorBalanceUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<ValidatorBalanceUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::ValidatorBalanceUpdated)
}
Some(<ValidatorCheckpointed as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<ValidatorCheckpointed as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::ValidatorCheckpointed)
}
Some(<ValidatorRestaked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<ValidatorRestaked as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
.map(Self::ValidatorRestaked)
}
Some(<ValidatorWithdrawn as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<ValidatorWithdrawn as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
.map(Self::ValidatorWithdrawn)
}
_ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
name: <Self as alloy_sol_types::SolEventInterface>::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<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> EigenPodInstance<P, N> {
EigenPodInstance::<P, N>::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<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>(
provider: P,
_ethPOS: alloy::sol_types::private::Address,
_eigenPodManager: alloy::sol_types::private::Address,
_GENESIS_TIME: u64,
_version: alloy::sol_types::private::String,
) -> impl ::core::future::Future<Output = alloy_contract::Result<EigenPodInstance<P, N>>> {
EigenPodInstance::<P, N>::deploy(
provider,
_ethPOS,
_eigenPodManager,
_GENESIS_TIME,
_version,
)
}
/**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
and constructor arguments, if any.
This is a simple wrapper around creating a `RawCallBuilder` with the data set to
the bytecode concatenated with the constructor's ABI-encoded arguments.*/
#[inline]
pub fn deploy_builder<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
provider: P,
_ethPOS: alloy::sol_types::private::Address,
_eigenPodManager: alloy::sol_types::private::Address,
_GENESIS_TIME: u64,
_version: alloy::sol_types::private::String,
) -> alloy_contract::RawCallBuilder<P, N> {
EigenPodInstance::<P, N>::deploy_builder(
provider,
_ethPOS,
_eigenPodManager,
_GENESIS_TIME,
_version,
)
}
/**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<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for EigenPodInstance<P, N> {
#[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<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
EigenPodInstance<P, N>
{
/**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: ::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,
_version: alloy::sol_types::private::String,
) -> alloy_contract::Result<EigenPodInstance<P, N>> {
let call_builder =
Self::deploy_builder(provider, _ethPOS, _eigenPodManager, _GENESIS_TIME, _version);
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,
_version: alloy::sol_types::private::String,
) -> alloy_contract::RawCallBuilder<P, N> {
alloy_contract::RawCallBuilder::new_raw_deploy(
provider,
[
&BYTECODE[..],
&alloy_sol_types::SolConstructor::abi_encode(&constructorCall {
_ethPOS,
_eigenPodManager,
_GENESIS_TIME,
_version,
})[..],
]
.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<P: ::core::clone::Clone, N> EigenPodInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> EigenPodInstance<P, N> {
EigenPodInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
EigenPodInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
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<&P, GENESIS_TIMECall, N> {
self.call_builder(&GENESIS_TIMECall)
}
///Creates a new call builder for the [`activeValidatorCount`] function.
pub fn activeValidatorCount(
&self,
) -> alloy_contract::SolCallBuilder<&P, activeValidatorCountCall, N> {
self.call_builder(&activeValidatorCountCall)
}
///Creates a new call builder for the [`checkpointBalanceExitedGwei`] function.
pub fn checkpointBalanceExitedGwei(
&self,
_0: u64,
) -> alloy_contract::SolCallBuilder<&P, checkpointBalanceExitedGweiCall, N> {
self.call_builder(&checkpointBalanceExitedGweiCall(_0))
}
///Creates a new call builder for the [`currentCheckpoint`] function.
pub fn currentCheckpoint(
&self,
) -> alloy_contract::SolCallBuilder<&P, currentCheckpointCall, N> {
self.call_builder(¤tCheckpointCall)
}
///Creates a new call builder for the [`currentCheckpointTimestamp`] function.
pub fn currentCheckpointTimestamp(
&self,
) -> alloy_contract::SolCallBuilder<&P, currentCheckpointTimestampCall, N> {
self.call_builder(¤tCheckpointTimestampCall)
}
///Creates a new call builder for the [`eigenPodManager`] function.
pub fn eigenPodManager(
&self,
) -> alloy_contract::SolCallBuilder<&P, eigenPodManagerCall, N> {
self.call_builder(&eigenPodManagerCall)
}
///Creates a new call builder for the [`ethPOS`] function.
pub fn ethPOS(&self) -> alloy_contract::SolCallBuilder<&P, ethPOSCall, N> {
self.call_builder(ðPOSCall)
}
///Creates a new call builder for the [`getParentBlockRoot`] function.
pub fn getParentBlockRoot(
&self,
timestamp: u64,
) -> alloy_contract::SolCallBuilder<&P, getParentBlockRootCall, N> {
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<&P, initializeCall, N> {
self.call_builder(&initializeCall { _podOwner })
}
///Creates a new call builder for the [`lastCheckpointTimestamp`] function.
pub fn lastCheckpointTimestamp(
&self,
) -> alloy_contract::SolCallBuilder<&P, lastCheckpointTimestampCall, N> {
self.call_builder(&lastCheckpointTimestampCall)
}
///Creates a new call builder for the [`podOwner`] function.
pub fn podOwner(&self) -> alloy_contract::SolCallBuilder<&P, podOwnerCall, N> {
self.call_builder(&podOwnerCall)
}
///Creates a new call builder for the [`proofSubmitter`] function.
pub fn proofSubmitter(&self) -> alloy_contract::SolCallBuilder<&P, proofSubmitterCall, N> {
self.call_builder(&proofSubmitterCall)
}
///Creates a new call builder for the [`recoverTokens`] function.
pub fn recoverTokens(
&self,
tokenList: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
amountsToWithdraw: alloy::sol_types::private::Vec<
alloy::sol_types::private::primitives::aliases::U256,
>,
recipient: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, recoverTokensCall, N> {
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<&P, setProofSubmitterCall, N> {
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<&P, stakeCall, N> {
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<&P, startCheckpointCall, N> {
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<&P, validatorPubkeyHashToInfoCall, N> {
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<&P, validatorPubkeyToInfoCall, N> {
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<&P, validatorStatus_0Call, N> {
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<&P, validatorStatus_1Call, N> {
self.call_builder(&validatorStatus_1Call { pubkeyHash })
}
///Creates a new call builder for the [`verifyCheckpointProofs`] function.
pub fn verifyCheckpointProofs(
&self,
balanceContainerProof: <BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
proofs: alloy::sol_types::private::Vec<
<BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::RustType,
>,
) -> alloy_contract::SolCallBuilder<&P, verifyCheckpointProofsCall, N> {
self.call_builder(&verifyCheckpointProofsCall {
balanceContainerProof,
proofs,
})
}
///Creates a new call builder for the [`verifyStaleBalance`] function.
pub fn verifyStaleBalance(
&self,
beaconTimestamp: u64,
stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
proof: <BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::RustType,
) -> alloy_contract::SolCallBuilder<&P, verifyStaleBalanceCall, N> {
self.call_builder(&verifyStaleBalanceCall {
beaconTimestamp,
stateRootProof,
proof,
})
}
///Creates a new call builder for the [`verifyWithdrawalCredentials`] function.
pub fn verifyWithdrawalCredentials(
&self,
beaconTimestamp: u64,
stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
validatorIndices: alloy::sol_types::private::Vec<
alloy::sol_types::private::primitives::aliases::U40,
>,
validatorFieldsProofs: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
validatorFields: alloy::sol_types::private::Vec<
alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
>,
) -> alloy_contract::SolCallBuilder<&P, verifyWithdrawalCredentialsCall, N> {
self.call_builder(&verifyWithdrawalCredentialsCall {
beaconTimestamp,
stateRootProof,
validatorIndices,
validatorFieldsProofs,
validatorFields,
})
}
///Creates a new call builder for the [`version`] function.
pub fn version(&self) -> alloy_contract::SolCallBuilder<&P, versionCall, N> {
self.call_builder(&versionCall)
}
///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<&P, withdrawRestakedBeaconChainETHCall, N> {
self.call_builder(&withdrawRestakedBeaconChainETHCall {
recipient,
amountWei,
})
}
///Creates a new call builder for the [`withdrawableRestakedExecutionLayerGwei`] function.
pub fn withdrawableRestakedExecutionLayerGwei(
&self,
) -> alloy_contract::SolCallBuilder<&P, withdrawableRestakedExecutionLayerGweiCall, N>
{
self.call_builder(&withdrawableRestakedExecutionLayerGweiCall)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
EigenPodInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
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<&P, CheckpointCreated, N> {
self.event_filter::<CheckpointCreated>()
}
///Creates a new event filter for the [`CheckpointFinalized`] event.
pub fn CheckpointFinalized_filter(
&self,
) -> alloy_contract::Event<&P, CheckpointFinalized, N> {
self.event_filter::<CheckpointFinalized>()
}
///Creates a new event filter for the [`EigenPodStaked`] event.
pub fn EigenPodStaked_filter(&self) -> alloy_contract::Event<&P, EigenPodStaked, N> {
self.event_filter::<EigenPodStaked>()
}
///Creates a new event filter for the [`Initialized`] event.
pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
self.event_filter::<Initialized>()
}
///Creates a new event filter for the [`NonBeaconChainETHReceived`] event.
pub fn NonBeaconChainETHReceived_filter(
&self,
) -> alloy_contract::Event<&P, NonBeaconChainETHReceived, N> {
self.event_filter::<NonBeaconChainETHReceived>()
}
///Creates a new event filter for the [`ProofSubmitterUpdated`] event.
pub fn ProofSubmitterUpdated_filter(
&self,
) -> alloy_contract::Event<&P, ProofSubmitterUpdated, N> {
self.event_filter::<ProofSubmitterUpdated>()
}
///Creates a new event filter for the [`RestakedBeaconChainETHWithdrawn`] event.
pub fn RestakedBeaconChainETHWithdrawn_filter(
&self,
) -> alloy_contract::Event<&P, RestakedBeaconChainETHWithdrawn, N> {
self.event_filter::<RestakedBeaconChainETHWithdrawn>()
}
///Creates a new event filter for the [`ValidatorBalanceUpdated`] event.
pub fn ValidatorBalanceUpdated_filter(
&self,
) -> alloy_contract::Event<&P, ValidatorBalanceUpdated, N> {
self.event_filter::<ValidatorBalanceUpdated>()
}
///Creates a new event filter for the [`ValidatorCheckpointed`] event.
pub fn ValidatorCheckpointed_filter(
&self,
) -> alloy_contract::Event<&P, ValidatorCheckpointed, N> {
self.event_filter::<ValidatorCheckpointed>()
}
///Creates a new event filter for the [`ValidatorRestaked`] event.
pub fn ValidatorRestaked_filter(&self) -> alloy_contract::Event<&P, ValidatorRestaked, N> {
self.event_filter::<ValidatorRestaked>()
}
///Creates a new event filter for the [`ValidatorWithdrawn`] event.
pub fn ValidatorWithdrawn_filter(
&self,
) -> alloy_contract::Event<&P, ValidatorWithdrawn, N> {
self.event_filter::<ValidatorWithdrawn>()
}
}
}