Skip to main content

hotshot_contract_adapter/bindings/
stake_table_v3.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    struct G1Point { BaseField x; BaseField y; }
8    struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    /**```solidity
168struct G1Point { BaseField x; BaseField y; }
169```*/
170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
171    #[derive(Clone)]
172    pub struct G1Point {
173        #[allow(missing_docs)]
174        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
175        #[allow(missing_docs)]
176        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
177    }
178    #[allow(
179        non_camel_case_types,
180        non_snake_case,
181        clippy::pub_underscore_fields,
182        clippy::style
183    )]
184    const _: () = {
185        use alloy::sol_types as alloy_sol_types;
186        #[doc(hidden)]
187        #[allow(dead_code)]
188        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
189        #[doc(hidden)]
190        type UnderlyingRustTuple<'a> = (
191            <BaseField as alloy::sol_types::SolType>::RustType,
192            <BaseField as alloy::sol_types::SolType>::RustType,
193        );
194        #[cfg(test)]
195        #[allow(dead_code, unreachable_patterns)]
196        fn _type_assertion(
197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
198        ) {
199            match _t {
200                alloy_sol_types::private::AssertTypeEq::<
201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
202                >(_) => {}
203            }
204        }
205        #[automatically_derived]
206        #[doc(hidden)]
207        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
208            fn from(value: G1Point) -> Self {
209                (value.x, value.y)
210            }
211        }
212        #[automatically_derived]
213        #[doc(hidden)]
214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
216                Self { x: tuple.0, y: tuple.1 }
217            }
218        }
219        #[automatically_derived]
220        impl alloy_sol_types::SolValue for G1Point {
221            type SolType = Self;
222        }
223        #[automatically_derived]
224        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
225            #[inline]
226            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
227                (
228                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
229                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
230                )
231            }
232            #[inline]
233            fn stv_abi_encoded_size(&self) -> usize {
234                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
235                    return size;
236                }
237                let tuple = <UnderlyingRustTuple<
238                    '_,
239                > as ::core::convert::From<Self>>::from(self.clone());
240                <UnderlyingSolTuple<
241                    '_,
242                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
243            }
244            #[inline]
245            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
246                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
247            }
248            #[inline]
249            fn stv_abi_encode_packed_to(
250                &self,
251                out: &mut alloy_sol_types::private::Vec<u8>,
252            ) {
253                let tuple = <UnderlyingRustTuple<
254                    '_,
255                > as ::core::convert::From<Self>>::from(self.clone());
256                <UnderlyingSolTuple<
257                    '_,
258                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
259            }
260            #[inline]
261            fn stv_abi_packed_encoded_size(&self) -> usize {
262                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
263                    return size;
264                }
265                let tuple = <UnderlyingRustTuple<
266                    '_,
267                > as ::core::convert::From<Self>>::from(self.clone());
268                <UnderlyingSolTuple<
269                    '_,
270                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
271            }
272        }
273        #[automatically_derived]
274        impl alloy_sol_types::SolType for G1Point {
275            type RustType = Self;
276            type Token<'a> = <UnderlyingSolTuple<
277                'a,
278            > as alloy_sol_types::SolType>::Token<'a>;
279            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
280            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
281                '_,
282            > as alloy_sol_types::SolType>::ENCODED_SIZE;
283            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
284                '_,
285            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
286            #[inline]
287            fn valid_token(token: &Self::Token<'_>) -> bool {
288                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
289            }
290            #[inline]
291            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
292                let tuple = <UnderlyingSolTuple<
293                    '_,
294                > as alloy_sol_types::SolType>::detokenize(token);
295                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
296            }
297        }
298        #[automatically_derived]
299        impl alloy_sol_types::SolStruct for G1Point {
300            const NAME: &'static str = "G1Point";
301            #[inline]
302            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
303                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
304            }
305            #[inline]
306            fn eip712_components() -> alloy_sol_types::private::Vec<
307                alloy_sol_types::private::Cow<'static, str>,
308            > {
309                alloy_sol_types::private::Vec::new()
310            }
311            #[inline]
312            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
313                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
314            }
315            #[inline]
316            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
317                [
318                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
319                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
320                ]
321                    .concat()
322            }
323        }
324        #[automatically_derived]
325        impl alloy_sol_types::EventTopic for G1Point {
326            #[inline]
327            fn topic_preimage_length(rust: &Self::RustType) -> usize {
328                0usize
329                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
330                        &rust.x,
331                    )
332                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
333                        &rust.y,
334                    )
335            }
336            #[inline]
337            fn encode_topic_preimage(
338                rust: &Self::RustType,
339                out: &mut alloy_sol_types::private::Vec<u8>,
340            ) {
341                out.reserve(
342                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
343                );
344                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
345                    &rust.x,
346                    out,
347                );
348                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
349                    &rust.y,
350                    out,
351                );
352            }
353            #[inline]
354            fn encode_topic(
355                rust: &Self::RustType,
356            ) -> alloy_sol_types::abi::token::WordToken {
357                let mut out = alloy_sol_types::private::Vec::new();
358                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
359                    rust,
360                    &mut out,
361                );
362                alloy_sol_types::abi::token::WordToken(
363                    alloy_sol_types::private::keccak256(out),
364                )
365            }
366        }
367    };
368    #[derive(serde::Serialize, serde::Deserialize)]
369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
370    /**```solidity
371struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
372```*/
373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
374    #[derive(Clone)]
375    pub struct G2Point {
376        #[allow(missing_docs)]
377        pub x0: <BaseField as alloy::sol_types::SolType>::RustType,
378        #[allow(missing_docs)]
379        pub x1: <BaseField as alloy::sol_types::SolType>::RustType,
380        #[allow(missing_docs)]
381        pub y0: <BaseField as alloy::sol_types::SolType>::RustType,
382        #[allow(missing_docs)]
383        pub y1: <BaseField as alloy::sol_types::SolType>::RustType,
384    }
385    #[allow(
386        non_camel_case_types,
387        non_snake_case,
388        clippy::pub_underscore_fields,
389        clippy::style
390    )]
391    const _: () = {
392        use alloy::sol_types as alloy_sol_types;
393        #[doc(hidden)]
394        #[allow(dead_code)]
395        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
396        #[doc(hidden)]
397        type UnderlyingRustTuple<'a> = (
398            <BaseField as alloy::sol_types::SolType>::RustType,
399            <BaseField as alloy::sol_types::SolType>::RustType,
400            <BaseField as alloy::sol_types::SolType>::RustType,
401            <BaseField as alloy::sol_types::SolType>::RustType,
402        );
403        #[cfg(test)]
404        #[allow(dead_code, unreachable_patterns)]
405        fn _type_assertion(
406            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
407        ) {
408            match _t {
409                alloy_sol_types::private::AssertTypeEq::<
410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
411                >(_) => {}
412            }
413        }
414        #[automatically_derived]
415        #[doc(hidden)]
416        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
417            fn from(value: G2Point) -> Self {
418                (value.x0, value.x1, value.y0, value.y1)
419            }
420        }
421        #[automatically_derived]
422        #[doc(hidden)]
423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
425                Self {
426                    x0: tuple.0,
427                    x1: tuple.1,
428                    y0: tuple.2,
429                    y1: tuple.3,
430                }
431            }
432        }
433        #[automatically_derived]
434        impl alloy_sol_types::SolValue for G2Point {
435            type SolType = Self;
436        }
437        #[automatically_derived]
438        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
439            #[inline]
440            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
441                (
442                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
443                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
444                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
445                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
446                )
447            }
448            #[inline]
449            fn stv_abi_encoded_size(&self) -> usize {
450                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
451                    return size;
452                }
453                let tuple = <UnderlyingRustTuple<
454                    '_,
455                > as ::core::convert::From<Self>>::from(self.clone());
456                <UnderlyingSolTuple<
457                    '_,
458                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
459            }
460            #[inline]
461            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
462                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
463            }
464            #[inline]
465            fn stv_abi_encode_packed_to(
466                &self,
467                out: &mut alloy_sol_types::private::Vec<u8>,
468            ) {
469                let tuple = <UnderlyingRustTuple<
470                    '_,
471                > as ::core::convert::From<Self>>::from(self.clone());
472                <UnderlyingSolTuple<
473                    '_,
474                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
475            }
476            #[inline]
477            fn stv_abi_packed_encoded_size(&self) -> usize {
478                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
479                    return size;
480                }
481                let tuple = <UnderlyingRustTuple<
482                    '_,
483                > as ::core::convert::From<Self>>::from(self.clone());
484                <UnderlyingSolTuple<
485                    '_,
486                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
487            }
488        }
489        #[automatically_derived]
490        impl alloy_sol_types::SolType for G2Point {
491            type RustType = Self;
492            type Token<'a> = <UnderlyingSolTuple<
493                'a,
494            > as alloy_sol_types::SolType>::Token<'a>;
495            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
496            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
497                '_,
498            > as alloy_sol_types::SolType>::ENCODED_SIZE;
499            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
500                '_,
501            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
502            #[inline]
503            fn valid_token(token: &Self::Token<'_>) -> bool {
504                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
505            }
506            #[inline]
507            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
508                let tuple = <UnderlyingSolTuple<
509                    '_,
510                > as alloy_sol_types::SolType>::detokenize(token);
511                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
512            }
513        }
514        #[automatically_derived]
515        impl alloy_sol_types::SolStruct for G2Point {
516            const NAME: &'static str = "G2Point";
517            #[inline]
518            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
519                alloy_sol_types::private::Cow::Borrowed(
520                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
521                )
522            }
523            #[inline]
524            fn eip712_components() -> alloy_sol_types::private::Vec<
525                alloy_sol_types::private::Cow<'static, str>,
526            > {
527                alloy_sol_types::private::Vec::new()
528            }
529            #[inline]
530            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
531                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
532            }
533            #[inline]
534            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
535                [
536                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
537                        .0,
538                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
539                        .0,
540                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
541                        .0,
542                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
543                ]
544                    .concat()
545            }
546        }
547        #[automatically_derived]
548        impl alloy_sol_types::EventTopic for G2Point {
549            #[inline]
550            fn topic_preimage_length(rust: &Self::RustType) -> usize {
551                0usize
552                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
553                        &rust.x0,
554                    )
555                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
556                        &rust.x1,
557                    )
558                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
559                        &rust.y0,
560                    )
561                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
562                        &rust.y1,
563                    )
564            }
565            #[inline]
566            fn encode_topic_preimage(
567                rust: &Self::RustType,
568                out: &mut alloy_sol_types::private::Vec<u8>,
569            ) {
570                out.reserve(
571                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
572                );
573                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
574                    &rust.x0,
575                    out,
576                );
577                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
578                    &rust.x1,
579                    out,
580                );
581                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
582                    &rust.y0,
583                    out,
584                );
585                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
586                    &rust.y1,
587                    out,
588                );
589            }
590            #[inline]
591            fn encode_topic(
592                rust: &Self::RustType,
593            ) -> alloy_sol_types::abi::token::WordToken {
594                let mut out = alloy_sol_types::private::Vec::new();
595                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
596                    rust,
597                    &mut out,
598                );
599                alloy_sol_types::abi::token::WordToken(
600                    alloy_sol_types::private::keccak256(out),
601                )
602            }
603        }
604    };
605    use alloy::contract as alloy_contract;
606    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
607
608See the [wrapper's documentation](`BN254Instance`) for more details.*/
609    #[inline]
610    pub const fn new<
611        P: alloy_contract::private::Provider<N>,
612        N: alloy_contract::private::Network,
613    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
614        BN254Instance::<P, N>::new(address, __provider)
615    }
616    /**A [`BN254`](self) instance.
617
618Contains type-safe methods for interacting with an on-chain instance of the
619[`BN254`](self) contract located at a given `address`, using a given
620provider `P`.
621
622If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
623documentation on how to provide it), the `deploy` and `deploy_builder` methods can
624be used to deploy a new instance of the contract.
625
626See the [module-level documentation](self) for all the available methods.*/
627    #[derive(Clone)]
628    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
629        address: alloy_sol_types::private::Address,
630        provider: P,
631        _network: ::core::marker::PhantomData<N>,
632    }
633    #[automatically_derived]
634    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
635        #[inline]
636        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
637            f.debug_tuple("BN254Instance").field(&self.address).finish()
638        }
639    }
640    /// Instantiation and getters/setters.
641    impl<
642        P: alloy_contract::private::Provider<N>,
643        N: alloy_contract::private::Network,
644    > BN254Instance<P, N> {
645        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
646
647See the [wrapper's documentation](`BN254Instance`) for more details.*/
648        #[inline]
649        pub const fn new(
650            address: alloy_sol_types::private::Address,
651            __provider: P,
652        ) -> Self {
653            Self {
654                address,
655                provider: __provider,
656                _network: ::core::marker::PhantomData,
657            }
658        }
659        /// Returns a reference to the address.
660        #[inline]
661        pub const fn address(&self) -> &alloy_sol_types::private::Address {
662            &self.address
663        }
664        /// Sets the address.
665        #[inline]
666        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
667            self.address = address;
668        }
669        /// Sets the address and returns `self`.
670        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
671            self.set_address(address);
672            self
673        }
674        /// Returns a reference to the provider.
675        #[inline]
676        pub const fn provider(&self) -> &P {
677            &self.provider
678        }
679    }
680    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
681        /// Clones the provider and returns a new instance with the cloned provider.
682        #[inline]
683        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
684            BN254Instance {
685                address: self.address,
686                provider: ::core::clone::Clone::clone(&self.provider),
687                _network: ::core::marker::PhantomData,
688            }
689        }
690    }
691    /// Function calls.
692    impl<
693        P: alloy_contract::private::Provider<N>,
694        N: alloy_contract::private::Network,
695    > BN254Instance<P, N> {
696        /// Creates a new call builder using this contract instance's provider and address.
697        ///
698        /// Note that the call can be any function call, not just those defined in this
699        /// contract. Prefer using the other methods for building type-safe contract calls.
700        pub fn call_builder<C: alloy_sol_types::SolCall>(
701            &self,
702            call: &C,
703        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
704            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
705        }
706    }
707    /// Event filters.
708    impl<
709        P: alloy_contract::private::Provider<N>,
710        N: alloy_contract::private::Network,
711    > BN254Instance<P, N> {
712        /// Creates a new event filter using this contract instance's provider and address.
713        ///
714        /// Note that the type can be any event, not just those defined in this contract.
715        /// Prefer using the other methods for building type-safe event filters.
716        pub fn event_filter<E: alloy_sol_types::SolEvent>(
717            &self,
718        ) -> alloy_contract::Event<&P, E, N> {
719            alloy_contract::Event::new_sol(&self.provider, &self.address)
720        }
721    }
722}
723///Module containing a contract's types and functions.
724/**
725
726```solidity
727library EdOnBN254 {
728    struct EdOnBN254Point { uint256 x; uint256 y; }
729}
730```*/
731#[allow(
732    non_camel_case_types,
733    non_snake_case,
734    clippy::pub_underscore_fields,
735    clippy::style,
736    clippy::empty_structs_with_brackets
737)]
738pub mod EdOnBN254 {
739    use super::*;
740    use alloy::sol_types as alloy_sol_types;
741    #[derive(serde::Serialize, serde::Deserialize)]
742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
743    /**```solidity
744struct EdOnBN254Point { uint256 x; uint256 y; }
745```*/
746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
747    #[derive(Clone)]
748    pub struct EdOnBN254Point {
749        #[allow(missing_docs)]
750        pub x: alloy::sol_types::private::primitives::aliases::U256,
751        #[allow(missing_docs)]
752        pub y: alloy::sol_types::private::primitives::aliases::U256,
753    }
754    #[allow(
755        non_camel_case_types,
756        non_snake_case,
757        clippy::pub_underscore_fields,
758        clippy::style
759    )]
760    const _: () = {
761        use alloy::sol_types as alloy_sol_types;
762        #[doc(hidden)]
763        #[allow(dead_code)]
764        type UnderlyingSolTuple<'a> = (
765            alloy::sol_types::sol_data::Uint<256>,
766            alloy::sol_types::sol_data::Uint<256>,
767        );
768        #[doc(hidden)]
769        type UnderlyingRustTuple<'a> = (
770            alloy::sol_types::private::primitives::aliases::U256,
771            alloy::sol_types::private::primitives::aliases::U256,
772        );
773        #[cfg(test)]
774        #[allow(dead_code, unreachable_patterns)]
775        fn _type_assertion(
776            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
777        ) {
778            match _t {
779                alloy_sol_types::private::AssertTypeEq::<
780                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
781                >(_) => {}
782            }
783        }
784        #[automatically_derived]
785        #[doc(hidden)]
786        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
787            fn from(value: EdOnBN254Point) -> Self {
788                (value.x, value.y)
789            }
790        }
791        #[automatically_derived]
792        #[doc(hidden)]
793        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
794            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
795                Self { x: tuple.0, y: tuple.1 }
796            }
797        }
798        #[automatically_derived]
799        impl alloy_sol_types::SolValue for EdOnBN254Point {
800            type SolType = Self;
801        }
802        #[automatically_derived]
803        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
804            #[inline]
805            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
806                (
807                    <alloy::sol_types::sol_data::Uint<
808                        256,
809                    > as alloy_sol_types::SolType>::tokenize(&self.x),
810                    <alloy::sol_types::sol_data::Uint<
811                        256,
812                    > as alloy_sol_types::SolType>::tokenize(&self.y),
813                )
814            }
815            #[inline]
816            fn stv_abi_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
818                    return size;
819                }
820                let tuple = <UnderlyingRustTuple<
821                    '_,
822                > as ::core::convert::From<Self>>::from(self.clone());
823                <UnderlyingSolTuple<
824                    '_,
825                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
826            }
827            #[inline]
828            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
829                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
830            }
831            #[inline]
832            fn stv_abi_encode_packed_to(
833                &self,
834                out: &mut alloy_sol_types::private::Vec<u8>,
835            ) {
836                let tuple = <UnderlyingRustTuple<
837                    '_,
838                > as ::core::convert::From<Self>>::from(self.clone());
839                <UnderlyingSolTuple<
840                    '_,
841                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
842            }
843            #[inline]
844            fn stv_abi_packed_encoded_size(&self) -> usize {
845                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
846                    return size;
847                }
848                let tuple = <UnderlyingRustTuple<
849                    '_,
850                > as ::core::convert::From<Self>>::from(self.clone());
851                <UnderlyingSolTuple<
852                    '_,
853                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
854            }
855        }
856        #[automatically_derived]
857        impl alloy_sol_types::SolType for EdOnBN254Point {
858            type RustType = Self;
859            type Token<'a> = <UnderlyingSolTuple<
860                'a,
861            > as alloy_sol_types::SolType>::Token<'a>;
862            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
863            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
864                '_,
865            > as alloy_sol_types::SolType>::ENCODED_SIZE;
866            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
867                '_,
868            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
869            #[inline]
870            fn valid_token(token: &Self::Token<'_>) -> bool {
871                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
872            }
873            #[inline]
874            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
875                let tuple = <UnderlyingSolTuple<
876                    '_,
877                > as alloy_sol_types::SolType>::detokenize(token);
878                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
879            }
880        }
881        #[automatically_derived]
882        impl alloy_sol_types::SolStruct for EdOnBN254Point {
883            const NAME: &'static str = "EdOnBN254Point";
884            #[inline]
885            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
886                alloy_sol_types::private::Cow::Borrowed(
887                    "EdOnBN254Point(uint256 x,uint256 y)",
888                )
889            }
890            #[inline]
891            fn eip712_components() -> alloy_sol_types::private::Vec<
892                alloy_sol_types::private::Cow<'static, str>,
893            > {
894                alloy_sol_types::private::Vec::new()
895            }
896            #[inline]
897            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
898                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
899            }
900            #[inline]
901            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
902                [
903                    <alloy::sol_types::sol_data::Uint<
904                        256,
905                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
906                        .0,
907                    <alloy::sol_types::sol_data::Uint<
908                        256,
909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
910                        .0,
911                ]
912                    .concat()
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::EventTopic for EdOnBN254Point {
917            #[inline]
918            fn topic_preimage_length(rust: &Self::RustType) -> usize {
919                0usize
920                    + <alloy::sol_types::sol_data::Uint<
921                        256,
922                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
923                    + <alloy::sol_types::sol_data::Uint<
924                        256,
925                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
926            }
927            #[inline]
928            fn encode_topic_preimage(
929                rust: &Self::RustType,
930                out: &mut alloy_sol_types::private::Vec<u8>,
931            ) {
932                out.reserve(
933                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
934                );
935                <alloy::sol_types::sol_data::Uint<
936                    256,
937                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
938                <alloy::sol_types::sol_data::Uint<
939                    256,
940                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
941            }
942            #[inline]
943            fn encode_topic(
944                rust: &Self::RustType,
945            ) -> alloy_sol_types::abi::token::WordToken {
946                let mut out = alloy_sol_types::private::Vec::new();
947                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
948                    rust,
949                    &mut out,
950                );
951                alloy_sol_types::abi::token::WordToken(
952                    alloy_sol_types::private::keccak256(out),
953                )
954            }
955        }
956    };
957    use alloy::contract as alloy_contract;
958    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
959
960See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
961    #[inline]
962    pub const fn new<
963        P: alloy_contract::private::Provider<N>,
964        N: alloy_contract::private::Network,
965    >(
966        address: alloy_sol_types::private::Address,
967        __provider: P,
968    ) -> EdOnBN254Instance<P, N> {
969        EdOnBN254Instance::<P, N>::new(address, __provider)
970    }
971    /**A [`EdOnBN254`](self) instance.
972
973Contains type-safe methods for interacting with an on-chain instance of the
974[`EdOnBN254`](self) contract located at a given `address`, using a given
975provider `P`.
976
977If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
978documentation on how to provide it), the `deploy` and `deploy_builder` methods can
979be used to deploy a new instance of the contract.
980
981See the [module-level documentation](self) for all the available methods.*/
982    #[derive(Clone)]
983    pub struct EdOnBN254Instance<P, N = alloy_contract::private::Ethereum> {
984        address: alloy_sol_types::private::Address,
985        provider: P,
986        _network: ::core::marker::PhantomData<N>,
987    }
988    #[automatically_derived]
989    impl<P, N> ::core::fmt::Debug for EdOnBN254Instance<P, N> {
990        #[inline]
991        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
992            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
993        }
994    }
995    /// Instantiation and getters/setters.
996    impl<
997        P: alloy_contract::private::Provider<N>,
998        N: alloy_contract::private::Network,
999    > EdOnBN254Instance<P, N> {
1000        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
1001
1002See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
1003        #[inline]
1004        pub const fn new(
1005            address: alloy_sol_types::private::Address,
1006            __provider: P,
1007        ) -> Self {
1008            Self {
1009                address,
1010                provider: __provider,
1011                _network: ::core::marker::PhantomData,
1012            }
1013        }
1014        /// Returns a reference to the address.
1015        #[inline]
1016        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1017            &self.address
1018        }
1019        /// Sets the address.
1020        #[inline]
1021        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1022            self.address = address;
1023        }
1024        /// Sets the address and returns `self`.
1025        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1026            self.set_address(address);
1027            self
1028        }
1029        /// Returns a reference to the provider.
1030        #[inline]
1031        pub const fn provider(&self) -> &P {
1032            &self.provider
1033        }
1034    }
1035    impl<P: ::core::clone::Clone, N> EdOnBN254Instance<&P, N> {
1036        /// Clones the provider and returns a new instance with the cloned provider.
1037        #[inline]
1038        pub fn with_cloned_provider(self) -> EdOnBN254Instance<P, N> {
1039            EdOnBN254Instance {
1040                address: self.address,
1041                provider: ::core::clone::Clone::clone(&self.provider),
1042                _network: ::core::marker::PhantomData,
1043            }
1044        }
1045    }
1046    /// Function calls.
1047    impl<
1048        P: alloy_contract::private::Provider<N>,
1049        N: alloy_contract::private::Network,
1050    > EdOnBN254Instance<P, N> {
1051        /// Creates a new call builder using this contract instance's provider and address.
1052        ///
1053        /// Note that the call can be any function call, not just those defined in this
1054        /// contract. Prefer using the other methods for building type-safe contract calls.
1055        pub fn call_builder<C: alloy_sol_types::SolCall>(
1056            &self,
1057            call: &C,
1058        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1059            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1060        }
1061    }
1062    /// Event filters.
1063    impl<
1064        P: alloy_contract::private::Provider<N>,
1065        N: alloy_contract::private::Network,
1066    > EdOnBN254Instance<P, N> {
1067        /// Creates a new event filter using this contract instance's provider and address.
1068        ///
1069        /// Note that the type can be any event, not just those defined in this contract.
1070        /// Prefer using the other methods for building type-safe event filters.
1071        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1072            &self,
1073        ) -> alloy_contract::Event<&P, E, N> {
1074            alloy_contract::Event::new_sol(&self.provider, &self.address)
1075        }
1076    }
1077}
1078///Module containing a contract's types and functions.
1079/**
1080
1081```solidity
1082library StakeTable {
1083    type ValidatorStatus is uint8;
1084}
1085```*/
1086#[allow(
1087    non_camel_case_types,
1088    non_snake_case,
1089    clippy::pub_underscore_fields,
1090    clippy::style,
1091    clippy::empty_structs_with_brackets
1092)]
1093pub mod StakeTable {
1094    use super::*;
1095    use alloy::sol_types as alloy_sol_types;
1096    #[derive(serde::Serialize, serde::Deserialize)]
1097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1099    #[derive(Clone)]
1100    pub struct ValidatorStatus(u8);
1101    const _: () = {
1102        use alloy::sol_types as alloy_sol_types;
1103        #[automatically_derived]
1104        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
1105            #[inline]
1106            fn stv_to_tokens(
1107                &self,
1108            ) -> <alloy::sol_types::sol_data::Uint<
1109                8,
1110            > as alloy_sol_types::SolType>::Token<'_> {
1111                alloy_sol_types::private::SolTypeValue::<
1112                    alloy::sol_types::sol_data::Uint<8>,
1113                >::stv_to_tokens(self)
1114            }
1115            #[inline]
1116            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1117                <alloy::sol_types::sol_data::Uint<
1118                    8,
1119                > as alloy_sol_types::SolType>::tokenize(self)
1120                    .0
1121            }
1122            #[inline]
1123            fn stv_abi_encode_packed_to(
1124                &self,
1125                out: &mut alloy_sol_types::private::Vec<u8>,
1126            ) {
1127                <alloy::sol_types::sol_data::Uint<
1128                    8,
1129                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1130            }
1131            #[inline]
1132            fn stv_abi_packed_encoded_size(&self) -> usize {
1133                <alloy::sol_types::sol_data::Uint<
1134                    8,
1135                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1136            }
1137        }
1138        impl ValidatorStatus {
1139            /// The Solidity type name.
1140            pub const NAME: &'static str = stringify!(@ name);
1141            /// Convert from the underlying value type.
1142            #[inline]
1143            pub const fn from_underlying(value: u8) -> Self {
1144                Self(value)
1145            }
1146            /// Return the underlying value.
1147            #[inline]
1148            pub const fn into_underlying(self) -> u8 {
1149                self.0
1150            }
1151            /// Return the single encoding of this value, delegating to the
1152            /// underlying type.
1153            #[inline]
1154            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1155                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1156            }
1157            /// Return the packed encoding of this value, delegating to the
1158            /// underlying type.
1159            #[inline]
1160            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1161                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1162            }
1163        }
1164        #[automatically_derived]
1165        impl From<u8> for ValidatorStatus {
1166            fn from(value: u8) -> Self {
1167                Self::from_underlying(value)
1168            }
1169        }
1170        #[automatically_derived]
1171        impl From<ValidatorStatus> for u8 {
1172            fn from(value: ValidatorStatus) -> Self {
1173                value.into_underlying()
1174            }
1175        }
1176        #[automatically_derived]
1177        impl alloy_sol_types::SolType for ValidatorStatus {
1178            type RustType = u8;
1179            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1180                8,
1181            > as alloy_sol_types::SolType>::Token<'a>;
1182            const SOL_NAME: &'static str = Self::NAME;
1183            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1184                8,
1185            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1186            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1187                8,
1188            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1189            #[inline]
1190            fn valid_token(token: &Self::Token<'_>) -> bool {
1191                Self::type_check(token).is_ok()
1192            }
1193            #[inline]
1194            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1195                <alloy::sol_types::sol_data::Uint<
1196                    8,
1197                > as alloy_sol_types::SolType>::type_check(token)
1198            }
1199            #[inline]
1200            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1201                <alloy::sol_types::sol_data::Uint<
1202                    8,
1203                > as alloy_sol_types::SolType>::detokenize(token)
1204            }
1205        }
1206        #[automatically_derived]
1207        impl alloy_sol_types::EventTopic for ValidatorStatus {
1208            #[inline]
1209            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1210                <alloy::sol_types::sol_data::Uint<
1211                    8,
1212                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1213            }
1214            #[inline]
1215            fn encode_topic_preimage(
1216                rust: &Self::RustType,
1217                out: &mut alloy_sol_types::private::Vec<u8>,
1218            ) {
1219                <alloy::sol_types::sol_data::Uint<
1220                    8,
1221                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1222            }
1223            #[inline]
1224            fn encode_topic(
1225                rust: &Self::RustType,
1226            ) -> alloy_sol_types::abi::token::WordToken {
1227                <alloy::sol_types::sol_data::Uint<
1228                    8,
1229                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1230            }
1231        }
1232    };
1233    use alloy::contract as alloy_contract;
1234    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1235
1236See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1237    #[inline]
1238    pub const fn new<
1239        P: alloy_contract::private::Provider<N>,
1240        N: alloy_contract::private::Network,
1241    >(
1242        address: alloy_sol_types::private::Address,
1243        __provider: P,
1244    ) -> StakeTableInstance<P, N> {
1245        StakeTableInstance::<P, N>::new(address, __provider)
1246    }
1247    /**A [`StakeTable`](self) instance.
1248
1249Contains type-safe methods for interacting with an on-chain instance of the
1250[`StakeTable`](self) contract located at a given `address`, using a given
1251provider `P`.
1252
1253If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1254documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1255be used to deploy a new instance of the contract.
1256
1257See the [module-level documentation](self) for all the available methods.*/
1258    #[derive(Clone)]
1259    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
1260        address: alloy_sol_types::private::Address,
1261        provider: P,
1262        _network: ::core::marker::PhantomData<N>,
1263    }
1264    #[automatically_derived]
1265    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
1266        #[inline]
1267        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1268            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
1269        }
1270    }
1271    /// Instantiation and getters/setters.
1272    impl<
1273        P: alloy_contract::private::Provider<N>,
1274        N: alloy_contract::private::Network,
1275    > StakeTableInstance<P, N> {
1276        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1277
1278See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1279        #[inline]
1280        pub const fn new(
1281            address: alloy_sol_types::private::Address,
1282            __provider: P,
1283        ) -> Self {
1284            Self {
1285                address,
1286                provider: __provider,
1287                _network: ::core::marker::PhantomData,
1288            }
1289        }
1290        /// Returns a reference to the address.
1291        #[inline]
1292        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1293            &self.address
1294        }
1295        /// Sets the address.
1296        #[inline]
1297        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1298            self.address = address;
1299        }
1300        /// Sets the address and returns `self`.
1301        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1302            self.set_address(address);
1303            self
1304        }
1305        /// Returns a reference to the provider.
1306        #[inline]
1307        pub const fn provider(&self) -> &P {
1308            &self.provider
1309        }
1310    }
1311    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
1312        /// Clones the provider and returns a new instance with the cloned provider.
1313        #[inline]
1314        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
1315            StakeTableInstance {
1316                address: self.address,
1317                provider: ::core::clone::Clone::clone(&self.provider),
1318                _network: ::core::marker::PhantomData,
1319            }
1320        }
1321    }
1322    /// Function calls.
1323    impl<
1324        P: alloy_contract::private::Provider<N>,
1325        N: alloy_contract::private::Network,
1326    > StakeTableInstance<P, N> {
1327        /// Creates a new call builder using this contract instance's provider and address.
1328        ///
1329        /// Note that the call can be any function call, not just those defined in this
1330        /// contract. Prefer using the other methods for building type-safe contract calls.
1331        pub fn call_builder<C: alloy_sol_types::SolCall>(
1332            &self,
1333            call: &C,
1334        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1335            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1336        }
1337    }
1338    /// Event filters.
1339    impl<
1340        P: alloy_contract::private::Provider<N>,
1341        N: alloy_contract::private::Network,
1342    > StakeTableInstance<P, N> {
1343        /// Creates a new event filter using this contract instance's provider and address.
1344        ///
1345        /// Note that the type can be any event, not just those defined in this contract.
1346        /// Prefer using the other methods for building type-safe event filters.
1347        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1348            &self,
1349        ) -> alloy_contract::Event<&P, E, N> {
1350            alloy_contract::Event::new_sol(&self.provider, &self.address)
1351        }
1352    }
1353}
1354///Module containing a contract's types and functions.
1355/**
1356
1357```solidity
1358library StakeTableV2 {
1359    struct InitialCommission { address validator; uint16 commission; }
1360}
1361```*/
1362#[allow(
1363    non_camel_case_types,
1364    non_snake_case,
1365    clippy::pub_underscore_fields,
1366    clippy::style,
1367    clippy::empty_structs_with_brackets
1368)]
1369pub mod StakeTableV2 {
1370    use super::*;
1371    use alloy::sol_types as alloy_sol_types;
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1374    /**```solidity
1375struct InitialCommission { address validator; uint16 commission; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct InitialCommission {
1380        #[allow(missing_docs)]
1381        pub validator: alloy::sol_types::private::Address,
1382        #[allow(missing_docs)]
1383        pub commission: u16,
1384    }
1385    #[allow(
1386        non_camel_case_types,
1387        non_snake_case,
1388        clippy::pub_underscore_fields,
1389        clippy::style
1390    )]
1391    const _: () = {
1392        use alloy::sol_types as alloy_sol_types;
1393        #[doc(hidden)]
1394        #[allow(dead_code)]
1395        type UnderlyingSolTuple<'a> = (
1396            alloy::sol_types::sol_data::Address,
1397            alloy::sol_types::sol_data::Uint<16>,
1398        );
1399        #[doc(hidden)]
1400        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u16);
1401        #[cfg(test)]
1402        #[allow(dead_code, unreachable_patterns)]
1403        fn _type_assertion(
1404            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1405        ) {
1406            match _t {
1407                alloy_sol_types::private::AssertTypeEq::<
1408                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1409                >(_) => {}
1410            }
1411        }
1412        #[automatically_derived]
1413        #[doc(hidden)]
1414        impl ::core::convert::From<InitialCommission> for UnderlyingRustTuple<'_> {
1415            fn from(value: InitialCommission) -> Self {
1416                (value.validator, value.commission)
1417            }
1418        }
1419        #[automatically_derived]
1420        #[doc(hidden)]
1421        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InitialCommission {
1422            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1423                Self {
1424                    validator: tuple.0,
1425                    commission: tuple.1,
1426                }
1427            }
1428        }
1429        #[automatically_derived]
1430        impl alloy_sol_types::SolValue for InitialCommission {
1431            type SolType = Self;
1432        }
1433        #[automatically_derived]
1434        impl alloy_sol_types::private::SolTypeValue<Self> for InitialCommission {
1435            #[inline]
1436            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1437                (
1438                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1439                        &self.validator,
1440                    ),
1441                    <alloy::sol_types::sol_data::Uint<
1442                        16,
1443                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
1444                )
1445            }
1446            #[inline]
1447            fn stv_abi_encoded_size(&self) -> usize {
1448                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1449                    return size;
1450                }
1451                let tuple = <UnderlyingRustTuple<
1452                    '_,
1453                > as ::core::convert::From<Self>>::from(self.clone());
1454                <UnderlyingSolTuple<
1455                    '_,
1456                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1457            }
1458            #[inline]
1459            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1460                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1461            }
1462            #[inline]
1463            fn stv_abi_encode_packed_to(
1464                &self,
1465                out: &mut alloy_sol_types::private::Vec<u8>,
1466            ) {
1467                let tuple = <UnderlyingRustTuple<
1468                    '_,
1469                > as ::core::convert::From<Self>>::from(self.clone());
1470                <UnderlyingSolTuple<
1471                    '_,
1472                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1473            }
1474            #[inline]
1475            fn stv_abi_packed_encoded_size(&self) -> usize {
1476                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1477                    return size;
1478                }
1479                let tuple = <UnderlyingRustTuple<
1480                    '_,
1481                > as ::core::convert::From<Self>>::from(self.clone());
1482                <UnderlyingSolTuple<
1483                    '_,
1484                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1485            }
1486        }
1487        #[automatically_derived]
1488        impl alloy_sol_types::SolType for InitialCommission {
1489            type RustType = Self;
1490            type Token<'a> = <UnderlyingSolTuple<
1491                'a,
1492            > as alloy_sol_types::SolType>::Token<'a>;
1493            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1494            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1495                '_,
1496            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1497            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1498                '_,
1499            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1500            #[inline]
1501            fn valid_token(token: &Self::Token<'_>) -> bool {
1502                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1503            }
1504            #[inline]
1505            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1506                let tuple = <UnderlyingSolTuple<
1507                    '_,
1508                > as alloy_sol_types::SolType>::detokenize(token);
1509                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1510            }
1511        }
1512        #[automatically_derived]
1513        impl alloy_sol_types::SolStruct for InitialCommission {
1514            const NAME: &'static str = "InitialCommission";
1515            #[inline]
1516            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1517                alloy_sol_types::private::Cow::Borrowed(
1518                    "InitialCommission(address validator,uint16 commission)",
1519                )
1520            }
1521            #[inline]
1522            fn eip712_components() -> alloy_sol_types::private::Vec<
1523                alloy_sol_types::private::Cow<'static, str>,
1524            > {
1525                alloy_sol_types::private::Vec::new()
1526            }
1527            #[inline]
1528            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1529                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1530            }
1531            #[inline]
1532            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1533                [
1534                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
1535                            &self.validator,
1536                        )
1537                        .0,
1538                    <alloy::sol_types::sol_data::Uint<
1539                        16,
1540                    > as alloy_sol_types::SolType>::eip712_data_word(&self.commission)
1541                        .0,
1542                ]
1543                    .concat()
1544            }
1545        }
1546        #[automatically_derived]
1547        impl alloy_sol_types::EventTopic for InitialCommission {
1548            #[inline]
1549            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1550                0usize
1551                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
1552                        &rust.validator,
1553                    )
1554                    + <alloy::sol_types::sol_data::Uint<
1555                        16,
1556                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1557                        &rust.commission,
1558                    )
1559            }
1560            #[inline]
1561            fn encode_topic_preimage(
1562                rust: &Self::RustType,
1563                out: &mut alloy_sol_types::private::Vec<u8>,
1564            ) {
1565                out.reserve(
1566                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1567                );
1568                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
1569                    &rust.validator,
1570                    out,
1571                );
1572                <alloy::sol_types::sol_data::Uint<
1573                    16,
1574                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1575                    &rust.commission,
1576                    out,
1577                );
1578            }
1579            #[inline]
1580            fn encode_topic(
1581                rust: &Self::RustType,
1582            ) -> alloy_sol_types::abi::token::WordToken {
1583                let mut out = alloy_sol_types::private::Vec::new();
1584                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1585                    rust,
1586                    &mut out,
1587                );
1588                alloy_sol_types::abi::token::WordToken(
1589                    alloy_sol_types::private::keccak256(out),
1590                )
1591            }
1592        }
1593    };
1594    use alloy::contract as alloy_contract;
1595    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
1596
1597See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
1598    #[inline]
1599    pub const fn new<
1600        P: alloy_contract::private::Provider<N>,
1601        N: alloy_contract::private::Network,
1602    >(
1603        address: alloy_sol_types::private::Address,
1604        __provider: P,
1605    ) -> StakeTableV2Instance<P, N> {
1606        StakeTableV2Instance::<P, N>::new(address, __provider)
1607    }
1608    /**A [`StakeTableV2`](self) instance.
1609
1610Contains type-safe methods for interacting with an on-chain instance of the
1611[`StakeTableV2`](self) contract located at a given `address`, using a given
1612provider `P`.
1613
1614If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1615documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1616be used to deploy a new instance of the contract.
1617
1618See the [module-level documentation](self) for all the available methods.*/
1619    #[derive(Clone)]
1620    pub struct StakeTableV2Instance<P, N = alloy_contract::private::Ethereum> {
1621        address: alloy_sol_types::private::Address,
1622        provider: P,
1623        _network: ::core::marker::PhantomData<N>,
1624    }
1625    #[automatically_derived]
1626    impl<P, N> ::core::fmt::Debug for StakeTableV2Instance<P, N> {
1627        #[inline]
1628        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1629            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
1630        }
1631    }
1632    /// Instantiation and getters/setters.
1633    impl<
1634        P: alloy_contract::private::Provider<N>,
1635        N: alloy_contract::private::Network,
1636    > StakeTableV2Instance<P, N> {
1637        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
1638
1639See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
1640        #[inline]
1641        pub const fn new(
1642            address: alloy_sol_types::private::Address,
1643            __provider: P,
1644        ) -> Self {
1645            Self {
1646                address,
1647                provider: __provider,
1648                _network: ::core::marker::PhantomData,
1649            }
1650        }
1651        /// Returns a reference to the address.
1652        #[inline]
1653        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1654            &self.address
1655        }
1656        /// Sets the address.
1657        #[inline]
1658        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1659            self.address = address;
1660        }
1661        /// Sets the address and returns `self`.
1662        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1663            self.set_address(address);
1664            self
1665        }
1666        /// Returns a reference to the provider.
1667        #[inline]
1668        pub const fn provider(&self) -> &P {
1669            &self.provider
1670        }
1671    }
1672    impl<P: ::core::clone::Clone, N> StakeTableV2Instance<&P, N> {
1673        /// Clones the provider and returns a new instance with the cloned provider.
1674        #[inline]
1675        pub fn with_cloned_provider(self) -> StakeTableV2Instance<P, N> {
1676            StakeTableV2Instance {
1677                address: self.address,
1678                provider: ::core::clone::Clone::clone(&self.provider),
1679                _network: ::core::marker::PhantomData,
1680            }
1681        }
1682    }
1683    /// Function calls.
1684    impl<
1685        P: alloy_contract::private::Provider<N>,
1686        N: alloy_contract::private::Network,
1687    > StakeTableV2Instance<P, N> {
1688        /// Creates a new call builder using this contract instance's provider and address.
1689        ///
1690        /// Note that the call can be any function call, not just those defined in this
1691        /// contract. Prefer using the other methods for building type-safe contract calls.
1692        pub fn call_builder<C: alloy_sol_types::SolCall>(
1693            &self,
1694            call: &C,
1695        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1696            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1697        }
1698    }
1699    /// Event filters.
1700    impl<
1701        P: alloy_contract::private::Provider<N>,
1702        N: alloy_contract::private::Network,
1703    > StakeTableV2Instance<P, N> {
1704        /// Creates a new event filter using this contract instance's provider and address.
1705        ///
1706        /// Note that the type can be any event, not just those defined in this contract.
1707        /// Prefer using the other methods for building type-safe event filters.
1708        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1709            &self,
1710        ) -> alloy_contract::Event<&P, E, N> {
1711            alloy_contract::Event::new_sol(&self.provider, &self.address)
1712        }
1713    }
1714}
1715/**
1716
1717Generated by the following Solidity interface...
1718```solidity
1719library BN254 {
1720    type BaseField is uint256;
1721    struct G1Point {
1722        BaseField x;
1723        BaseField y;
1724    }
1725    struct G2Point {
1726        BaseField x0;
1727        BaseField x1;
1728        BaseField y0;
1729        BaseField y1;
1730    }
1731}
1732
1733library EdOnBN254 {
1734    struct EdOnBN254Point {
1735        uint256 x;
1736        uint256 y;
1737    }
1738}
1739
1740library StakeTable {
1741    type ValidatorStatus is uint8;
1742}
1743
1744library StakeTableV2 {
1745    struct InitialCommission {
1746        address validator;
1747        uint16 commission;
1748    }
1749}
1750
1751interface StakeTableV3 {
1752    error AccessControlBadConfirmation();
1753    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1754    error AddressEmptyCode(address target);
1755    error BLSSigIsInfinity();
1756    error BLSSigVerificationFailed();
1757    error BLSVKIsInfinity();
1758    error BN254PairingProdFailed();
1759    error BlsKeyAlreadyUsed();
1760    error CommissionAlreadyInitialized(address validator);
1761    error CommissionIncreaseExceedsMax();
1762    error CommissionUnchanged();
1763    error CommissionUpdateTooSoon();
1764    error DefaultAdminCannotBeRenounced();
1765    error DefaultAdminCannotBeRevoked();
1766    error DelegateAmountTooSmall();
1767    error DeprecatedFunction();
1768    error ERC1967InvalidImplementation(address implementation);
1769    error ERC1967NonPayable();
1770    error EnforcedPause();
1771    error ExitEscrowPeriodInvalid();
1772    error ExpectedPause();
1773    error FailedInnerCall();
1774    error InitialActiveStakeExceedsBalance();
1775    error InsufficientAllowance(uint256, uint256);
1776    error InsufficientBalance(uint256);
1777    error InvalidCommission();
1778    error InvalidG1();
1779    error InvalidInitialization();
1780    error InvalidMetadataUriLength();
1781    error InvalidP2pAddr();
1782    error InvalidRateLimitParameters();
1783    error InvalidSchnorrSig();
1784    error InvalidSchnorrVK();
1785    error InvalidX25519Key();
1786    error MinDelegateAmountTooSmall();
1787    error NoUndelegationFound();
1788    error NotInitializing();
1789    error NothingToWithdraw();
1790    error OwnableInvalidOwner(address owner);
1791    error OwnableUnauthorizedAccount(address account);
1792    error OwnershipCannotBeRenounced();
1793    error PowPrecompileFailed();
1794    error PrematureWithdrawal();
1795    error SchnorrKeyAlreadyUsed();
1796    error UUPSUnauthorizedCallContext();
1797    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1798    error UndelegationAlreadyExists();
1799    error ValidatorAlreadyExited();
1800    error ValidatorAlreadyRegistered();
1801    error ValidatorInactive();
1802    error ValidatorNotExited();
1803    error X25519KeyAlreadyUsed();
1804    error ZeroAddress();
1805    error ZeroAmount();
1806
1807    event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
1808    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1809    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1810    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1811    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1812    event Initialized(uint64 version);
1813    event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
1814    event MetadataUriUpdated(address indexed validator, string metadataUri);
1815    event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
1816    event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
1817    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1818    event P2pAddrUpdated(address indexed validator, string p2pAddr);
1819    event Paused(address account);
1820    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1821    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1822    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1823    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1824    event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
1825    event Unpaused(address account);
1826    event Upgraded(address indexed implementation);
1827    event ValidatorExit(address indexed validator);
1828    event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
1829    event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
1830    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1831    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
1832    event ValidatorRegisteredV3(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri, bytes32 x25519Key, string p2pAddr);
1833    event Withdrawal(address indexed account, uint256 amount);
1834    event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
1835    event X25519KeyUpdated(address indexed validator, bytes32 x25519Key);
1836
1837    constructor();
1838
1839    function CURVE25519_P() external view returns (uint256);
1840    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1841    function MAX_COMMISSION_BPS() external view returns (uint16);
1842    function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
1843    function MAX_METADATA_URI_LENGTH() external view returns (uint256);
1844    function MAX_P2P_ADDR_LENGTH() external view returns (uint256);
1845    function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
1846    function PAUSER_ROLE() external view returns (bytes32);
1847    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1848    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1849    function activeStake() external view returns (uint256);
1850    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1851    function claimValidatorExit(address validator) external;
1852    function claimWithdrawal(address validator) external;
1853    function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
1854    function delegate(address validator, uint256 amount) external;
1855    function delegations(address validator, address delegator) external view returns (uint256 amount);
1856    function deregisterValidator() external;
1857    function exitEscrowPeriod() external view returns (uint256);
1858    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1859    function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
1860    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1861    function grantRole(bytes32 role, address account) external;
1862    function hasRole(bytes32 role, address account) external view returns (bool);
1863    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1864    function initializeV2(address pauser, address admin, uint256 initialActiveStake, StakeTableV2.InitialCommission[] memory initialCommissions) external;
1865    function initializeV3() external;
1866    function initializedAtBlock() external view returns (uint256);
1867    function lightClient() external view returns (address);
1868    function maxCommissionIncrease() external view returns (uint16);
1869    function minCommissionIncreaseInterval() external view returns (uint256);
1870    function minDelegateAmount() external view returns (uint256);
1871    function owner() external view returns (address);
1872    function pause() external;
1873    function paused() external view returns (bool);
1874    function proxiableUUID() external view returns (bytes32);
1875    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1876    function registerValidatorV2(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, bytes memory, uint16, string memory) external pure;
1877    function registerValidatorV3(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri, bytes32 x25519Key, string memory p2pAddr) external;
1878    function renounceOwnership() external;
1879    function renounceRole(bytes32 role, address callerConfirmation) external;
1880    function revokeRole(bytes32 role, address account) external;
1881    function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
1882    function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
1883    function setMinCommissionUpdateInterval(uint256 newInterval) external;
1884    function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
1885    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1886    function token() external view returns (address);
1887    function transferOwnership(address newOwner) external;
1888    function undelegate(address validator, uint256 amount) external;
1889    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1890    function unpause() external;
1891    function updateCommission(uint16 newCommission) external;
1892    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1893    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1894    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1895    function updateMetadataUri(string memory metadataUri) external;
1896    function updateNetworkConfig(bytes32 x25519Key, string memory p2pAddr) external;
1897    function updateP2pAddr(string memory p2pAddr) external;
1898    function updateX25519Key(bytes32 x25519Key) external;
1899    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1900    function validateMetadataUri(string memory metadataUri) external pure;
1901    function validateP2pAddr(string memory p2pAddr) external pure;
1902    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1903    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1904    function x25519Keys(bytes32 x25519Key) external view returns (bool used);
1905}
1906```
1907
1908...which was generated by the following JSON ABI:
1909```json
1910[
1911  {
1912    "type": "constructor",
1913    "inputs": [],
1914    "stateMutability": "nonpayable"
1915  },
1916  {
1917    "type": "function",
1918    "name": "CURVE25519_P",
1919    "inputs": [],
1920    "outputs": [
1921      {
1922        "name": "",
1923        "type": "uint256",
1924        "internalType": "uint256"
1925      }
1926    ],
1927    "stateMutability": "view"
1928  },
1929  {
1930    "type": "function",
1931    "name": "DEFAULT_ADMIN_ROLE",
1932    "inputs": [],
1933    "outputs": [
1934      {
1935        "name": "",
1936        "type": "bytes32",
1937        "internalType": "bytes32"
1938      }
1939    ],
1940    "stateMutability": "view"
1941  },
1942  {
1943    "type": "function",
1944    "name": "MAX_COMMISSION_BPS",
1945    "inputs": [],
1946    "outputs": [
1947      {
1948        "name": "",
1949        "type": "uint16",
1950        "internalType": "uint16"
1951      }
1952    ],
1953    "stateMutability": "view"
1954  },
1955  {
1956    "type": "function",
1957    "name": "MAX_EXIT_ESCROW_PERIOD",
1958    "inputs": [],
1959    "outputs": [
1960      {
1961        "name": "",
1962        "type": "uint64",
1963        "internalType": "uint64"
1964      }
1965    ],
1966    "stateMutability": "view"
1967  },
1968  {
1969    "type": "function",
1970    "name": "MAX_METADATA_URI_LENGTH",
1971    "inputs": [],
1972    "outputs": [
1973      {
1974        "name": "",
1975        "type": "uint256",
1976        "internalType": "uint256"
1977      }
1978    ],
1979    "stateMutability": "view"
1980  },
1981  {
1982    "type": "function",
1983    "name": "MAX_P2P_ADDR_LENGTH",
1984    "inputs": [],
1985    "outputs": [
1986      {
1987        "name": "",
1988        "type": "uint256",
1989        "internalType": "uint256"
1990      }
1991    ],
1992    "stateMutability": "view"
1993  },
1994  {
1995    "type": "function",
1996    "name": "MIN_EXIT_ESCROW_PERIOD",
1997    "inputs": [],
1998    "outputs": [
1999      {
2000        "name": "",
2001        "type": "uint64",
2002        "internalType": "uint64"
2003      }
2004    ],
2005    "stateMutability": "view"
2006  },
2007  {
2008    "type": "function",
2009    "name": "PAUSER_ROLE",
2010    "inputs": [],
2011    "outputs": [
2012      {
2013        "name": "",
2014        "type": "bytes32",
2015        "internalType": "bytes32"
2016      }
2017    ],
2018    "stateMutability": "view"
2019  },
2020  {
2021    "type": "function",
2022    "name": "UPGRADE_INTERFACE_VERSION",
2023    "inputs": [],
2024    "outputs": [
2025      {
2026        "name": "",
2027        "type": "string",
2028        "internalType": "string"
2029      }
2030    ],
2031    "stateMutability": "view"
2032  },
2033  {
2034    "type": "function",
2035    "name": "_hashBlsKey",
2036    "inputs": [
2037      {
2038        "name": "blsVK",
2039        "type": "tuple",
2040        "internalType": "struct BN254.G2Point",
2041        "components": [
2042          {
2043            "name": "x0",
2044            "type": "uint256",
2045            "internalType": "BN254.BaseField"
2046          },
2047          {
2048            "name": "x1",
2049            "type": "uint256",
2050            "internalType": "BN254.BaseField"
2051          },
2052          {
2053            "name": "y0",
2054            "type": "uint256",
2055            "internalType": "BN254.BaseField"
2056          },
2057          {
2058            "name": "y1",
2059            "type": "uint256",
2060            "internalType": "BN254.BaseField"
2061          }
2062        ]
2063      }
2064    ],
2065    "outputs": [
2066      {
2067        "name": "",
2068        "type": "bytes32",
2069        "internalType": "bytes32"
2070      }
2071    ],
2072    "stateMutability": "pure"
2073  },
2074  {
2075    "type": "function",
2076    "name": "activeStake",
2077    "inputs": [],
2078    "outputs": [
2079      {
2080        "name": "",
2081        "type": "uint256",
2082        "internalType": "uint256"
2083      }
2084    ],
2085    "stateMutability": "view"
2086  },
2087  {
2088    "type": "function",
2089    "name": "blsKeys",
2090    "inputs": [
2091      {
2092        "name": "blsKeyHash",
2093        "type": "bytes32",
2094        "internalType": "bytes32"
2095      }
2096    ],
2097    "outputs": [
2098      {
2099        "name": "used",
2100        "type": "bool",
2101        "internalType": "bool"
2102      }
2103    ],
2104    "stateMutability": "view"
2105  },
2106  {
2107    "type": "function",
2108    "name": "claimValidatorExit",
2109    "inputs": [
2110      {
2111        "name": "validator",
2112        "type": "address",
2113        "internalType": "address"
2114      }
2115    ],
2116    "outputs": [],
2117    "stateMutability": "nonpayable"
2118  },
2119  {
2120    "type": "function",
2121    "name": "claimWithdrawal",
2122    "inputs": [
2123      {
2124        "name": "validator",
2125        "type": "address",
2126        "internalType": "address"
2127      }
2128    ],
2129    "outputs": [],
2130    "stateMutability": "nonpayable"
2131  },
2132  {
2133    "type": "function",
2134    "name": "commissionTracking",
2135    "inputs": [
2136      {
2137        "name": "validator",
2138        "type": "address",
2139        "internalType": "address"
2140      }
2141    ],
2142    "outputs": [
2143      {
2144        "name": "commission",
2145        "type": "uint16",
2146        "internalType": "uint16"
2147      },
2148      {
2149        "name": "lastIncreaseTime",
2150        "type": "uint256",
2151        "internalType": "uint256"
2152      }
2153    ],
2154    "stateMutability": "view"
2155  },
2156  {
2157    "type": "function",
2158    "name": "delegate",
2159    "inputs": [
2160      {
2161        "name": "validator",
2162        "type": "address",
2163        "internalType": "address"
2164      },
2165      {
2166        "name": "amount",
2167        "type": "uint256",
2168        "internalType": "uint256"
2169      }
2170    ],
2171    "outputs": [],
2172    "stateMutability": "nonpayable"
2173  },
2174  {
2175    "type": "function",
2176    "name": "delegations",
2177    "inputs": [
2178      {
2179        "name": "validator",
2180        "type": "address",
2181        "internalType": "address"
2182      },
2183      {
2184        "name": "delegator",
2185        "type": "address",
2186        "internalType": "address"
2187      }
2188    ],
2189    "outputs": [
2190      {
2191        "name": "amount",
2192        "type": "uint256",
2193        "internalType": "uint256"
2194      }
2195    ],
2196    "stateMutability": "view"
2197  },
2198  {
2199    "type": "function",
2200    "name": "deregisterValidator",
2201    "inputs": [],
2202    "outputs": [],
2203    "stateMutability": "nonpayable"
2204  },
2205  {
2206    "type": "function",
2207    "name": "exitEscrowPeriod",
2208    "inputs": [],
2209    "outputs": [
2210      {
2211        "name": "",
2212        "type": "uint256",
2213        "internalType": "uint256"
2214      }
2215    ],
2216    "stateMutability": "view"
2217  },
2218  {
2219    "type": "function",
2220    "name": "getRoleAdmin",
2221    "inputs": [
2222      {
2223        "name": "role",
2224        "type": "bytes32",
2225        "internalType": "bytes32"
2226      }
2227    ],
2228    "outputs": [
2229      {
2230        "name": "",
2231        "type": "bytes32",
2232        "internalType": "bytes32"
2233      }
2234    ],
2235    "stateMutability": "view"
2236  },
2237  {
2238    "type": "function",
2239    "name": "getUndelegation",
2240    "inputs": [
2241      {
2242        "name": "validator",
2243        "type": "address",
2244        "internalType": "address"
2245      },
2246      {
2247        "name": "delegator",
2248        "type": "address",
2249        "internalType": "address"
2250      }
2251    ],
2252    "outputs": [
2253      {
2254        "name": "id",
2255        "type": "uint64",
2256        "internalType": "uint64"
2257      },
2258      {
2259        "name": "amount",
2260        "type": "uint256",
2261        "internalType": "uint256"
2262      },
2263      {
2264        "name": "unlocksAt",
2265        "type": "uint256",
2266        "internalType": "uint256"
2267      }
2268    ],
2269    "stateMutability": "view"
2270  },
2271  {
2272    "type": "function",
2273    "name": "getVersion",
2274    "inputs": [],
2275    "outputs": [
2276      {
2277        "name": "majorVersion",
2278        "type": "uint8",
2279        "internalType": "uint8"
2280      },
2281      {
2282        "name": "minorVersion",
2283        "type": "uint8",
2284        "internalType": "uint8"
2285      },
2286      {
2287        "name": "patchVersion",
2288        "type": "uint8",
2289        "internalType": "uint8"
2290      }
2291    ],
2292    "stateMutability": "pure"
2293  },
2294  {
2295    "type": "function",
2296    "name": "grantRole",
2297    "inputs": [
2298      {
2299        "name": "role",
2300        "type": "bytes32",
2301        "internalType": "bytes32"
2302      },
2303      {
2304        "name": "account",
2305        "type": "address",
2306        "internalType": "address"
2307      }
2308    ],
2309    "outputs": [],
2310    "stateMutability": "nonpayable"
2311  },
2312  {
2313    "type": "function",
2314    "name": "hasRole",
2315    "inputs": [
2316      {
2317        "name": "role",
2318        "type": "bytes32",
2319        "internalType": "bytes32"
2320      },
2321      {
2322        "name": "account",
2323        "type": "address",
2324        "internalType": "address"
2325      }
2326    ],
2327    "outputs": [
2328      {
2329        "name": "",
2330        "type": "bool",
2331        "internalType": "bool"
2332      }
2333    ],
2334    "stateMutability": "view"
2335  },
2336  {
2337    "type": "function",
2338    "name": "initialize",
2339    "inputs": [
2340      {
2341        "name": "_tokenAddress",
2342        "type": "address",
2343        "internalType": "address"
2344      },
2345      {
2346        "name": "_lightClientAddress",
2347        "type": "address",
2348        "internalType": "address"
2349      },
2350      {
2351        "name": "_exitEscrowPeriod",
2352        "type": "uint256",
2353        "internalType": "uint256"
2354      },
2355      {
2356        "name": "_timelock",
2357        "type": "address",
2358        "internalType": "address"
2359      }
2360    ],
2361    "outputs": [],
2362    "stateMutability": "nonpayable"
2363  },
2364  {
2365    "type": "function",
2366    "name": "initializeV2",
2367    "inputs": [
2368      {
2369        "name": "pauser",
2370        "type": "address",
2371        "internalType": "address"
2372      },
2373      {
2374        "name": "admin",
2375        "type": "address",
2376        "internalType": "address"
2377      },
2378      {
2379        "name": "initialActiveStake",
2380        "type": "uint256",
2381        "internalType": "uint256"
2382      },
2383      {
2384        "name": "initialCommissions",
2385        "type": "tuple[]",
2386        "internalType": "struct StakeTableV2.InitialCommission[]",
2387        "components": [
2388          {
2389            "name": "validator",
2390            "type": "address",
2391            "internalType": "address"
2392          },
2393          {
2394            "name": "commission",
2395            "type": "uint16",
2396            "internalType": "uint16"
2397          }
2398        ]
2399      }
2400    ],
2401    "outputs": [],
2402    "stateMutability": "nonpayable"
2403  },
2404  {
2405    "type": "function",
2406    "name": "initializeV3",
2407    "inputs": [],
2408    "outputs": [],
2409    "stateMutability": "nonpayable"
2410  },
2411  {
2412    "type": "function",
2413    "name": "initializedAtBlock",
2414    "inputs": [],
2415    "outputs": [
2416      {
2417        "name": "",
2418        "type": "uint256",
2419        "internalType": "uint256"
2420      }
2421    ],
2422    "stateMutability": "view"
2423  },
2424  {
2425    "type": "function",
2426    "name": "lightClient",
2427    "inputs": [],
2428    "outputs": [
2429      {
2430        "name": "",
2431        "type": "address",
2432        "internalType": "contract ILightClient"
2433      }
2434    ],
2435    "stateMutability": "view"
2436  },
2437  {
2438    "type": "function",
2439    "name": "maxCommissionIncrease",
2440    "inputs": [],
2441    "outputs": [
2442      {
2443        "name": "",
2444        "type": "uint16",
2445        "internalType": "uint16"
2446      }
2447    ],
2448    "stateMutability": "view"
2449  },
2450  {
2451    "type": "function",
2452    "name": "minCommissionIncreaseInterval",
2453    "inputs": [],
2454    "outputs": [
2455      {
2456        "name": "",
2457        "type": "uint256",
2458        "internalType": "uint256"
2459      }
2460    ],
2461    "stateMutability": "view"
2462  },
2463  {
2464    "type": "function",
2465    "name": "minDelegateAmount",
2466    "inputs": [],
2467    "outputs": [
2468      {
2469        "name": "",
2470        "type": "uint256",
2471        "internalType": "uint256"
2472      }
2473    ],
2474    "stateMutability": "view"
2475  },
2476  {
2477    "type": "function",
2478    "name": "owner",
2479    "inputs": [],
2480    "outputs": [
2481      {
2482        "name": "",
2483        "type": "address",
2484        "internalType": "address"
2485      }
2486    ],
2487    "stateMutability": "view"
2488  },
2489  {
2490    "type": "function",
2491    "name": "pause",
2492    "inputs": [],
2493    "outputs": [],
2494    "stateMutability": "nonpayable"
2495  },
2496  {
2497    "type": "function",
2498    "name": "paused",
2499    "inputs": [],
2500    "outputs": [
2501      {
2502        "name": "",
2503        "type": "bool",
2504        "internalType": "bool"
2505      }
2506    ],
2507    "stateMutability": "view"
2508  },
2509  {
2510    "type": "function",
2511    "name": "proxiableUUID",
2512    "inputs": [],
2513    "outputs": [
2514      {
2515        "name": "",
2516        "type": "bytes32",
2517        "internalType": "bytes32"
2518      }
2519    ],
2520    "stateMutability": "view"
2521  },
2522  {
2523    "type": "function",
2524    "name": "registerValidator",
2525    "inputs": [
2526      {
2527        "name": "",
2528        "type": "tuple",
2529        "internalType": "struct BN254.G2Point",
2530        "components": [
2531          {
2532            "name": "x0",
2533            "type": "uint256",
2534            "internalType": "BN254.BaseField"
2535          },
2536          {
2537            "name": "x1",
2538            "type": "uint256",
2539            "internalType": "BN254.BaseField"
2540          },
2541          {
2542            "name": "y0",
2543            "type": "uint256",
2544            "internalType": "BN254.BaseField"
2545          },
2546          {
2547            "name": "y1",
2548            "type": "uint256",
2549            "internalType": "BN254.BaseField"
2550          }
2551        ]
2552      },
2553      {
2554        "name": "",
2555        "type": "tuple",
2556        "internalType": "struct EdOnBN254.EdOnBN254Point",
2557        "components": [
2558          {
2559            "name": "x",
2560            "type": "uint256",
2561            "internalType": "uint256"
2562          },
2563          {
2564            "name": "y",
2565            "type": "uint256",
2566            "internalType": "uint256"
2567          }
2568        ]
2569      },
2570      {
2571        "name": "",
2572        "type": "tuple",
2573        "internalType": "struct BN254.G1Point",
2574        "components": [
2575          {
2576            "name": "x",
2577            "type": "uint256",
2578            "internalType": "BN254.BaseField"
2579          },
2580          {
2581            "name": "y",
2582            "type": "uint256",
2583            "internalType": "BN254.BaseField"
2584          }
2585        ]
2586      },
2587      {
2588        "name": "",
2589        "type": "uint16",
2590        "internalType": "uint16"
2591      }
2592    ],
2593    "outputs": [],
2594    "stateMutability": "pure"
2595  },
2596  {
2597    "type": "function",
2598    "name": "registerValidatorV2",
2599    "inputs": [
2600      {
2601        "name": "",
2602        "type": "tuple",
2603        "internalType": "struct BN254.G2Point",
2604        "components": [
2605          {
2606            "name": "x0",
2607            "type": "uint256",
2608            "internalType": "BN254.BaseField"
2609          },
2610          {
2611            "name": "x1",
2612            "type": "uint256",
2613            "internalType": "BN254.BaseField"
2614          },
2615          {
2616            "name": "y0",
2617            "type": "uint256",
2618            "internalType": "BN254.BaseField"
2619          },
2620          {
2621            "name": "y1",
2622            "type": "uint256",
2623            "internalType": "BN254.BaseField"
2624          }
2625        ]
2626      },
2627      {
2628        "name": "",
2629        "type": "tuple",
2630        "internalType": "struct EdOnBN254.EdOnBN254Point",
2631        "components": [
2632          {
2633            "name": "x",
2634            "type": "uint256",
2635            "internalType": "uint256"
2636          },
2637          {
2638            "name": "y",
2639            "type": "uint256",
2640            "internalType": "uint256"
2641          }
2642        ]
2643      },
2644      {
2645        "name": "",
2646        "type": "tuple",
2647        "internalType": "struct BN254.G1Point",
2648        "components": [
2649          {
2650            "name": "x",
2651            "type": "uint256",
2652            "internalType": "BN254.BaseField"
2653          },
2654          {
2655            "name": "y",
2656            "type": "uint256",
2657            "internalType": "BN254.BaseField"
2658          }
2659        ]
2660      },
2661      {
2662        "name": "",
2663        "type": "bytes",
2664        "internalType": "bytes"
2665      },
2666      {
2667        "name": "",
2668        "type": "uint16",
2669        "internalType": "uint16"
2670      },
2671      {
2672        "name": "",
2673        "type": "string",
2674        "internalType": "string"
2675      }
2676    ],
2677    "outputs": [],
2678    "stateMutability": "pure"
2679  },
2680  {
2681    "type": "function",
2682    "name": "registerValidatorV3",
2683    "inputs": [
2684      {
2685        "name": "blsVK",
2686        "type": "tuple",
2687        "internalType": "struct BN254.G2Point",
2688        "components": [
2689          {
2690            "name": "x0",
2691            "type": "uint256",
2692            "internalType": "BN254.BaseField"
2693          },
2694          {
2695            "name": "x1",
2696            "type": "uint256",
2697            "internalType": "BN254.BaseField"
2698          },
2699          {
2700            "name": "y0",
2701            "type": "uint256",
2702            "internalType": "BN254.BaseField"
2703          },
2704          {
2705            "name": "y1",
2706            "type": "uint256",
2707            "internalType": "BN254.BaseField"
2708          }
2709        ]
2710      },
2711      {
2712        "name": "schnorrVK",
2713        "type": "tuple",
2714        "internalType": "struct EdOnBN254.EdOnBN254Point",
2715        "components": [
2716          {
2717            "name": "x",
2718            "type": "uint256",
2719            "internalType": "uint256"
2720          },
2721          {
2722            "name": "y",
2723            "type": "uint256",
2724            "internalType": "uint256"
2725          }
2726        ]
2727      },
2728      {
2729        "name": "blsSig",
2730        "type": "tuple",
2731        "internalType": "struct BN254.G1Point",
2732        "components": [
2733          {
2734            "name": "x",
2735            "type": "uint256",
2736            "internalType": "BN254.BaseField"
2737          },
2738          {
2739            "name": "y",
2740            "type": "uint256",
2741            "internalType": "BN254.BaseField"
2742          }
2743        ]
2744      },
2745      {
2746        "name": "schnorrSig",
2747        "type": "bytes",
2748        "internalType": "bytes"
2749      },
2750      {
2751        "name": "commission",
2752        "type": "uint16",
2753        "internalType": "uint16"
2754      },
2755      {
2756        "name": "metadataUri",
2757        "type": "string",
2758        "internalType": "string"
2759      },
2760      {
2761        "name": "x25519Key",
2762        "type": "bytes32",
2763        "internalType": "bytes32"
2764      },
2765      {
2766        "name": "p2pAddr",
2767        "type": "string",
2768        "internalType": "string"
2769      }
2770    ],
2771    "outputs": [],
2772    "stateMutability": "nonpayable"
2773  },
2774  {
2775    "type": "function",
2776    "name": "renounceOwnership",
2777    "inputs": [],
2778    "outputs": [],
2779    "stateMutability": "nonpayable"
2780  },
2781  {
2782    "type": "function",
2783    "name": "renounceRole",
2784    "inputs": [
2785      {
2786        "name": "role",
2787        "type": "bytes32",
2788        "internalType": "bytes32"
2789      },
2790      {
2791        "name": "callerConfirmation",
2792        "type": "address",
2793        "internalType": "address"
2794      }
2795    ],
2796    "outputs": [],
2797    "stateMutability": "nonpayable"
2798  },
2799  {
2800    "type": "function",
2801    "name": "revokeRole",
2802    "inputs": [
2803      {
2804        "name": "role",
2805        "type": "bytes32",
2806        "internalType": "bytes32"
2807      },
2808      {
2809        "name": "account",
2810        "type": "address",
2811        "internalType": "address"
2812      }
2813    ],
2814    "outputs": [],
2815    "stateMutability": "nonpayable"
2816  },
2817  {
2818    "type": "function",
2819    "name": "schnorrKeys",
2820    "inputs": [
2821      {
2822        "name": "schnorrKey",
2823        "type": "bytes32",
2824        "internalType": "bytes32"
2825      }
2826    ],
2827    "outputs": [
2828      {
2829        "name": "used",
2830        "type": "bool",
2831        "internalType": "bool"
2832      }
2833    ],
2834    "stateMutability": "view"
2835  },
2836  {
2837    "type": "function",
2838    "name": "setMaxCommissionIncrease",
2839    "inputs": [
2840      {
2841        "name": "newMaxIncrease",
2842        "type": "uint16",
2843        "internalType": "uint16"
2844      }
2845    ],
2846    "outputs": [],
2847    "stateMutability": "nonpayable"
2848  },
2849  {
2850    "type": "function",
2851    "name": "setMinCommissionUpdateInterval",
2852    "inputs": [
2853      {
2854        "name": "newInterval",
2855        "type": "uint256",
2856        "internalType": "uint256"
2857      }
2858    ],
2859    "outputs": [],
2860    "stateMutability": "nonpayable"
2861  },
2862  {
2863    "type": "function",
2864    "name": "setMinDelegateAmount",
2865    "inputs": [
2866      {
2867        "name": "newMinDelegateAmount",
2868        "type": "uint256",
2869        "internalType": "uint256"
2870      }
2871    ],
2872    "outputs": [],
2873    "stateMutability": "nonpayable"
2874  },
2875  {
2876    "type": "function",
2877    "name": "supportsInterface",
2878    "inputs": [
2879      {
2880        "name": "interfaceId",
2881        "type": "bytes4",
2882        "internalType": "bytes4"
2883      }
2884    ],
2885    "outputs": [
2886      {
2887        "name": "",
2888        "type": "bool",
2889        "internalType": "bool"
2890      }
2891    ],
2892    "stateMutability": "view"
2893  },
2894  {
2895    "type": "function",
2896    "name": "token",
2897    "inputs": [],
2898    "outputs": [
2899      {
2900        "name": "",
2901        "type": "address",
2902        "internalType": "contract ERC20"
2903      }
2904    ],
2905    "stateMutability": "view"
2906  },
2907  {
2908    "type": "function",
2909    "name": "transferOwnership",
2910    "inputs": [
2911      {
2912        "name": "newOwner",
2913        "type": "address",
2914        "internalType": "address"
2915      }
2916    ],
2917    "outputs": [],
2918    "stateMutability": "nonpayable"
2919  },
2920  {
2921    "type": "function",
2922    "name": "undelegate",
2923    "inputs": [
2924      {
2925        "name": "validator",
2926        "type": "address",
2927        "internalType": "address"
2928      },
2929      {
2930        "name": "amount",
2931        "type": "uint256",
2932        "internalType": "uint256"
2933      }
2934    ],
2935    "outputs": [],
2936    "stateMutability": "nonpayable"
2937  },
2938  {
2939    "type": "function",
2940    "name": "undelegations",
2941    "inputs": [
2942      {
2943        "name": "validator",
2944        "type": "address",
2945        "internalType": "address"
2946      },
2947      {
2948        "name": "delegator",
2949        "type": "address",
2950        "internalType": "address"
2951      }
2952    ],
2953    "outputs": [
2954      {
2955        "name": "amount",
2956        "type": "uint256",
2957        "internalType": "uint256"
2958      },
2959      {
2960        "name": "unlocksAt",
2961        "type": "uint256",
2962        "internalType": "uint256"
2963      }
2964    ],
2965    "stateMutability": "view"
2966  },
2967  {
2968    "type": "function",
2969    "name": "unpause",
2970    "inputs": [],
2971    "outputs": [],
2972    "stateMutability": "nonpayable"
2973  },
2974  {
2975    "type": "function",
2976    "name": "updateCommission",
2977    "inputs": [
2978      {
2979        "name": "newCommission",
2980        "type": "uint16",
2981        "internalType": "uint16"
2982      }
2983    ],
2984    "outputs": [],
2985    "stateMutability": "nonpayable"
2986  },
2987  {
2988    "type": "function",
2989    "name": "updateConsensusKeys",
2990    "inputs": [
2991      {
2992        "name": "",
2993        "type": "tuple",
2994        "internalType": "struct BN254.G2Point",
2995        "components": [
2996          {
2997            "name": "x0",
2998            "type": "uint256",
2999            "internalType": "BN254.BaseField"
3000          },
3001          {
3002            "name": "x1",
3003            "type": "uint256",
3004            "internalType": "BN254.BaseField"
3005          },
3006          {
3007            "name": "y0",
3008            "type": "uint256",
3009            "internalType": "BN254.BaseField"
3010          },
3011          {
3012            "name": "y1",
3013            "type": "uint256",
3014            "internalType": "BN254.BaseField"
3015          }
3016        ]
3017      },
3018      {
3019        "name": "",
3020        "type": "tuple",
3021        "internalType": "struct EdOnBN254.EdOnBN254Point",
3022        "components": [
3023          {
3024            "name": "x",
3025            "type": "uint256",
3026            "internalType": "uint256"
3027          },
3028          {
3029            "name": "y",
3030            "type": "uint256",
3031            "internalType": "uint256"
3032          }
3033        ]
3034      },
3035      {
3036        "name": "",
3037        "type": "tuple",
3038        "internalType": "struct BN254.G1Point",
3039        "components": [
3040          {
3041            "name": "x",
3042            "type": "uint256",
3043            "internalType": "BN254.BaseField"
3044          },
3045          {
3046            "name": "y",
3047            "type": "uint256",
3048            "internalType": "BN254.BaseField"
3049          }
3050        ]
3051      }
3052    ],
3053    "outputs": [],
3054    "stateMutability": "pure"
3055  },
3056  {
3057    "type": "function",
3058    "name": "updateConsensusKeysV2",
3059    "inputs": [
3060      {
3061        "name": "blsVK",
3062        "type": "tuple",
3063        "internalType": "struct BN254.G2Point",
3064        "components": [
3065          {
3066            "name": "x0",
3067            "type": "uint256",
3068            "internalType": "BN254.BaseField"
3069          },
3070          {
3071            "name": "x1",
3072            "type": "uint256",
3073            "internalType": "BN254.BaseField"
3074          },
3075          {
3076            "name": "y0",
3077            "type": "uint256",
3078            "internalType": "BN254.BaseField"
3079          },
3080          {
3081            "name": "y1",
3082            "type": "uint256",
3083            "internalType": "BN254.BaseField"
3084          }
3085        ]
3086      },
3087      {
3088        "name": "schnorrVK",
3089        "type": "tuple",
3090        "internalType": "struct EdOnBN254.EdOnBN254Point",
3091        "components": [
3092          {
3093            "name": "x",
3094            "type": "uint256",
3095            "internalType": "uint256"
3096          },
3097          {
3098            "name": "y",
3099            "type": "uint256",
3100            "internalType": "uint256"
3101          }
3102        ]
3103      },
3104      {
3105        "name": "blsSig",
3106        "type": "tuple",
3107        "internalType": "struct BN254.G1Point",
3108        "components": [
3109          {
3110            "name": "x",
3111            "type": "uint256",
3112            "internalType": "BN254.BaseField"
3113          },
3114          {
3115            "name": "y",
3116            "type": "uint256",
3117            "internalType": "BN254.BaseField"
3118          }
3119        ]
3120      },
3121      {
3122        "name": "schnorrSig",
3123        "type": "bytes",
3124        "internalType": "bytes"
3125      }
3126    ],
3127    "outputs": [],
3128    "stateMutability": "nonpayable"
3129  },
3130  {
3131    "type": "function",
3132    "name": "updateExitEscrowPeriod",
3133    "inputs": [
3134      {
3135        "name": "newExitEscrowPeriod",
3136        "type": "uint64",
3137        "internalType": "uint64"
3138      }
3139    ],
3140    "outputs": [],
3141    "stateMutability": "nonpayable"
3142  },
3143  {
3144    "type": "function",
3145    "name": "updateMetadataUri",
3146    "inputs": [
3147      {
3148        "name": "metadataUri",
3149        "type": "string",
3150        "internalType": "string"
3151      }
3152    ],
3153    "outputs": [],
3154    "stateMutability": "nonpayable"
3155  },
3156  {
3157    "type": "function",
3158    "name": "updateNetworkConfig",
3159    "inputs": [
3160      {
3161        "name": "x25519Key",
3162        "type": "bytes32",
3163        "internalType": "bytes32"
3164      },
3165      {
3166        "name": "p2pAddr",
3167        "type": "string",
3168        "internalType": "string"
3169      }
3170    ],
3171    "outputs": [],
3172    "stateMutability": "nonpayable"
3173  },
3174  {
3175    "type": "function",
3176    "name": "updateP2pAddr",
3177    "inputs": [
3178      {
3179        "name": "p2pAddr",
3180        "type": "string",
3181        "internalType": "string"
3182      }
3183    ],
3184    "outputs": [],
3185    "stateMutability": "nonpayable"
3186  },
3187  {
3188    "type": "function",
3189    "name": "updateX25519Key",
3190    "inputs": [
3191      {
3192        "name": "x25519Key",
3193        "type": "bytes32",
3194        "internalType": "bytes32"
3195      }
3196    ],
3197    "outputs": [],
3198    "stateMutability": "nonpayable"
3199  },
3200  {
3201    "type": "function",
3202    "name": "upgradeToAndCall",
3203    "inputs": [
3204      {
3205        "name": "newImplementation",
3206        "type": "address",
3207        "internalType": "address"
3208      },
3209      {
3210        "name": "data",
3211        "type": "bytes",
3212        "internalType": "bytes"
3213      }
3214    ],
3215    "outputs": [],
3216    "stateMutability": "payable"
3217  },
3218  {
3219    "type": "function",
3220    "name": "validateMetadataUri",
3221    "inputs": [
3222      {
3223        "name": "metadataUri",
3224        "type": "string",
3225        "internalType": "string"
3226      }
3227    ],
3228    "outputs": [],
3229    "stateMutability": "pure"
3230  },
3231  {
3232    "type": "function",
3233    "name": "validateP2pAddr",
3234    "inputs": [
3235      {
3236        "name": "p2pAddr",
3237        "type": "string",
3238        "internalType": "string"
3239      }
3240    ],
3241    "outputs": [],
3242    "stateMutability": "pure"
3243  },
3244  {
3245    "type": "function",
3246    "name": "validatorExits",
3247    "inputs": [
3248      {
3249        "name": "validator",
3250        "type": "address",
3251        "internalType": "address"
3252      }
3253    ],
3254    "outputs": [
3255      {
3256        "name": "unlocksAt",
3257        "type": "uint256",
3258        "internalType": "uint256"
3259      }
3260    ],
3261    "stateMutability": "view"
3262  },
3263  {
3264    "type": "function",
3265    "name": "validators",
3266    "inputs": [
3267      {
3268        "name": "account",
3269        "type": "address",
3270        "internalType": "address"
3271      }
3272    ],
3273    "outputs": [
3274      {
3275        "name": "delegatedAmount",
3276        "type": "uint256",
3277        "internalType": "uint256"
3278      },
3279      {
3280        "name": "status",
3281        "type": "uint8",
3282        "internalType": "enum StakeTable.ValidatorStatus"
3283      }
3284    ],
3285    "stateMutability": "view"
3286  },
3287  {
3288    "type": "function",
3289    "name": "x25519Keys",
3290    "inputs": [
3291      {
3292        "name": "x25519Key",
3293        "type": "bytes32",
3294        "internalType": "bytes32"
3295      }
3296    ],
3297    "outputs": [
3298      {
3299        "name": "used",
3300        "type": "bool",
3301        "internalType": "bool"
3302      }
3303    ],
3304    "stateMutability": "view"
3305  },
3306  {
3307    "type": "event",
3308    "name": "CommissionUpdated",
3309    "inputs": [
3310      {
3311        "name": "validator",
3312        "type": "address",
3313        "indexed": true,
3314        "internalType": "address"
3315      },
3316      {
3317        "name": "timestamp",
3318        "type": "uint256",
3319        "indexed": false,
3320        "internalType": "uint256"
3321      },
3322      {
3323        "name": "oldCommission",
3324        "type": "uint16",
3325        "indexed": false,
3326        "internalType": "uint16"
3327      },
3328      {
3329        "name": "newCommission",
3330        "type": "uint16",
3331        "indexed": false,
3332        "internalType": "uint16"
3333      }
3334    ],
3335    "anonymous": false
3336  },
3337  {
3338    "type": "event",
3339    "name": "ConsensusKeysUpdated",
3340    "inputs": [
3341      {
3342        "name": "account",
3343        "type": "address",
3344        "indexed": true,
3345        "internalType": "address"
3346      },
3347      {
3348        "name": "blsVK",
3349        "type": "tuple",
3350        "indexed": false,
3351        "internalType": "struct BN254.G2Point",
3352        "components": [
3353          {
3354            "name": "x0",
3355            "type": "uint256",
3356            "internalType": "BN254.BaseField"
3357          },
3358          {
3359            "name": "x1",
3360            "type": "uint256",
3361            "internalType": "BN254.BaseField"
3362          },
3363          {
3364            "name": "y0",
3365            "type": "uint256",
3366            "internalType": "BN254.BaseField"
3367          },
3368          {
3369            "name": "y1",
3370            "type": "uint256",
3371            "internalType": "BN254.BaseField"
3372          }
3373        ]
3374      },
3375      {
3376        "name": "schnorrVK",
3377        "type": "tuple",
3378        "indexed": false,
3379        "internalType": "struct EdOnBN254.EdOnBN254Point",
3380        "components": [
3381          {
3382            "name": "x",
3383            "type": "uint256",
3384            "internalType": "uint256"
3385          },
3386          {
3387            "name": "y",
3388            "type": "uint256",
3389            "internalType": "uint256"
3390          }
3391        ]
3392      }
3393    ],
3394    "anonymous": false
3395  },
3396  {
3397    "type": "event",
3398    "name": "ConsensusKeysUpdatedV2",
3399    "inputs": [
3400      {
3401        "name": "account",
3402        "type": "address",
3403        "indexed": true,
3404        "internalType": "address"
3405      },
3406      {
3407        "name": "blsVK",
3408        "type": "tuple",
3409        "indexed": false,
3410        "internalType": "struct BN254.G2Point",
3411        "components": [
3412          {
3413            "name": "x0",
3414            "type": "uint256",
3415            "internalType": "BN254.BaseField"
3416          },
3417          {
3418            "name": "x1",
3419            "type": "uint256",
3420            "internalType": "BN254.BaseField"
3421          },
3422          {
3423            "name": "y0",
3424            "type": "uint256",
3425            "internalType": "BN254.BaseField"
3426          },
3427          {
3428            "name": "y1",
3429            "type": "uint256",
3430            "internalType": "BN254.BaseField"
3431          }
3432        ]
3433      },
3434      {
3435        "name": "schnorrVK",
3436        "type": "tuple",
3437        "indexed": false,
3438        "internalType": "struct EdOnBN254.EdOnBN254Point",
3439        "components": [
3440          {
3441            "name": "x",
3442            "type": "uint256",
3443            "internalType": "uint256"
3444          },
3445          {
3446            "name": "y",
3447            "type": "uint256",
3448            "internalType": "uint256"
3449          }
3450        ]
3451      },
3452      {
3453        "name": "blsSig",
3454        "type": "tuple",
3455        "indexed": false,
3456        "internalType": "struct BN254.G1Point",
3457        "components": [
3458          {
3459            "name": "x",
3460            "type": "uint256",
3461            "internalType": "BN254.BaseField"
3462          },
3463          {
3464            "name": "y",
3465            "type": "uint256",
3466            "internalType": "BN254.BaseField"
3467          }
3468        ]
3469      },
3470      {
3471        "name": "schnorrSig",
3472        "type": "bytes",
3473        "indexed": false,
3474        "internalType": "bytes"
3475      }
3476    ],
3477    "anonymous": false
3478  },
3479  {
3480    "type": "event",
3481    "name": "Delegated",
3482    "inputs": [
3483      {
3484        "name": "delegator",
3485        "type": "address",
3486        "indexed": true,
3487        "internalType": "address"
3488      },
3489      {
3490        "name": "validator",
3491        "type": "address",
3492        "indexed": true,
3493        "internalType": "address"
3494      },
3495      {
3496        "name": "amount",
3497        "type": "uint256",
3498        "indexed": false,
3499        "internalType": "uint256"
3500      }
3501    ],
3502    "anonymous": false
3503  },
3504  {
3505    "type": "event",
3506    "name": "ExitEscrowPeriodUpdated",
3507    "inputs": [
3508      {
3509        "name": "newExitEscrowPeriod",
3510        "type": "uint64",
3511        "indexed": false,
3512        "internalType": "uint64"
3513      }
3514    ],
3515    "anonymous": false
3516  },
3517  {
3518    "type": "event",
3519    "name": "Initialized",
3520    "inputs": [
3521      {
3522        "name": "version",
3523        "type": "uint64",
3524        "indexed": false,
3525        "internalType": "uint64"
3526      }
3527    ],
3528    "anonymous": false
3529  },
3530  {
3531    "type": "event",
3532    "name": "MaxCommissionIncreaseUpdated",
3533    "inputs": [
3534      {
3535        "name": "newMaxIncrease",
3536        "type": "uint16",
3537        "indexed": false,
3538        "internalType": "uint16"
3539      }
3540    ],
3541    "anonymous": false
3542  },
3543  {
3544    "type": "event",
3545    "name": "MetadataUriUpdated",
3546    "inputs": [
3547      {
3548        "name": "validator",
3549        "type": "address",
3550        "indexed": true,
3551        "internalType": "address"
3552      },
3553      {
3554        "name": "metadataUri",
3555        "type": "string",
3556        "indexed": false,
3557        "internalType": "string"
3558      }
3559    ],
3560    "anonymous": false
3561  },
3562  {
3563    "type": "event",
3564    "name": "MinCommissionUpdateIntervalUpdated",
3565    "inputs": [
3566      {
3567        "name": "newInterval",
3568        "type": "uint256",
3569        "indexed": false,
3570        "internalType": "uint256"
3571      }
3572    ],
3573    "anonymous": false
3574  },
3575  {
3576    "type": "event",
3577    "name": "MinDelegateAmountUpdated",
3578    "inputs": [
3579      {
3580        "name": "newMinDelegateAmount",
3581        "type": "uint256",
3582        "indexed": false,
3583        "internalType": "uint256"
3584      }
3585    ],
3586    "anonymous": false
3587  },
3588  {
3589    "type": "event",
3590    "name": "OwnershipTransferred",
3591    "inputs": [
3592      {
3593        "name": "previousOwner",
3594        "type": "address",
3595        "indexed": true,
3596        "internalType": "address"
3597      },
3598      {
3599        "name": "newOwner",
3600        "type": "address",
3601        "indexed": true,
3602        "internalType": "address"
3603      }
3604    ],
3605    "anonymous": false
3606  },
3607  {
3608    "type": "event",
3609    "name": "P2pAddrUpdated",
3610    "inputs": [
3611      {
3612        "name": "validator",
3613        "type": "address",
3614        "indexed": true,
3615        "internalType": "address"
3616      },
3617      {
3618        "name": "p2pAddr",
3619        "type": "string",
3620        "indexed": false,
3621        "internalType": "string"
3622      }
3623    ],
3624    "anonymous": false
3625  },
3626  {
3627    "type": "event",
3628    "name": "Paused",
3629    "inputs": [
3630      {
3631        "name": "account",
3632        "type": "address",
3633        "indexed": false,
3634        "internalType": "address"
3635      }
3636    ],
3637    "anonymous": false
3638  },
3639  {
3640    "type": "event",
3641    "name": "RoleAdminChanged",
3642    "inputs": [
3643      {
3644        "name": "role",
3645        "type": "bytes32",
3646        "indexed": true,
3647        "internalType": "bytes32"
3648      },
3649      {
3650        "name": "previousAdminRole",
3651        "type": "bytes32",
3652        "indexed": true,
3653        "internalType": "bytes32"
3654      },
3655      {
3656        "name": "newAdminRole",
3657        "type": "bytes32",
3658        "indexed": true,
3659        "internalType": "bytes32"
3660      }
3661    ],
3662    "anonymous": false
3663  },
3664  {
3665    "type": "event",
3666    "name": "RoleGranted",
3667    "inputs": [
3668      {
3669        "name": "role",
3670        "type": "bytes32",
3671        "indexed": true,
3672        "internalType": "bytes32"
3673      },
3674      {
3675        "name": "account",
3676        "type": "address",
3677        "indexed": true,
3678        "internalType": "address"
3679      },
3680      {
3681        "name": "sender",
3682        "type": "address",
3683        "indexed": true,
3684        "internalType": "address"
3685      }
3686    ],
3687    "anonymous": false
3688  },
3689  {
3690    "type": "event",
3691    "name": "RoleRevoked",
3692    "inputs": [
3693      {
3694        "name": "role",
3695        "type": "bytes32",
3696        "indexed": true,
3697        "internalType": "bytes32"
3698      },
3699      {
3700        "name": "account",
3701        "type": "address",
3702        "indexed": true,
3703        "internalType": "address"
3704      },
3705      {
3706        "name": "sender",
3707        "type": "address",
3708        "indexed": true,
3709        "internalType": "address"
3710      }
3711    ],
3712    "anonymous": false
3713  },
3714  {
3715    "type": "event",
3716    "name": "Undelegated",
3717    "inputs": [
3718      {
3719        "name": "delegator",
3720        "type": "address",
3721        "indexed": true,
3722        "internalType": "address"
3723      },
3724      {
3725        "name": "validator",
3726        "type": "address",
3727        "indexed": true,
3728        "internalType": "address"
3729      },
3730      {
3731        "name": "amount",
3732        "type": "uint256",
3733        "indexed": false,
3734        "internalType": "uint256"
3735      }
3736    ],
3737    "anonymous": false
3738  },
3739  {
3740    "type": "event",
3741    "name": "UndelegatedV2",
3742    "inputs": [
3743      {
3744        "name": "delegator",
3745        "type": "address",
3746        "indexed": true,
3747        "internalType": "address"
3748      },
3749      {
3750        "name": "validator",
3751        "type": "address",
3752        "indexed": true,
3753        "internalType": "address"
3754      },
3755      {
3756        "name": "undelegationId",
3757        "type": "uint64",
3758        "indexed": true,
3759        "internalType": "uint64"
3760      },
3761      {
3762        "name": "amount",
3763        "type": "uint256",
3764        "indexed": false,
3765        "internalType": "uint256"
3766      },
3767      {
3768        "name": "unlocksAt",
3769        "type": "uint256",
3770        "indexed": false,
3771        "internalType": "uint256"
3772      }
3773    ],
3774    "anonymous": false
3775  },
3776  {
3777    "type": "event",
3778    "name": "Unpaused",
3779    "inputs": [
3780      {
3781        "name": "account",
3782        "type": "address",
3783        "indexed": false,
3784        "internalType": "address"
3785      }
3786    ],
3787    "anonymous": false
3788  },
3789  {
3790    "type": "event",
3791    "name": "Upgraded",
3792    "inputs": [
3793      {
3794        "name": "implementation",
3795        "type": "address",
3796        "indexed": true,
3797        "internalType": "address"
3798      }
3799    ],
3800    "anonymous": false
3801  },
3802  {
3803    "type": "event",
3804    "name": "ValidatorExit",
3805    "inputs": [
3806      {
3807        "name": "validator",
3808        "type": "address",
3809        "indexed": true,
3810        "internalType": "address"
3811      }
3812    ],
3813    "anonymous": false
3814  },
3815  {
3816    "type": "event",
3817    "name": "ValidatorExitClaimed",
3818    "inputs": [
3819      {
3820        "name": "delegator",
3821        "type": "address",
3822        "indexed": true,
3823        "internalType": "address"
3824      },
3825      {
3826        "name": "validator",
3827        "type": "address",
3828        "indexed": true,
3829        "internalType": "address"
3830      },
3831      {
3832        "name": "amount",
3833        "type": "uint256",
3834        "indexed": false,
3835        "internalType": "uint256"
3836      }
3837    ],
3838    "anonymous": false
3839  },
3840  {
3841    "type": "event",
3842    "name": "ValidatorExitV2",
3843    "inputs": [
3844      {
3845        "name": "validator",
3846        "type": "address",
3847        "indexed": true,
3848        "internalType": "address"
3849      },
3850      {
3851        "name": "unlocksAt",
3852        "type": "uint256",
3853        "indexed": false,
3854        "internalType": "uint256"
3855      }
3856    ],
3857    "anonymous": false
3858  },
3859  {
3860    "type": "event",
3861    "name": "ValidatorRegistered",
3862    "inputs": [
3863      {
3864        "name": "account",
3865        "type": "address",
3866        "indexed": true,
3867        "internalType": "address"
3868      },
3869      {
3870        "name": "blsVk",
3871        "type": "tuple",
3872        "indexed": false,
3873        "internalType": "struct BN254.G2Point",
3874        "components": [
3875          {
3876            "name": "x0",
3877            "type": "uint256",
3878            "internalType": "BN254.BaseField"
3879          },
3880          {
3881            "name": "x1",
3882            "type": "uint256",
3883            "internalType": "BN254.BaseField"
3884          },
3885          {
3886            "name": "y0",
3887            "type": "uint256",
3888            "internalType": "BN254.BaseField"
3889          },
3890          {
3891            "name": "y1",
3892            "type": "uint256",
3893            "internalType": "BN254.BaseField"
3894          }
3895        ]
3896      },
3897      {
3898        "name": "schnorrVk",
3899        "type": "tuple",
3900        "indexed": false,
3901        "internalType": "struct EdOnBN254.EdOnBN254Point",
3902        "components": [
3903          {
3904            "name": "x",
3905            "type": "uint256",
3906            "internalType": "uint256"
3907          },
3908          {
3909            "name": "y",
3910            "type": "uint256",
3911            "internalType": "uint256"
3912          }
3913        ]
3914      },
3915      {
3916        "name": "commission",
3917        "type": "uint16",
3918        "indexed": false,
3919        "internalType": "uint16"
3920      }
3921    ],
3922    "anonymous": false
3923  },
3924  {
3925    "type": "event",
3926    "name": "ValidatorRegisteredV2",
3927    "inputs": [
3928      {
3929        "name": "account",
3930        "type": "address",
3931        "indexed": true,
3932        "internalType": "address"
3933      },
3934      {
3935        "name": "blsVK",
3936        "type": "tuple",
3937        "indexed": false,
3938        "internalType": "struct BN254.G2Point",
3939        "components": [
3940          {
3941            "name": "x0",
3942            "type": "uint256",
3943            "internalType": "BN254.BaseField"
3944          },
3945          {
3946            "name": "x1",
3947            "type": "uint256",
3948            "internalType": "BN254.BaseField"
3949          },
3950          {
3951            "name": "y0",
3952            "type": "uint256",
3953            "internalType": "BN254.BaseField"
3954          },
3955          {
3956            "name": "y1",
3957            "type": "uint256",
3958            "internalType": "BN254.BaseField"
3959          }
3960        ]
3961      },
3962      {
3963        "name": "schnorrVK",
3964        "type": "tuple",
3965        "indexed": false,
3966        "internalType": "struct EdOnBN254.EdOnBN254Point",
3967        "components": [
3968          {
3969            "name": "x",
3970            "type": "uint256",
3971            "internalType": "uint256"
3972          },
3973          {
3974            "name": "y",
3975            "type": "uint256",
3976            "internalType": "uint256"
3977          }
3978        ]
3979      },
3980      {
3981        "name": "commission",
3982        "type": "uint16",
3983        "indexed": false,
3984        "internalType": "uint16"
3985      },
3986      {
3987        "name": "blsSig",
3988        "type": "tuple",
3989        "indexed": false,
3990        "internalType": "struct BN254.G1Point",
3991        "components": [
3992          {
3993            "name": "x",
3994            "type": "uint256",
3995            "internalType": "BN254.BaseField"
3996          },
3997          {
3998            "name": "y",
3999            "type": "uint256",
4000            "internalType": "BN254.BaseField"
4001          }
4002        ]
4003      },
4004      {
4005        "name": "schnorrSig",
4006        "type": "bytes",
4007        "indexed": false,
4008        "internalType": "bytes"
4009      },
4010      {
4011        "name": "metadataUri",
4012        "type": "string",
4013        "indexed": false,
4014        "internalType": "string"
4015      }
4016    ],
4017    "anonymous": false
4018  },
4019  {
4020    "type": "event",
4021    "name": "ValidatorRegisteredV3",
4022    "inputs": [
4023      {
4024        "name": "account",
4025        "type": "address",
4026        "indexed": true,
4027        "internalType": "address"
4028      },
4029      {
4030        "name": "blsVK",
4031        "type": "tuple",
4032        "indexed": false,
4033        "internalType": "struct BN254.G2Point",
4034        "components": [
4035          {
4036            "name": "x0",
4037            "type": "uint256",
4038            "internalType": "BN254.BaseField"
4039          },
4040          {
4041            "name": "x1",
4042            "type": "uint256",
4043            "internalType": "BN254.BaseField"
4044          },
4045          {
4046            "name": "y0",
4047            "type": "uint256",
4048            "internalType": "BN254.BaseField"
4049          },
4050          {
4051            "name": "y1",
4052            "type": "uint256",
4053            "internalType": "BN254.BaseField"
4054          }
4055        ]
4056      },
4057      {
4058        "name": "schnorrVK",
4059        "type": "tuple",
4060        "indexed": false,
4061        "internalType": "struct EdOnBN254.EdOnBN254Point",
4062        "components": [
4063          {
4064            "name": "x",
4065            "type": "uint256",
4066            "internalType": "uint256"
4067          },
4068          {
4069            "name": "y",
4070            "type": "uint256",
4071            "internalType": "uint256"
4072          }
4073        ]
4074      },
4075      {
4076        "name": "commission",
4077        "type": "uint16",
4078        "indexed": false,
4079        "internalType": "uint16"
4080      },
4081      {
4082        "name": "blsSig",
4083        "type": "tuple",
4084        "indexed": false,
4085        "internalType": "struct BN254.G1Point",
4086        "components": [
4087          {
4088            "name": "x",
4089            "type": "uint256",
4090            "internalType": "BN254.BaseField"
4091          },
4092          {
4093            "name": "y",
4094            "type": "uint256",
4095            "internalType": "BN254.BaseField"
4096          }
4097        ]
4098      },
4099      {
4100        "name": "schnorrSig",
4101        "type": "bytes",
4102        "indexed": false,
4103        "internalType": "bytes"
4104      },
4105      {
4106        "name": "metadataUri",
4107        "type": "string",
4108        "indexed": false,
4109        "internalType": "string"
4110      },
4111      {
4112        "name": "x25519Key",
4113        "type": "bytes32",
4114        "indexed": false,
4115        "internalType": "bytes32"
4116      },
4117      {
4118        "name": "p2pAddr",
4119        "type": "string",
4120        "indexed": false,
4121        "internalType": "string"
4122      }
4123    ],
4124    "anonymous": false
4125  },
4126  {
4127    "type": "event",
4128    "name": "Withdrawal",
4129    "inputs": [
4130      {
4131        "name": "account",
4132        "type": "address",
4133        "indexed": true,
4134        "internalType": "address"
4135      },
4136      {
4137        "name": "amount",
4138        "type": "uint256",
4139        "indexed": false,
4140        "internalType": "uint256"
4141      }
4142    ],
4143    "anonymous": false
4144  },
4145  {
4146    "type": "event",
4147    "name": "WithdrawalClaimed",
4148    "inputs": [
4149      {
4150        "name": "delegator",
4151        "type": "address",
4152        "indexed": true,
4153        "internalType": "address"
4154      },
4155      {
4156        "name": "validator",
4157        "type": "address",
4158        "indexed": true,
4159        "internalType": "address"
4160      },
4161      {
4162        "name": "undelegationId",
4163        "type": "uint64",
4164        "indexed": true,
4165        "internalType": "uint64"
4166      },
4167      {
4168        "name": "amount",
4169        "type": "uint256",
4170        "indexed": false,
4171        "internalType": "uint256"
4172      }
4173    ],
4174    "anonymous": false
4175  },
4176  {
4177    "type": "event",
4178    "name": "X25519KeyUpdated",
4179    "inputs": [
4180      {
4181        "name": "validator",
4182        "type": "address",
4183        "indexed": true,
4184        "internalType": "address"
4185      },
4186      {
4187        "name": "x25519Key",
4188        "type": "bytes32",
4189        "indexed": false,
4190        "internalType": "bytes32"
4191      }
4192    ],
4193    "anonymous": false
4194  },
4195  {
4196    "type": "error",
4197    "name": "AccessControlBadConfirmation",
4198    "inputs": []
4199  },
4200  {
4201    "type": "error",
4202    "name": "AccessControlUnauthorizedAccount",
4203    "inputs": [
4204      {
4205        "name": "account",
4206        "type": "address",
4207        "internalType": "address"
4208      },
4209      {
4210        "name": "neededRole",
4211        "type": "bytes32",
4212        "internalType": "bytes32"
4213      }
4214    ]
4215  },
4216  {
4217    "type": "error",
4218    "name": "AddressEmptyCode",
4219    "inputs": [
4220      {
4221        "name": "target",
4222        "type": "address",
4223        "internalType": "address"
4224      }
4225    ]
4226  },
4227  {
4228    "type": "error",
4229    "name": "BLSSigIsInfinity",
4230    "inputs": []
4231  },
4232  {
4233    "type": "error",
4234    "name": "BLSSigVerificationFailed",
4235    "inputs": []
4236  },
4237  {
4238    "type": "error",
4239    "name": "BLSVKIsInfinity",
4240    "inputs": []
4241  },
4242  {
4243    "type": "error",
4244    "name": "BN254PairingProdFailed",
4245    "inputs": []
4246  },
4247  {
4248    "type": "error",
4249    "name": "BlsKeyAlreadyUsed",
4250    "inputs": []
4251  },
4252  {
4253    "type": "error",
4254    "name": "CommissionAlreadyInitialized",
4255    "inputs": [
4256      {
4257        "name": "validator",
4258        "type": "address",
4259        "internalType": "address"
4260      }
4261    ]
4262  },
4263  {
4264    "type": "error",
4265    "name": "CommissionIncreaseExceedsMax",
4266    "inputs": []
4267  },
4268  {
4269    "type": "error",
4270    "name": "CommissionUnchanged",
4271    "inputs": []
4272  },
4273  {
4274    "type": "error",
4275    "name": "CommissionUpdateTooSoon",
4276    "inputs": []
4277  },
4278  {
4279    "type": "error",
4280    "name": "DefaultAdminCannotBeRenounced",
4281    "inputs": []
4282  },
4283  {
4284    "type": "error",
4285    "name": "DefaultAdminCannotBeRevoked",
4286    "inputs": []
4287  },
4288  {
4289    "type": "error",
4290    "name": "DelegateAmountTooSmall",
4291    "inputs": []
4292  },
4293  {
4294    "type": "error",
4295    "name": "DeprecatedFunction",
4296    "inputs": []
4297  },
4298  {
4299    "type": "error",
4300    "name": "ERC1967InvalidImplementation",
4301    "inputs": [
4302      {
4303        "name": "implementation",
4304        "type": "address",
4305        "internalType": "address"
4306      }
4307    ]
4308  },
4309  {
4310    "type": "error",
4311    "name": "ERC1967NonPayable",
4312    "inputs": []
4313  },
4314  {
4315    "type": "error",
4316    "name": "EnforcedPause",
4317    "inputs": []
4318  },
4319  {
4320    "type": "error",
4321    "name": "ExitEscrowPeriodInvalid",
4322    "inputs": []
4323  },
4324  {
4325    "type": "error",
4326    "name": "ExpectedPause",
4327    "inputs": []
4328  },
4329  {
4330    "type": "error",
4331    "name": "FailedInnerCall",
4332    "inputs": []
4333  },
4334  {
4335    "type": "error",
4336    "name": "InitialActiveStakeExceedsBalance",
4337    "inputs": []
4338  },
4339  {
4340    "type": "error",
4341    "name": "InsufficientAllowance",
4342    "inputs": [
4343      {
4344        "name": "",
4345        "type": "uint256",
4346        "internalType": "uint256"
4347      },
4348      {
4349        "name": "",
4350        "type": "uint256",
4351        "internalType": "uint256"
4352      }
4353    ]
4354  },
4355  {
4356    "type": "error",
4357    "name": "InsufficientBalance",
4358    "inputs": [
4359      {
4360        "name": "",
4361        "type": "uint256",
4362        "internalType": "uint256"
4363      }
4364    ]
4365  },
4366  {
4367    "type": "error",
4368    "name": "InvalidCommission",
4369    "inputs": []
4370  },
4371  {
4372    "type": "error",
4373    "name": "InvalidG1",
4374    "inputs": []
4375  },
4376  {
4377    "type": "error",
4378    "name": "InvalidInitialization",
4379    "inputs": []
4380  },
4381  {
4382    "type": "error",
4383    "name": "InvalidMetadataUriLength",
4384    "inputs": []
4385  },
4386  {
4387    "type": "error",
4388    "name": "InvalidP2pAddr",
4389    "inputs": []
4390  },
4391  {
4392    "type": "error",
4393    "name": "InvalidRateLimitParameters",
4394    "inputs": []
4395  },
4396  {
4397    "type": "error",
4398    "name": "InvalidSchnorrSig",
4399    "inputs": []
4400  },
4401  {
4402    "type": "error",
4403    "name": "InvalidSchnorrVK",
4404    "inputs": []
4405  },
4406  {
4407    "type": "error",
4408    "name": "InvalidX25519Key",
4409    "inputs": []
4410  },
4411  {
4412    "type": "error",
4413    "name": "MinDelegateAmountTooSmall",
4414    "inputs": []
4415  },
4416  {
4417    "type": "error",
4418    "name": "NoUndelegationFound",
4419    "inputs": []
4420  },
4421  {
4422    "type": "error",
4423    "name": "NotInitializing",
4424    "inputs": []
4425  },
4426  {
4427    "type": "error",
4428    "name": "NothingToWithdraw",
4429    "inputs": []
4430  },
4431  {
4432    "type": "error",
4433    "name": "OwnableInvalidOwner",
4434    "inputs": [
4435      {
4436        "name": "owner",
4437        "type": "address",
4438        "internalType": "address"
4439      }
4440    ]
4441  },
4442  {
4443    "type": "error",
4444    "name": "OwnableUnauthorizedAccount",
4445    "inputs": [
4446      {
4447        "name": "account",
4448        "type": "address",
4449        "internalType": "address"
4450      }
4451    ]
4452  },
4453  {
4454    "type": "error",
4455    "name": "OwnershipCannotBeRenounced",
4456    "inputs": []
4457  },
4458  {
4459    "type": "error",
4460    "name": "PowPrecompileFailed",
4461    "inputs": []
4462  },
4463  {
4464    "type": "error",
4465    "name": "PrematureWithdrawal",
4466    "inputs": []
4467  },
4468  {
4469    "type": "error",
4470    "name": "SchnorrKeyAlreadyUsed",
4471    "inputs": []
4472  },
4473  {
4474    "type": "error",
4475    "name": "UUPSUnauthorizedCallContext",
4476    "inputs": []
4477  },
4478  {
4479    "type": "error",
4480    "name": "UUPSUnsupportedProxiableUUID",
4481    "inputs": [
4482      {
4483        "name": "slot",
4484        "type": "bytes32",
4485        "internalType": "bytes32"
4486      }
4487    ]
4488  },
4489  {
4490    "type": "error",
4491    "name": "UndelegationAlreadyExists",
4492    "inputs": []
4493  },
4494  {
4495    "type": "error",
4496    "name": "ValidatorAlreadyExited",
4497    "inputs": []
4498  },
4499  {
4500    "type": "error",
4501    "name": "ValidatorAlreadyRegistered",
4502    "inputs": []
4503  },
4504  {
4505    "type": "error",
4506    "name": "ValidatorInactive",
4507    "inputs": []
4508  },
4509  {
4510    "type": "error",
4511    "name": "ValidatorNotExited",
4512    "inputs": []
4513  },
4514  {
4515    "type": "error",
4516    "name": "X25519KeyAlreadyUsed",
4517    "inputs": []
4518  },
4519  {
4520    "type": "error",
4521    "name": "ZeroAddress",
4522    "inputs": []
4523  },
4524  {
4525    "type": "error",
4526    "name": "ZeroAmount",
4527    "inputs": []
4528  }
4529]
4530```*/
4531#[allow(
4532    non_camel_case_types,
4533    non_snake_case,
4534    clippy::pub_underscore_fields,
4535    clippy::style,
4536    clippy::empty_structs_with_brackets
4537)]
4538pub mod StakeTableV3 {
4539    use super::*;
4540    use alloy::sol_types as alloy_sol_types;
4541    /// The creation / init bytecode of the contract.
4542    ///
4543    /// ```text
4544    ///0x60a060405230608052348015610013575f5ffd5b5061001c610039565b610024610039565b61002c610039565b610034610039565b6100eb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100895760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614cb86101115f395f81816129b1015281816129da0152612e680152614cb85ff3fe6080604052600436106103c9575f3560e01c80636ad28e9f116101f4578063b3e6ebd511610113578063d9cc7d26116100a8578063e63ab1e911610078578063e63ab1e914610bcb578063f2fde38b14610beb578063f6777a1014610c0a578063fa52c7d814610c24578063fc0c546a14610c67575f5ffd5b8063d9cc7d2614610b6c578063e3f237e614610b81578063e4d1fb9414610ba0578063e62977f814610bb6575f5ffd5b8063bd49c35f116100e3578063bd49c35f14610ae3578063be20309414610af8578063c64814dd14610b17578063d547741f14610b4d575f5ffd5b8063b3e6ebd514610a27578063b5700e6814610a55578063b5ecb34414610a74578063bb60bfb014610a9f575f5ffd5b80639e9a8f3111610189578063a2d78dd511610159578063a2d78dd51461095a578063a3066aab146109ac578063ac5c2ad0146109cb578063ad3cb1cc146109ea575f5ffd5b80639e9a8f31146108c05780639ec9c138146108d55780639ffb6b43146108f4578063a217fddf14610947575f5ffd5b8063870c8f26116101c4578063870c8f26146108375780638da5cb5b1461085657806391d14854146108825780639b30a5e6146108a1575f5ffd5b80636ad28e9f146107cc578063715018a6146107fa57806372e9c9341461080e5780638456cb5914610823575f5ffd5b8063394b348f116102eb57806352780b6e116102805780635c975abb116102505780635c975abb146107335780635f8754a614610756578063617066e5146107845780636887cd36146107995780636a911ccf146107b8575f5ffd5b806352780b6e146106b857806352d1902d146106d75780635544c2f1146106eb5780635a2f51fd14610705575f5ffd5b80633f3bb366116102bb5780633f3bb366146106455780633f4ba83a146106725780634d99dd16146106865780634f1ef286146106a5575f5ffd5b8063394b348f146105d45780633b2b7ffa146105f35780633e732eba146106125780633e9df9b514610631575f5ffd5b80632140fecd116103615780632f2ff15d116103315780632f2ff15d1461056d5780632fe287591461058c57806336568abe146105a157806338e454b1146105c0575f5ffd5b80632140fecd146104e8578063248a9ca3146105075780632b9e5c8a146105345780632dc9bac61461054e575f5ffd5b80630d8e6e2c1161039c5780630d8e6e2c1461046057806313b9057a1461048b57806315f31835146104aa5780631a20cd63146104c9575f5ffd5b806301ffc9a7146103cd578063026e402b14610401578063073d25fc146104225780630cb2976414610441575b5f5ffd5b3480156103d8575f5ffd5b506103ec6103e736600461403d565b610c86565b60405190151581526020015b60405180910390f35b34801561040c575f5ffd5b5061042061041b36600461407f565b610cbc565b005b34801561042d575f5ffd5b5061042061043c3660046140a7565b610ea2565b34801561044c575f5ffd5b5061042061045b366004614189565b610f42565b34801561046b575f5ffd5b5060408051600381525f60208201819052918101919091526060016103f8565b348015610496575f5ffd5b506104206104a536600461426c565b61102d565b3480156104b5575f5ffd5b506104206104c43660046142c2565b611046565b3480156104d4575f5ffd5b506104206104e33660046142fb565b61127c565b3480156104f3575f5ffd5b50610420610502366004614321565b611310565b348015610512575f5ffd5b506105266105213660046140a7565b611460565b6040519081526020016103f8565b34801561053f575f5ffd5b506104206104a536600461433a565b348015610559575f5ffd5b506104206105683660046143e3565b611480565b348015610578575f5ffd5b506104206105873660046143fc565b611504565b348015610597575f5ffd5b5061052661080081565b3480156105ac575f5ffd5b506104206105bb3660046143fc565b611520565b3480156105cb575f5ffd5b50610420611548565b3480156105df575f5ffd5b506104206105ee3660046140a7565b6115eb565b3480156105fe575f5ffd5b5061042061060d3660046143e3565b61165a565b34801561061d575f5ffd5b5061042061062c3660046140a7565b6117c6565b34801561063c575f5ffd5b506105265f5481565b348015610650575f5ffd5b50600a5461065f9061ffff1681565b60405161ffff90911681526020016103f8565b34801561067d575f5ffd5b50610420611827565b348015610691575f5ffd5b506104206106a036600461407f565b611849565b6104206106b3366004614426565b611aba565b3480156106c3575f5ffd5b506104206106d236600461445a565b611ad5565b3480156106e2575f5ffd5b50610526611c87565b3480156106f6575f5ffd5b506104206104a53660046144f0565b348015610710575f5ffd5b506103ec61071f3660046140a7565b60116020525f908152604090205460ff1681565b34801561073e575f5ffd5b505f516020614c6c5f395f51905f525460ff166103ec565b348015610761575f5ffd5b506103ec6107703660046140a7565b600e6020525f908152604090205460ff1681565b34801561078f575f5ffd5b5061052661020081565b3480156107a4575f5ffd5b506104206107b3366004614534565b611ca2565b3480156107c3575f5ffd5b50610420611f0e565b3480156107d7575f5ffd5b506107e26202a30081565b6040516001600160401b0390911681526020016103f8565b348015610805575f5ffd5b50610420611fce565b348015610819575f5ffd5b50610526600c5481565b34801561082e575f5ffd5b50610420611fef565b348015610842575f5ffd5b506104206108513660046142c2565b61200e565b348015610861575f5ffd5b5061086a612062565b6040516001600160a01b0390911681526020016103f8565b34801561088d575f5ffd5b506103ec61089c3660046143fc565b612090565b3480156108ac575f5ffd5b506105266108bb366004614612565b6120c6565b3480156108cb575f5ffd5b5061052660085481565b3480156108e0575f5ffd5b506104206108ef3660046142c2565b612120565b3480156108ff575f5ffd5b5061092d61090e366004614321565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016103f8565b348015610952575f5ffd5b506105265f81565b348015610965575f5ffd5b5061099761097436600461462c565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103f8565b3480156109b7575f5ffd5b506104206109c6366004614321565b612173565b3480156109d6575f5ffd5b506104206109e5366004614654565b6122d8565b3480156109f5575f5ffd5b50610a1a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103f891906146f1565b348015610a32575f5ffd5b506103ec610a413660046140a7565b60046020525f908152604090205460ff1681565b348015610a60575f5ffd5b5060015461086a906001600160a01b031681565b348015610a7f575f5ffd5b50610526610a8e366004614321565b60056020525f908152604090205481565b348015610aaa575f5ffd5b50610abe610ab936600461462c565b612402565b604080516001600160401b0390941684526020840192909252908201526060016103f8565b348015610aee575f5ffd5b50610526600b5481565b348015610b03575f5ffd5b50610420610b12366004614703565b612493565b348015610b22575f5ffd5b50610526610b3136600461462c565b600660209081525f928352604080842090915290825290205481565b348015610b58575f5ffd5b50610420610b673660046143fc565b612597565b348015610b77575f5ffd5b5061052660095481565b348015610b8c575f5ffd5b50610420610b9b3660046142c2565b6125bf565b348015610bab575f5ffd5b506107e26212750081565b348015610bc1575f5ffd5b5061065f61271081565b348015610bd6575f5ffd5b506105265f516020614c2c5f395f51905f5281565b348015610bf6575f5ffd5b50610420610c05366004614321565b6125e4565b348015610c15575f5ffd5b506105266013600160ff1b0381565b348015610c2f575f5ffd5b50610c59610c3e366004614321565b60036020525f90815260409020805460019091015460ff1682565b6040516103f8929190614756565b348015610c72575f5ffd5b5060025461086a906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610cb657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610cc461266c565b610ccd8261269e565b335f829003610cef57604051631f2a200560e01b815260040160405180910390fd5b600c54821015610d1257604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610d60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d849190614786565b905082811015610db65760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610dce906001600160a01b031683308661271f565b6001600160a01b0384165f9081526003602052604081208054859290610df59084906147b1565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610e309084906147b1565b9250508190555082600b5f828254610e4891906147b1565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610e9491815260200190565b60405180910390a350505050565b610eaa61266c565b610eb33361269e565b610ebc816127bc565b5f8181526011602052604090205460ff1615610eeb57604051632c8d903b60e21b815260040160405180910390fd5b5f8181526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610f379084815260200190565b60405180910390a250565b610f4a61266c565b610f533361269e565b610f5c826127bc565b5f8281526011602052604090205460ff1615610f8b57604051632c8d903b60e21b815260040160405180910390fd5b610f9481611046565b5f8281526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610fe09085815260200190565b60405180910390a2336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb228260405161102191906146f1565b60405180910390a25050565b60405163c2d7f81360e01b815260040160405180910390fd5b805181901580159061105b5750610200815111155b61107857604051631e5e435f60e21b815260040160405180910390fd5b80515f19905b80156110dd57826110906001836147c4565b815181106110a0576110a06147d7565b01602001516001600160f81b031916601d60f91b036110cb576110c46001826147c4565b91506110dd565b806110d5816147eb565b91505061107e565b505f1981141580156110ee57505f81115b61110b57604051631e5e435f60e21b815260040160405180910390fd5b5f600182845161111b91906147c4565b61112591906147c4565b90505f81118015611137575060058111155b61115457604051631e5e435f60e21b815260040160405180910390fd5b5f806111618460016147b1565b90505b84518110156111ea575f858281518110611180576111806147d7565b016020015160f81c90506030811080159061119f575060398160ff1611155b6111bc57604051631e5e435f60e21b815260040160405180910390fd5b6111c7603082614800565b60ff166111d584600a614819565b6111df91906147b1565b925050600101611164565b506001821180156112295750836112028460016147b1565b81518110611212576112126147d7565b6020910101516001600160f81b031916600360fc1b145b1561124757604051631e5e435f60e21b815260040160405180910390fd5b5f81118015611258575061ffff8111155b61127557604051631e5e435f60e21b815260040160405180910390fd5b5050505050565b5f61128681612833565b6202a3006001600160401b03831610806112ab5750621275006001600160401b038316115b156112c95760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b61131861266c565b6001600160a01b0381165f908152600560205260408120543391819003611352576040516379298a5360e11b815260040160405180910390fd5b8042101561137357604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938616835292905290812054908190036113bb57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f8181526006602090815260408083209488168352938152838220829055918152600390915290812080548392906113ff9084906147c4565b909155505060025461141b906001600160a01b0316848361283d565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610e9491815260200190565b5f9081525f516020614c4c5f395f51905f52602052604090206001015490565b5f61148a81612833565b5f8261ffff161180156114a3575061271061ffff831611155b6114c05760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001611304565b8161151657611512816125e4565b5050565b61151282826128c6565b8161153e57604051638b78631d60e01b815260040160405180910390fd5b61151282826128e2565b611550612915565b5f516020614c8c5f395f51905f52805460039190600160401b900460ff1680611586575080546001600160401b03808416911610155b156115a45760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b038316908117600160401b1760ff60401b191682556040519081525f516020614bec5f395f51905f5290602001611304565b5f6115f581612833565b5f8211801561160857506301e133808211155b6116255760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001611304565b61166261266c565b3361166c8161269e565b61271061ffff831611156116935760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff9081169084168190036116d557604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff16111561176157600182015480158061170357506009546116ff90826147b1565b4210155b611720576040516316eb94cb60e01b815260040160405180910390fd5b600a546117319061ffff1683614830565b61ffff168561ffff161115611759576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f6117d081612833565b60018210156117f25760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001611304565b5f516020614c2c5f395f51905f5261183e81612833565b611846612947565b50565b61185161266c565b61185a8261269e565b335f82900361187c57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156118bf5760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561190857604051639266535160e01b815260048101829052602401610dad565b600f80545f916001600160401b0390911690826119248361484a565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f82825461199d91906147c4565b90915550506008545f906119b190426147b1565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611a419084906147c4565b9250508190555084600b5f828254611a5991906147c4565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611ac26129a6565b611acb82612a4a565b6115128282612a54565b611add612915565b5f516020614c8c5f395f51905f52805460029190600160401b900460ff1680611b13575080546001600160401b03808416911610155b15611b315760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b038616611b795760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038716611ba05760405163d92e233d60e01b815260040160405180910390fd5b611ba8612b10565b611bb0612b18565b611bc75f516020614c2c5f395f51905f5288612b28565b50611bd25f87612b28565b505f611bdc612062565b9050806001600160a01b0316876001600160a01b031614611c0057611c0087612bc9565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c55611c408585612c39565b611c4986612dce565b50805460ff60401b191681556040516001600160401b03831681525f516020614bec5f395f51905f529060200160405180910390a150505050505050565b5f611c90612e5d565b505f516020614c0c5f395f51905f5290565b611caa61266c565b33611cb481612ea6565b611cbd88612ef3565b611cc78989612f86565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cf981898c612fff565b8651604014611d1b57604051634247068760e01b815260040160405180910390fd5b61271061ffff87161115611d425760405163dc81db8560e01b815260040160405180910390fd5b611d4b856125bf565b611d54846127bc565b5f8481526011602052604090205460ff1615611d8357604051632c8d903b60e21b815260040160405180910390fd5b611d8c83611046565b600160045f611d9a8d6120c6565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611dcb8c613108565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115611e1257611e12614742565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e5857611e58614742565b02179055505060408051808201825261ffff89811682525f60208084018281526001600160a01b038916808452600d83528684209551865461ffff191695169490941785555160019485015589825260119052839020805460ff191690921790915590519091507fbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec1490611efa908d908d908b908e908e908d908d908d90614874565b60405180910390a250505050505050505050565b611f1661266c565b33611f208161269e565b6001600160a01b0381165f908152600360205260408120600101805460ff19166002179055600854611f5290426147b1565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b80549394509092909190611f8e9084906147c4565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab90602001611021565b611fd6612915565b6040516317d5c96560e11b815260040160405180910390fd5b5f516020614c2c5f395f51905f5261200681612833565b61184661312c565b61201661266c565b336120208161269e565b612029826125bf565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c348360405161102191906146f1565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f516020614c4c5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001612103949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b61212861266c565b6121313361269e565b61213a81611046565b336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb2282604051610f3791906146f1565b61217b61266c565b6001600160a01b0381165f90815260076020908152604080832033808552925282205490918190036121c057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209386168352929052206001015442101561220857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b039091169161227b9116848461283d565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522856040516122ca91815260200190565b60405180910390a450505050565b6122e061266c565b336122ea8161269e565b6122f384612ef3565b6122fd8585612f86565b604080516001600160a01b03831660208201525f9101604051602081830303815290604052905061232f818588612fff565b825160401461235157604051634247068760e01b815260040160405180910390fd5b600160045f61235f896120c6565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61239088613108565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5878787876040516123f29493929190614919565b60405180910390a2505050505050565b6001600160a01b038083165f9081526007602090815260408083209385168352929052908120805482918291820361244d57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f516020614c8c5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156124c45750825b90505f826001600160401b031660011480156124df5750303b155b9050811580156124ed575080155b1561250b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561253557845460ff60401b1916600160401b1785555b61253e86613174565b612546612b10565b61254e613185565b612559898989613263565b831561258c57845460ff60401b19168555604051600181525f516020614bec5f395f51905f529060200160405180910390a15b505050505050505050565b816125b55760405163b0b5fb9960e01b815260040160405180910390fd5b611512828261330e565b80516108008111156115125760405163239ff57f60e01b815260040160405180910390fd5b5f6125ee81612833565b6001600160a01b03821661261757604051631e4fbdf760e01b81525f6004820152602401610dad565b5f612620612062565b9050826001600160a01b0316816001600160a01b031603612649576126448361332a565b505050565b6126535f846128c6565b61265c8361332a565b6126665f82613364565b50505050565b5f516020614c6c5f395f51905f525460ff161561269c5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff16908160028111156126cf576126cf614742565b036126ed5760405163508a793f60e01b815260040160405180910390fd5b600281600281111561270157612701614742565b036115125760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156127785750833b153d17155b806112755760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610dad565b5f60205b801561280057826127d26001836147c4565b602081106127e2576127e26147d7565b1a60089290921b9190911790806127f8816147eb565b9150506127c0565b50801580159061281657506013600160ff1b0381105b61151257604051633e4ba13f60e01b815260040160405180910390fd5b61184681336133dd565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156128875750823b153d17155b806126665760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610dad565b6128cf82611460565b6128d881612833565b6126668383612b28565b6001600160a01b038116331461290b5760405163334bd91960e11b815260040160405180910390fd5b6126448282613364565b3361291e612062565b6001600160a01b03161461269c5760405163118cdaa760e01b8152336004820152602401610dad565b61294f613416565b5f516020614c6c5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a2c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a205f516020614c0c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561269c5760405163703e46dd60e11b815260040160405180910390fd5b5f61151281612833565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612aae575060408051601f3d908101601f19168201909252612aab91810190614786565b60015b612ad657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610dad565b5f516020614c0c5f395f51905f528114612b0657604051632a87526960e21b815260048101829052602401610dad565b6126448383613445565b61269c61349a565b612b2061349a565b61269c6134d0565b5f5f516020614c4c5f395f51905f52612b418484612090565b612bc0575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612b763390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cb6565b5f915050610cb6565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015612644575f838383818110612c5657612c566147d7565b612c6c9260206040909202019081019150614321565b90505f848484818110612c8157612c816147d7565b9050604002016020016020810190612c9991906143e3565b905061271061ffff82161115612cc25760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff1690816002811115612cf357612cf3614742565b03612d115760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d6020526040902060010154158015612d5257506001600160a01b0383165f908152600d602052604090205461ffff16155b8390612d7d5760405163050814e160e41b81526001600160a01b039091166004820152602401610dad565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612c3b565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612e14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e389190614786565b811115612e5857604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461269c5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115612ed557612ed5614742565b146118465760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111580612f4757507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b15612f65576040516306cf438f60e01b815260040160405180910390fd5b80515f03611846576040516306cf438f60e01b815260040160405180910390fd5b60045f612f92846120c6565b815260208101919091526040015f205460ff1615612fc25760405162da8a5760e11b815260040160405180910390fd5b600e5f612fce83613108565b815260208101919091526040015f205460ff16156115125760405163ae493b0360e01b815260040160405180910390fd5b81516020830151159015161561302857604051633a13919960e11b815260040160405180910390fd5b805115801561303957506020810151155b801561304757506040810151155b801561305557506060810151155b1561307357604051635e4362cd60e11b815260040160405180910390fd5b61307c826134f0565b5f604051806060016040528060248152602001614ba86024913990505f84826040516020016130ac929190614996565b60405160208183030381529060405290505f6130c782613557565b90506130e481856130d788613644565b6130df6136bb565b613788565b6131005760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001612103929190918252602082015260400190565b61313461266c565b5f516020614c6c5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612988565b61317c61349a565b61184681613837565b5f516020614c8c5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156131b65750825b90505f826001600160401b031660011480156131d15750303b155b9050811580156131df575080155b156131fd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561322757845460ff60401b1916600160401b1785555b435f55831561127557845460ff60401b19168555604051600181525f516020614bec5f395f51905f529060200160405180910390a15050505050565b6001600160a01b03831661328a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166132b15760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156133065760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b61331782611460565b61332081612833565b6126668383613364565b613332612915565b6001600160a01b03811661335b57604051631e4fbdf760e01b81525f6004820152602401610dad565b61184681612bc9565b5f5f516020614c4c5f395f51905f5261337d8484612090565b15612bc0575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cb6565b6133e78282612090565b6115125760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610dad565b5f516020614c6c5f395f51905f525460ff1661269c57604051638dfc202b60e01b815260040160405180910390fd5b61344e8261383f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156134925761264482826138a2565b611512613914565b5f516020614c8c5f395f51905f5254600160401b900460ff1661269c57604051631afcd79f60e31b815260040160405180910390fd5b6134d861349a565b5f516020614c6c5f395f51905f52805460ff19169055565b805160208201515f915f516020614bcc5f395f51905f5291159015161561351657505050565b8251602084015182600384858586098509088382830914838210848410161693505050816126445760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f61357483613933565b90505f516020614bcc5f395f51905f5260035f828485099050828061359b5761359b6149aa565b848209905082806135ae576135ae6149aa565b82820890505f5f6135be83613b3b565b925090505b806136275784806135d6576135d66149aa565b60018708955084806135ea576135ea6149aa565b868709925084806135fd576135fd6149aa565b86840992508480613610576136106149aa565b848408925061361e83613b3b565b925090506135c3565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f808252602082015281516020830151159015161561366b575090565b6040518060400160405280835f015181526020015f516020614bcc5f395f51905f52846020015161369c91906149be565b6136b3905f516020614bcc5f395f51905f526147c4565b905292915050565b6136e260405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061382b5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b61333261349a565b806001600160a01b03163b5f0361387457604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610dad565b5f516020614c0c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516138be91906149dd565b5f60405180830381855af49150503d805f81146138f6576040519150601f19603f3d011682016040523d82523d5f602084013e6138fb565b606091505b509150915061390b858383613c03565b95945050505050565b341561269c5760405163b398979f60e01b815260040160405180910390fd5b5f5f61393e83613c62565b805190915060308114613953576139536149e8565b5f816001600160401b0381111561396c5761396c6140be565b6040519080825280601f01601f191660200182016040528015613996576020820181803683370190505b5090505f5b82811015613a05578360016139b083866147c4565b6139ba91906147c4565b815181106139ca576139ca6147d7565b602001015160f81c60f81b8282815181106139e7576139e76147d7565b60200101906001600160f81b03191690815f1a90535060010161399b565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015613a95578381613a4185886147c4565b613a4b91906147b1565b81518110613a5b57613a5b6147d7565b602001015160f81c60f81b60f81c828281518110613a7b57613a7b6147d7565b60ff90921660209283029190910190910152600101613a2d565b505f613aa082613fad565b90506101005f516020614bcc5f395f51905f525f613abe86896147c4565b90505f5b81811015613b2b575f886001613ad884866147c4565b613ae291906147c4565b81518110613af257613af26147d7565b016020015160f81c90508380613b0a57613b0a6149aa565b85870995508380613b1d57613b1d6149aa565b818708955050600101613ac2565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020614bcc5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083613bc957604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613be257613bdf83826147c4565b92505b8080613bf057613bf06149aa565b8384099690961496919550909350505050565b606082613c1857613c1382614014565b613c5b565b8151158015613c2f57506001600160a01b0384163b155b15613c5857604051639996b31560e01b81526001600160a01b0385166004820152602401610dad565b50805b9392505050565b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001613ca2929190614996565b6040516020818303038152906040529050808460f81b604051602001613cc99291906149fc565b604051602081830303815290604052905080604051602001613ceb9190614a26565b60408051601f1981840301815290829052915061010160f01b90613d159083908390602001614a3e565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b03811115613d8457613d846140be565b6040519080825280601f01601f191660200182016040528015613dae576020820181803683370190505b5090505f82604051602001613dc591815260200190565b60408051601f1981840301815291905290505f5b8151811015613e2f57818181518110613df457613df46147d7565b602001015160f81c60f81b838281518110613e1157613e116147d7565b60200101906001600160f81b03191690815f1a905350600101613dd9565b505f84604051602001613e4491815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613ed6575f838281518110613e7d57613e7d6147d7565b602001015160f81c60f81b838381518110613e9a57613e9a6147d7565b602001015160f81c60f81b1890508881604051602001613ebb929190614a62565b60408051601f19818403018152919052985050600101613e62565b50868887604051602001613eec93929190614a86565b60405160208183030381529060405296508680519060200120935083604051602001613f1a91815260200190565b60408051601f1981840301815291905291505f5b613f3b8a60ff8d166147c4565b811015613f9c57828181518110613f5457613f546147d7565b01602001516001600160f81b03191684613f6e838d6147b1565b81518110613f7e57613f7e6147d7565b60200101906001600160f81b03191690815f1a905350600101613f2e565b50919b9a5050505050505050505050565b5f80805b835181101561400d57838181518110613fcc57613fcc6147d7565b602002602001015160ff16816008613fe49190614819565b613fef906002614b9c565b613ff99190614819565b61400390836147b1565b9150600101613fb1565b5092915050565b8051156140245780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f6020828403121561404d575f5ffd5b81356001600160e01b031981168114613c5b575f5ffd5b80356001600160a01b038116811461407a575f5ffd5b919050565b5f5f60408385031215614090575f5ffd5b61409983614064565b946020939093013593505050565b5f602082840312156140b7575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156140f4576140f46140be565b60405290565b5f82601f830112614109575f5ffd5b8135602083015f5f6001600160401b03841115614128576141286140be565b50604051601f19601f85018116603f011681018181106001600160401b0382111715614156576141566140be565b60405283815290508082840187101561416d575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f6040838503121561419a575f5ffd5b8235915060208301356001600160401b038111156141b6575f5ffd5b6141c2858286016140fa565b9150509250929050565b5f608082840312156141dc575f5ffd5b604051608081016001600160401b03811182821017156141fe576141fe6140be565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561423c575f5ffd5b6142446140d2565b823581526020928301359281019290925250919050565b803561ffff8116811461407a575f5ffd5b5f5f5f5f6101208587031215614280575f5ffd5b61428a86866141cc565b9350614299866080870161422c565b92506142a88660c0870161422c565b91506142b7610100860161425b565b905092959194509250565b5f602082840312156142d2575f5ffd5b81356001600160401b038111156142e7575f5ffd5b6142f3848285016140fa565b949350505050565b5f6020828403121561430b575f5ffd5b81356001600160401b0381168114613c5b575f5ffd5b5f60208284031215614331575f5ffd5b613c5b82614064565b5f5f5f5f5f5f6101608789031215614350575f5ffd5b61435a88886141cc565b9550614369886080890161422c565b94506143788860c0890161422c565b93506101008701356001600160401b03811115614393575f5ffd5b61439f89828a016140fa565b9350506143af610120880161425b565b91506101408701356001600160401b038111156143ca575f5ffd5b6143d689828a016140fa565b9150509295509295509295565b5f602082840312156143f3575f5ffd5b613c5b8261425b565b5f5f6040838503121561440d575f5ffd5b8235915061441d60208401614064565b90509250929050565b5f5f60408385031215614437575f5ffd5b61444083614064565b915060208301356001600160401b038111156141b6575f5ffd5b5f5f5f5f5f6080868803121561446e575f5ffd5b61447786614064565b945061448560208701614064565b93506040860135925060608601356001600160401b038111156144a6575f5ffd5b8601601f810188136144b6575f5ffd5b80356001600160401b038111156144cb575f5ffd5b8860208260061b84010111156144df575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215614503575f5ffd5b61450d85856141cc565b925061451c856080860161422c565b915061452b8560c0860161422c565b90509250925092565b5f5f5f5f5f5f5f5f6101a0898b03121561454c575f5ffd5b6145568a8a6141cc565b97506145658a60808b0161422c565b96506145748a60c08b0161422c565b95506101008901356001600160401b0381111561458f575f5ffd5b61459b8b828c016140fa565b9550506145ab6101208a0161425b565b93506101408901356001600160401b038111156145c6575f5ffd5b6145d28b828c016140fa565b93505061016089013591506101808901356001600160401b038111156145f6575f5ffd5b6146028b828c016140fa565b9150509295985092959890939650565b5f60808284031215614622575f5ffd5b613c5b83836141cc565b5f5f6040838503121561463d575f5ffd5b61464683614064565b915061441d60208401614064565b5f5f5f5f6101208587031215614668575f5ffd5b61467286866141cc565b9350614681866080870161422c565b92506146908660c0870161422c565b91506101008501356001600160401b038111156146ab575f5ffd5b6146b7878288016140fa565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613c5b60208301846146c3565b5f5f5f5f60808587031215614716575f5ffd5b61471f85614064565b935061472d60208601614064565b9250604085013591506142b760608601614064565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061477957634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215614796575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cb657610cb661479d565b81810381811115610cb657610cb661479d565b634e487b7160e01b5f52603260045260245ffd5b5f816147f9576147f961479d565b505f190190565b60ff8281168282160390811115610cb657610cb661479d565b8082028115828204841417610cb657610cb661479d565b61ffff8181168382160190811115610cb657610cb661479d565b5f6001600160401b0382166001600160401b03810361486b5761486b61479d565b60010192915050565b885181526020808a0151908201526040808a0151908201526060808a01519082015287516080820152602088015160a082015261ffff871660c0820152855160e082015260208601516101008201526101a06101208201525f6148db6101a08301876146c3565b8281036101408401526148ee81876146c3565b90508461016084015282810361018084015261490a81856146c3565b9b9a5050505050505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f6149756101208301846146c3565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f6142f36149a4838661497f565b8461497f565b634e487b7160e01b5f52601260045260245ffd5b5f826149d857634e487b7160e01b5f52601260045260245ffd5b500690565b5f613c5b828461497f565b634e487b7160e01b5f52600160045260245ffd5b5f614a07828561497f565b5f81526001600160f81b03199390931660018401525050600201919050565b5f614a31828461497f565b5f81526001019392505050565b5f614a49828561497f565b6001600160f01b03199390931683525050600201919050565b5f614a6d828561497f565b6001600160f81b03199390931683525050600101919050565b5f614a91828661497f565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b6001815b6001841115614af457808504811115614ad857614ad861479d565b6001841615614ae657908102905b60019390931c928002614abd565b935093915050565b5f82614b0a57506001610cb6565b81614b1657505f610cb6565b8160018114614b2c5760028114614b3657614b52565b6001915050610cb6565b60ff841115614b4757614b4761479d565b50506001821b610cb6565b5060208310610133831016604e8410600b8410161715614b75575081810a610cb6565b614b815f198484614ab9565b805f1904821115614b9457614b9461479d565b029392505050565b5f613c5b8383614afc56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
4545    /// ```
4546    #[rustfmt::skip]
4547    #[allow(clippy::all)]
4548    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4549        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\09V[a\0$a\09V[a\0,a\09V[a\x004a\09V[a\0\xEBV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0\x89W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xE8W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80QaL\xB8a\x01\x11_9_\x81\x81a)\xB1\x01R\x81\x81a)\xDA\x01Ra.h\x01RaL\xB8_\xF3\xFE`\x80`@R`\x046\x10a\x03\xC9W_5`\xE0\x1C\x80cj\xD2\x8E\x9F\x11a\x01\xF4W\x80c\xB3\xE6\xEB\xD5\x11a\x01\x13W\x80c\xD9\xCC}&\x11a\0\xA8W\x80c\xE6:\xB1\xE9\x11a\0xW\x80c\xE6:\xB1\xE9\x14a\x0B\xCBW\x80c\xF2\xFD\xE3\x8B\x14a\x0B\xEBW\x80c\xF6wz\x10\x14a\x0C\nW\x80c\xFAR\xC7\xD8\x14a\x0C$W\x80c\xFC\x0CTj\x14a\x0CgW__\xFD[\x80c\xD9\xCC}&\x14a\x0BlW\x80c\xE3\xF27\xE6\x14a\x0B\x81W\x80c\xE4\xD1\xFB\x94\x14a\x0B\xA0W\x80c\xE6)w\xF8\x14a\x0B\xB6W__\xFD[\x80c\xBDI\xC3_\x11a\0\xE3W\x80c\xBDI\xC3_\x14a\n\xE3W\x80c\xBE 0\x94\x14a\n\xF8W\x80c\xC6H\x14\xDD\x14a\x0B\x17W\x80c\xD5Gt\x1F\x14a\x0BMW__\xFD[\x80c\xB3\xE6\xEB\xD5\x14a\n'W\x80c\xB5p\x0Eh\x14a\nUW\x80c\xB5\xEC\xB3D\x14a\ntW\x80c\xBB`\xBF\xB0\x14a\n\x9FW__\xFD[\x80c\x9E\x9A\x8F1\x11a\x01\x89W\x80c\xA2\xD7\x8D\xD5\x11a\x01YW\x80c\xA2\xD7\x8D\xD5\x14a\tZW\x80c\xA3\x06j\xAB\x14a\t\xACW\x80c\xAC\\*\xD0\x14a\t\xCBW\x80c\xAD<\xB1\xCC\x14a\t\xEAW__\xFD[\x80c\x9E\x9A\x8F1\x14a\x08\xC0W\x80c\x9E\xC9\xC18\x14a\x08\xD5W\x80c\x9F\xFBkC\x14a\x08\xF4W\x80c\xA2\x17\xFD\xDF\x14a\tGW__\xFD[\x80c\x87\x0C\x8F&\x11a\x01\xC4W\x80c\x87\x0C\x8F&\x14a\x087W\x80c\x8D\xA5\xCB[\x14a\x08VW\x80c\x91\xD1HT\x14a\x08\x82W\x80c\x9B0\xA5\xE6\x14a\x08\xA1W__\xFD[\x80cj\xD2\x8E\x9F\x14a\x07\xCCW\x80cqP\x18\xA6\x14a\x07\xFAW\x80cr\xE9\xC94\x14a\x08\x0EW\x80c\x84V\xCBY\x14a\x08#W__\xFD[\x80c9K4\x8F\x11a\x02\xEBW\x80cRx\x0Bn\x11a\x02\x80W\x80c\\\x97Z\xBB\x11a\x02PW\x80c\\\x97Z\xBB\x14a\x073W\x80c_\x87T\xA6\x14a\x07VW\x80capf\xE5\x14a\x07\x84W\x80ch\x87\xCD6\x14a\x07\x99W\x80cj\x91\x1C\xCF\x14a\x07\xB8W__\xFD[\x80cRx\x0Bn\x14a\x06\xB8W\x80cR\xD1\x90-\x14a\x06\xD7W\x80cUD\xC2\xF1\x14a\x06\xEBW\x80cZ/Q\xFD\x14a\x07\x05W__\xFD[\x80c?;\xB3f\x11a\x02\xBBW\x80c?;\xB3f\x14a\x06EW\x80c?K\xA8:\x14a\x06rW\x80cM\x99\xDD\x16\x14a\x06\x86W\x80cO\x1E\xF2\x86\x14a\x06\xA5W__\xFD[\x80c9K4\x8F\x14a\x05\xD4W\x80c;+\x7F\xFA\x14a\x05\xF3W\x80c>s.\xBA\x14a\x06\x12W\x80c>\x9D\xF9\xB5\x14a\x061W__\xFD[\x80c!@\xFE\xCD\x11a\x03aW\x80c//\xF1]\x11a\x031W\x80c//\xF1]\x14a\x05mW\x80c/\xE2\x87Y\x14a\x05\x8CW\x80c6V\x8A\xBE\x14a\x05\xA1W\x80c8\xE4T\xB1\x14a\x05\xC0W__\xFD[\x80c!@\xFE\xCD\x14a\x04\xE8W\x80c$\x8A\x9C\xA3\x14a\x05\x07W\x80c+\x9E\\\x8A\x14a\x054W\x80c-\xC9\xBA\xC6\x14a\x05NW__\xFD[\x80c\r\x8En,\x11a\x03\x9CW\x80c\r\x8En,\x14a\x04`W\x80c\x13\xB9\x05z\x14a\x04\x8BW\x80c\x15\xF3\x185\x14a\x04\xAAW\x80c\x1A \xCDc\x14a\x04\xC9W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03\xCDW\x80c\x02n@+\x14a\x04\x01W\x80c\x07=%\xFC\x14a\x04\"W\x80c\x0C\xB2\x97d\x14a\x04AW[__\xFD[4\x80\x15a\x03\xD8W__\xFD[Pa\x03\xECa\x03\xE76`\x04a@=V[a\x0C\x86V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x04\x0CW__\xFD[Pa\x04 a\x04\x1B6`\x04a@\x7FV[a\x0C\xBCV[\0[4\x80\x15a\x04-W__\xFD[Pa\x04 a\x04<6`\x04a@\xA7V[a\x0E\xA2V[4\x80\x15a\x04LW__\xFD[Pa\x04 a\x04[6`\x04aA\x89V[a\x0FBV[4\x80\x15a\x04kW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\xF8V[4\x80\x15a\x04\x96W__\xFD[Pa\x04 a\x04\xA56`\x04aBlV[a\x10-V[4\x80\x15a\x04\xB5W__\xFD[Pa\x04 a\x04\xC46`\x04aB\xC2V[a\x10FV[4\x80\x15a\x04\xD4W__\xFD[Pa\x04 a\x04\xE36`\x04aB\xFBV[a\x12|V[4\x80\x15a\x04\xF3W__\xFD[Pa\x04 a\x05\x026`\x04aC!V[a\x13\x10V[4\x80\x15a\x05\x12W__\xFD[Pa\x05&a\x05!6`\x04a@\xA7V[a\x14`V[`@Q\x90\x81R` \x01a\x03\xF8V[4\x80\x15a\x05?W__\xFD[Pa\x04 a\x04\xA56`\x04aC:V[4\x80\x15a\x05YW__\xFD[Pa\x04 a\x05h6`\x04aC\xE3V[a\x14\x80V[4\x80\x15a\x05xW__\xFD[Pa\x04 a\x05\x876`\x04aC\xFCV[a\x15\x04V[4\x80\x15a\x05\x97W__\xFD[Pa\x05&a\x08\0\x81V[4\x80\x15a\x05\xACW__\xFD[Pa\x04 a\x05\xBB6`\x04aC\xFCV[a\x15 V[4\x80\x15a\x05\xCBW__\xFD[Pa\x04 a\x15HV[4\x80\x15a\x05\xDFW__\xFD[Pa\x04 a\x05\xEE6`\x04a@\xA7V[a\x15\xEBV[4\x80\x15a\x05\xFEW__\xFD[Pa\x04 a\x06\r6`\x04aC\xE3V[a\x16ZV[4\x80\x15a\x06\x1DW__\xFD[Pa\x04 a\x06,6`\x04a@\xA7V[a\x17\xC6V[4\x80\x15a\x06<W__\xFD[Pa\x05&_T\x81V[4\x80\x15a\x06PW__\xFD[P`\nTa\x06_\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x06}W__\xFD[Pa\x04 a\x18'V[4\x80\x15a\x06\x91W__\xFD[Pa\x04 a\x06\xA06`\x04a@\x7FV[a\x18IV[a\x04 a\x06\xB36`\x04aD&V[a\x1A\xBAV[4\x80\x15a\x06\xC3W__\xFD[Pa\x04 a\x06\xD26`\x04aDZV[a\x1A\xD5V[4\x80\x15a\x06\xE2W__\xFD[Pa\x05&a\x1C\x87V[4\x80\x15a\x06\xF6W__\xFD[Pa\x04 a\x04\xA56`\x04aD\xF0V[4\x80\x15a\x07\x10W__\xFD[Pa\x03\xECa\x07\x1F6`\x04a@\xA7V[`\x11` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07>W__\xFD[P_Q` aLl_9_Q\x90_RT`\xFF\x16a\x03\xECV[4\x80\x15a\x07aW__\xFD[Pa\x03\xECa\x07p6`\x04a@\xA7V[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07\x8FW__\xFD[Pa\x05&a\x02\0\x81V[4\x80\x15a\x07\xA4W__\xFD[Pa\x04 a\x07\xB36`\x04aE4V[a\x1C\xA2V[4\x80\x15a\x07\xC3W__\xFD[Pa\x04 a\x1F\x0EV[4\x80\x15a\x07\xD7W__\xFD[Pa\x07\xE2b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x08\x05W__\xFD[Pa\x04 a\x1F\xCEV[4\x80\x15a\x08\x19W__\xFD[Pa\x05&`\x0CT\x81V[4\x80\x15a\x08.W__\xFD[Pa\x04 a\x1F\xEFV[4\x80\x15a\x08BW__\xFD[Pa\x04 a\x08Q6`\x04aB\xC2V[a \x0EV[4\x80\x15a\x08aW__\xFD[Pa\x08ja bV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x08\x8DW__\xFD[Pa\x03\xECa\x08\x9C6`\x04aC\xFCV[a \x90V[4\x80\x15a\x08\xACW__\xFD[Pa\x05&a\x08\xBB6`\x04aF\x12V[a \xC6V[4\x80\x15a\x08\xCBW__\xFD[Pa\x05&`\x08T\x81V[4\x80\x15a\x08\xE0W__\xFD[Pa\x04 a\x08\xEF6`\x04aB\xC2V[a! V[4\x80\x15a\x08\xFFW__\xFD[Pa\t-a\t\x0E6`\x04aC!V[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xF8V[4\x80\x15a\tRW__\xFD[Pa\x05&_\x81V[4\x80\x15a\teW__\xFD[Pa\t\x97a\tt6`\x04aF,V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xF8V[4\x80\x15a\t\xB7W__\xFD[Pa\x04 a\t\xC66`\x04aC!V[a!sV[4\x80\x15a\t\xD6W__\xFD[Pa\x04 a\t\xE56`\x04aFTV[a\"\xD8V[4\x80\x15a\t\xF5W__\xFD[Pa\n\x1A`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\xF8\x91\x90aF\xF1V[4\x80\x15a\n2W__\xFD[Pa\x03\xECa\nA6`\x04a@\xA7V[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\n`W__\xFD[P`\x01Ta\x08j\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\n\x7FW__\xFD[Pa\x05&a\n\x8E6`\x04aC!V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\n\xAAW__\xFD[Pa\n\xBEa\n\xB96`\x04aF,V[a$\x02V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\xF8V[4\x80\x15a\n\xEEW__\xFD[Pa\x05&`\x0BT\x81V[4\x80\x15a\x0B\x03W__\xFD[Pa\x04 a\x0B\x126`\x04aG\x03V[a$\x93V[4\x80\x15a\x0B\"W__\xFD[Pa\x05&a\x0B16`\x04aF,V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x0BXW__\xFD[Pa\x04 a\x0Bg6`\x04aC\xFCV[a%\x97V[4\x80\x15a\x0BwW__\xFD[Pa\x05&`\tT\x81V[4\x80\x15a\x0B\x8CW__\xFD[Pa\x04 a\x0B\x9B6`\x04aB\xC2V[a%\xBFV[4\x80\x15a\x0B\xABW__\xFD[Pa\x07\xE2b\x12u\0\x81V[4\x80\x15a\x0B\xC1W__\xFD[Pa\x06_a'\x10\x81V[4\x80\x15a\x0B\xD6W__\xFD[Pa\x05&_Q` aL,_9_Q\x90_R\x81V[4\x80\x15a\x0B\xF6W__\xFD[Pa\x04 a\x0C\x056`\x04aC!V[a%\xE4V[4\x80\x15a\x0C\x15W__\xFD[Pa\x05&`\x13`\x01`\xFF\x1B\x03\x81V[4\x80\x15a\x0C/W__\xFD[Pa\x0CYa\x0C>6`\x04aC!V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\xF8\x92\x91\x90aGVV[4\x80\x15a\x0CrW__\xFD[P`\x02Ta\x08j\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0C\xB6WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0C\xC4a&lV[a\x0C\xCD\x82a&\x9EV[3_\x82\x90\x03a\x0C\xEFW`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\r\x12W`@Qc})\x871`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r`W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x84\x91\x90aG\x86V[\x90P\x82\x81\x10\x15a\r\xB6W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\r\xCE\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a'\x1FV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\r\xF5\x90\x84\x90aG\xB1V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x0E0\x90\x84\x90aG\xB1V[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0EH\x91\x90aG\xB1V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\x0E\x94\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0E\xAAa&lV[a\x0E\xB33a&\x9EV[a\x0E\xBC\x81a'\xBCV[_\x81\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0E\xEBW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F7\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PV[a\x0FJa&lV[a\x0FS3a&\x9EV[a\x0F\\\x82a'\xBCV[_\x82\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0F\x8BW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x94\x81a\x10FV[_\x82\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F\xE0\x90\x85\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x10!\x91\x90aF\xF1V[`@Q\x80\x91\x03\x90\xA2PPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x81\x90\x15\x80\x15\x90a\x10[WPa\x02\0\x81Q\x11\x15[a\x10xW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x19\x90[\x80\x15a\x10\xDDW\x82a\x10\x90`\x01\x83aG\xC4V[\x81Q\x81\x10a\x10\xA0Wa\x10\xA0aG\xD7V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x1D`\xF9\x1B\x03a\x10\xCBWa\x10\xC4`\x01\x82aG\xC4V[\x91Pa\x10\xDDV[\x80a\x10\xD5\x81aG\xEBV[\x91PPa\x10~V[P_\x19\x81\x14\x15\x80\x15a\x10\xEEWP_\x81\x11[a\x11\x0BW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01\x82\x84Qa\x11\x1B\x91\x90aG\xC4V[a\x11%\x91\x90aG\xC4V[\x90P_\x81\x11\x80\x15a\x117WP`\x05\x81\x11\x15[a\x11TW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80a\x11a\x84`\x01aG\xB1V[\x90P[\x84Q\x81\x10\x15a\x11\xEAW_\x85\x82\x81Q\x81\x10a\x11\x80Wa\x11\x80aG\xD7V[\x01` \x01Q`\xF8\x1C\x90P`0\x81\x10\x80\x15\x90a\x11\x9FWP`9\x81`\xFF\x16\x11\x15[a\x11\xBCW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xC7`0\x82aH\0V[`\xFF\x16a\x11\xD5\x84`\naH\x19V[a\x11\xDF\x91\x90aG\xB1V[\x92PP`\x01\x01a\x11dV[P`\x01\x82\x11\x80\x15a\x12)WP\x83a\x12\x02\x84`\x01aG\xB1V[\x81Q\x81\x10a\x12\x12Wa\x12\x12aG\xD7V[` \x91\x01\x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x03`\xFC\x1B\x14[\x15a\x12GW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x11\x80\x15a\x12XWPa\xFF\xFF\x81\x11\x15[a\x12uW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[_a\x12\x86\x81a(3V[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\x12\xABWPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\x12\xC9W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x18a&lV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x13RW`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x13sW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x13\xBBW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x13\xFF\x90\x84\x90aG\xC4V[\x90\x91UPP`\x02Ta\x14\x1B\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a(=V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\x0E\x94\x91\x81R` \x01\x90V[_\x90\x81R_Q` aLL_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[_a\x14\x8A\x81a(3V[_\x82a\xFF\xFF\x16\x11\x80\x15a\x14\xA3WPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x14\xC0W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\x13\x04V[\x81a\x15\x16Wa\x15\x12\x81a%\xE4V[PPV[a\x15\x12\x82\x82a(\xC6V[\x81a\x15>W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x12\x82\x82a(\xE2V[a\x15Pa)\x15V[_Q` aL\x8C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x15\x86WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x15\xA4W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x90\x81\x17`\x01`@\x1B\x17`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01a\x13\x04V[_a\x15\xF5\x81a(3V[_\x82\x11\x80\x15a\x16\x08WPc\x01\xE13\x80\x82\x11\x15[a\x16%W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\x13\x04V[a\x16ba&lV[3a\x16l\x81a&\x9EV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x16\x93W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x16\xD5W`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x17aW`\x01\x82\x01T\x80\x15\x80a\x17\x03WP`\tTa\x16\xFF\x90\x82aG\xB1V[B\x10\x15[a\x17 W`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x171\x90a\xFF\xFF\x16\x83aH0V[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x17YW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x17\xD0\x81a(3V[`\x01\x82\x10\x15a\x17\xF2W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\x13\x04V[_Q` aL,_9_Q\x90_Ra\x18>\x81a(3V[a\x18Fa)GV[PV[a\x18Qa&lV[a\x18Z\x82a&\x9EV[3_\x82\x90\x03a\x18|W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x18\xBFW`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x19\x08W`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\xADV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x19$\x83aHJV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x19\x9D\x91\x90aG\xC4V[\x90\x91UPP`\x08T_\x90a\x19\xB1\x90BaG\xB1V[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x1AA\x90\x84\x90aG\xC4V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x1AY\x91\x90aG\xC4V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x1A\xC2a)\xA6V[a\x1A\xCB\x82a*JV[a\x15\x12\x82\x82a*TV[a\x1A\xDDa)\x15V[_Q` aL\x8C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1B\x13WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1B1W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x1ByW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1B\xA0W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xA8a+\x10V[a\x1B\xB0a+\x18V[a\x1B\xC7_Q` aL,_9_Q\x90_R\x88a+(V[Pa\x1B\xD2_\x87a+(V[P_a\x1B\xDCa bV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1C\0Wa\x1C\0\x87a+\xC9V[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x1C@\x85\x85a,9V[a\x1CI\x86a-\xCEV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x1C\x90a.]V[P_Q` aL\x0C_9_Q\x90_R\x90V[a\x1C\xAAa&lV[3a\x1C\xB4\x81a.\xA6V[a\x1C\xBD\x88a.\xF3V[a\x1C\xC7\x89\x89a/\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xF9\x81\x89\x8Ca/\xFFV[\x86Q`@\x14a\x1D\x1BW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x87\x16\x11\x15a\x1DBW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1DK\x85a%\xBFV[a\x1DT\x84a'\xBCV[_\x84\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x1D\x83W`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x8C\x83a\x10FV[`\x01`\x04_a\x1D\x9A\x8Da \xC6V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D\xCB\x8Ca1\x08V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x1E\x12Wa\x1E\x12aGBV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x1EXWa\x1EXaGBV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x89\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x83R\x86\x84 \x95Q\x86Ta\xFF\xFF\x19\x16\x95\x16\x94\x90\x94\x17\x85UQ`\x01\x94\x85\x01U\x89\x82R`\x11\x90R\x83\x90 \x80T`\xFF\x19\x16\x90\x92\x17\x90\x91U\x90Q\x90\x91P\x7F\xBF\x14\xCD\x7F\xEApC]BO\x92\xF7\xA3\xD0\x11\t\xA5\x83D\x9Dq\x88\x98\xA6\xA9i\x87\x9CTv\xEC\x14\x90a\x1E\xFA\x90\x8D\x90\x8D\x90\x8B\x90\x8E\x90\x8E\x90\x8D\x90\x8D\x90\x8D\x90aHtV[`@Q\x80\x91\x03\x90\xA2PPPPPPPPPPV[a\x1F\x16a&lV[3a\x1F \x81a&\x9EV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x1FR\x90BaG\xB1V[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x1F\x8E\x90\x84\x90aG\xC4V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01a\x10!V[a\x1F\xD6a)\x15V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aL,_9_Q\x90_Ra \x06\x81a(3V[a\x18Fa1,V[a \x16a&lV[3a  \x81a&\x9EV[a )\x82a%\xBFV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x10!\x91\x90aF\xF1V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[_\x91\x82R_Q` aLL_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a!\x03\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a!(a&lV[a!13a&\x9EV[a!:\x81a\x10FV[3`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x0F7\x91\x90aF\xF1V[a!{a&lV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a!\xC0W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\"\x08W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\"{\x91\x16\x84\x84a(=V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\"\xCA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\"\xE0a&lV[3a\"\xEA\x81a&\x9EV[a\"\xF3\x84a.\xF3V[a\"\xFD\x85\x85a/\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa#/\x81\x85\x88a/\xFFV[\x82Q`@\x14a#QW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a#_\x89a \xC6V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a#\x90\x88a1\x08V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa#\xF2\x94\x93\x92\x91\x90aI\x19V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a$MW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aL\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a$\xC4WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a$\xDFWP0;\x15[\x90P\x81\x15\x80\x15a$\xEDWP\x80\x15[\x15a%\x0BW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a%5W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a%>\x86a1tV[a%Fa+\x10V[a%Na1\x85V[a%Y\x89\x89\x89a2cV[\x83\x15a%\x8CW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a%\xB5W`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x12\x82\x82a3\x0EV[\x80Qa\x08\0\x81\x11\x15a\x15\x12W`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a%\xEE\x81a(3V[`\x01`\x01`\xA0\x1B\x03\x82\x16a&\x17W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\xADV[_a& a bV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a&IWa&D\x83a3*V[PPPV[a&S_\x84a(\xC6V[a&\\\x83a3*V[a&f_\x82a3dV[PPPPV[_Q` aLl_9_Q\x90_RT`\xFF\x16\x15a&\x9CW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a&\xCFWa&\xCFaGBV[\x03a&\xEDW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a'\x01Wa'\x01aGBV[\x03a\x15\x12W`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a'xWP\x83;\x15=\x17\x15[\x80a\x12uW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\r\xADV[_` [\x80\x15a(\0W\x82a'\xD2`\x01\x83aG\xC4V[` \x81\x10a'\xE2Wa'\xE2aG\xD7V[\x1A`\x08\x92\x90\x92\x1B\x91\x90\x91\x17\x90\x80a'\xF8\x81aG\xEBV[\x91PPa'\xC0V[P\x80\x15\x80\x15\x90a(\x16WP`\x13`\x01`\xFF\x1B\x03\x81\x10[a\x15\x12W`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18F\x813a3\xDDV[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a(\x87WP\x82;\x15=\x17\x15[\x80a&fW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\r\xADV[a(\xCF\x82a\x14`V[a(\xD8\x81a(3V[a&f\x83\x83a+(V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a)\x0BW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a&D\x82\x82a3dV[3a)\x1Ea bV[`\x01`\x01`\xA0\x1B\x03\x16\x14a&\x9CW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\xADV[a)Oa4\x16V[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a*,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a* _Q` aL\x0C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a&\x9CW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x15\x12\x81a(3V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a*\xAEWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra*\xAB\x91\x81\x01\x90aG\x86V[`\x01[a*\xD6W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\xADV[_Q` aL\x0C_9_Q\x90_R\x81\x14a+\x06W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\xADV[a&D\x83\x83a4EV[a&\x9Ca4\x9AV[a+ a4\x9AV[a&\x9Ca4\xD0V[__Q` aLL_9_Q\x90_Ra+A\x84\x84a \x90V[a+\xC0W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua+v3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0C\xB6V[_\x91PPa\x0C\xB6V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[_[\x81\x81\x10\x15a&DW_\x83\x83\x83\x81\x81\x10a,VWa,VaG\xD7V[a,l\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91PaC!V[\x90P_\x84\x84\x84\x81\x81\x10a,\x81Wa,\x81aG\xD7V[\x90P`@\x02\x01` \x01` \x81\x01\x90a,\x99\x91\x90aC\xE3V[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a,\xC2W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a,\xF3Wa,\xF3aGBV[\x03a-\x11W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a-RWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a-}W`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\r\xADV[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a,;V[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a.\x14W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.8\x91\x90aG\x86V[\x81\x11\x15a.XW`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a&\x9CW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a.\xD5Wa.\xD5aGBV[\x14a\x18FW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a/GWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a/eW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x18FW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a/\x92\x84a \xC6V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a/\xC2W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a/\xCE\x83a1\x08V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x15\x12W`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a0(W`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a09WP` \x81\x01Q\x15[\x80\x15a0GWP`@\x81\x01Q\x15[\x80\x15a0UWP``\x81\x01Q\x15[\x15a0sW`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0|\x82a4\xF0V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aK\xA8`$\x919\x90P_\x84\x82`@Q` \x01a0\xAC\x92\x91\x90aI\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a0\xC7\x82a5WV[\x90Pa0\xE4\x81\x85a0\xD7\x88a6DV[a0\xDFa6\xBBV[a7\x88V[a1\0W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a!\x03\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a14a&lV[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a)\x88V[a1|a4\x9AV[a\x18F\x81a87V[_Q` aL\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a1\xB6WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a1\xD1WP0;\x15[\x90P\x81\x15\x80\x15a1\xDFWP\x80\x15[\x15a1\xFDW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a2'W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x12uW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a2\x8AW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a2\xB1W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a3\x06W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a3\x17\x82a\x14`V[a3 \x81a(3V[a&f\x83\x83a3dV[a32a)\x15V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3[W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\xADV[a\x18F\x81a+\xC9V[__Q` aLL_9_Q\x90_Ra3}\x84\x84a \x90V[\x15a+\xC0W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0C\xB6V[a3\xE7\x82\x82a \x90V[a\x15\x12W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\r\xADV[_Q` aLl_9_Q\x90_RT`\xFF\x16a&\x9CW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4N\x82a8?V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a4\x92Wa&D\x82\x82a8\xA2V[a\x15\x12a9\x14V[_Q` aL\x8C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a&\x9CW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4\xD8a4\x9AV[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[\x80Q` \x82\x01Q_\x91_Q` aK\xCC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a5\x16WPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a&DW`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a5t\x83a93V[\x90P_Q` aK\xCC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a5\x9BWa5\x9BaI\xAAV[\x84\x82\t\x90P\x82\x80a5\xAEWa5\xAEaI\xAAV[\x82\x82\x08\x90P__a5\xBE\x83a;;V[\x92P\x90P[\x80a6'W\x84\x80a5\xD6Wa5\xD6aI\xAAV[`\x01\x87\x08\x95P\x84\x80a5\xEAWa5\xEAaI\xAAV[\x86\x87\t\x92P\x84\x80a5\xFDWa5\xFDaI\xAAV[\x86\x84\t\x92P\x84\x80a6\x10Wa6\x10aI\xAAV[\x84\x84\x08\x92Pa6\x1E\x83a;;V[\x92P\x90Pa5\xC3V[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a6kWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aK\xCC_9_Q\x90_R\x84` \x01Qa6\x9C\x91\x90aI\xBEV[a6\xB3\x90_Q` aK\xCC_9_Q\x90_RaG\xC4V[\x90R\x92\x91PPV[a6\xE2`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a8+W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a32a4\x9AV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a8tW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\xADV[_Q` aL\x0C_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa8\xBE\x91\x90aI\xDDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a8\xF6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a8\xFBV[``\x91P[P\x91P\x91Pa9\x0B\x85\x83\x83a<\x03V[\x95\x94PPPPPV[4\x15a&\x9CW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a9>\x83a<bV[\x80Q\x90\x91P`0\x81\x14a9SWa9SaI\xE8V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a9lWa9la@\xBEV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a9\x96W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a:\x05W\x83`\x01a9\xB0\x83\x86aG\xC4V[a9\xBA\x91\x90aG\xC4V[\x81Q\x81\x10a9\xCAWa9\xCAaG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a9\xE7Wa9\xE7aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a9\x9BV[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a:\x95W\x83\x81a:A\x85\x88aG\xC4V[a:K\x91\x90aG\xB1V[\x81Q\x81\x10a:[Wa:[aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a:{Wa:{aG\xD7V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a:-V[P_a:\xA0\x82a?\xADV[\x90Pa\x01\0_Q` aK\xCC_9_Q\x90_R_a:\xBE\x86\x89aG\xC4V[\x90P_[\x81\x81\x10\x15a;+W_\x88`\x01a:\xD8\x84\x86aG\xC4V[a:\xE2\x91\x90aG\xC4V[\x81Q\x81\x10a:\xF2Wa:\xF2aG\xD7V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a;\nWa;\naI\xAAV[\x85\x87\t\x95P\x83\x80a;\x1DWa;\x1DaI\xAAV[\x81\x87\x08\x95PP`\x01\x01a:\xC2V[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` aK\xCC_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a;\xC9W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a;\xE2Wa;\xDF\x83\x82aG\xC4V[\x92P[\x80\x80a;\xF0Wa;\xF0aI\xAAV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[``\x82a<\x18Wa<\x13\x82a@\x14V[a<[V[\x81Q\x15\x80\x15a</WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a<XW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\xADV[P\x80[\x93\x92PPPV[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a<\xA2\x92\x91\x90aI\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a<\xC9\x92\x91\x90aI\xFCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a<\xEB\x91\x90aJ&V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a=\x15\x90\x83\x90\x83\x90` \x01aJ>V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x84Wa=\x84a@\xBEV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a=\xAEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a=\xC5\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a>/W\x81\x81\x81Q\x81\x10a=\xF4Wa=\xF4aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a>\x11Wa>\x11aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a=\xD9V[P_\x84`@Q` \x01a>D\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a>\xD6W_\x83\x82\x81Q\x81\x10a>}Wa>}aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a>\x9AWa>\x9AaG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a>\xBB\x92\x91\x90aJbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a>bV[P\x86\x88\x87`@Q` \x01a>\xEC\x93\x92\x91\x90aJ\x86V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a?\x1A\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a?;\x8A`\xFF\x8D\x16aG\xC4V[\x81\x10\x15a?\x9CW\x82\x81\x81Q\x81\x10a?TWa?TaG\xD7V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a?n\x83\x8DaG\xB1V[\x81Q\x81\x10a?~Wa?~aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a?.V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a@\rW\x83\x81\x81Q\x81\x10a?\xCCWa?\xCCaG\xD7V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a?\xE4\x91\x90aH\x19V[a?\xEF\x90`\x02aK\x9CV[a?\xF9\x91\x90aH\x19V[a@\x03\x90\x83aG\xB1V[\x91P`\x01\x01a?\xB1V[P\x92\x91PPV[\x80Q\x15a@$W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a@MW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a<[W__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a@zW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a@\x90W__\xFD[a@\x99\x83a@dV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a@\xB7W__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a@\xF4Wa@\xF4a@\xBEV[`@R\x90V[_\x82`\x1F\x83\x01\x12aA\tW__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15aA(WaA(a@\xBEV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15aAVWaAVa@\xBEV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15aAmW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[__`@\x83\x85\x03\x12\x15aA\x9AW__\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aA\xB6W__\xFD[aA\xC2\x85\x82\x86\x01a@\xFAV[\x91PP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15aA\xDCW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aA\xFEWaA\xFEa@\xBEV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15aB<W__\xFD[aBDa@\xD2V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a@zW__\xFD[____a\x01 \x85\x87\x03\x12\x15aB\x80W__\xFD[aB\x8A\x86\x86aA\xCCV[\x93PaB\x99\x86`\x80\x87\x01aB,V[\x92PaB\xA8\x86`\xC0\x87\x01aB,V[\x91PaB\xB7a\x01\0\x86\x01aB[V[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15aB\xD2W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aB\xE7W__\xFD[aB\xF3\x84\x82\x85\x01a@\xFAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15aC\x0BW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a<[W__\xFD[_` \x82\x84\x03\x12\x15aC1W__\xFD[a<[\x82a@dV[______a\x01`\x87\x89\x03\x12\x15aCPW__\xFD[aCZ\x88\x88aA\xCCV[\x95PaCi\x88`\x80\x89\x01aB,V[\x94PaCx\x88`\xC0\x89\x01aB,V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\x93W__\xFD[aC\x9F\x89\x82\x8A\x01a@\xFAV[\x93PPaC\xAFa\x01 \x88\x01aB[V[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\xCAW__\xFD[aC\xD6\x89\x82\x8A\x01a@\xFAV[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15aC\xF3W__\xFD[a<[\x82aB[V[__`@\x83\x85\x03\x12\x15aD\rW__\xFD[\x825\x91PaD\x1D` \x84\x01a@dV[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15aD7W__\xFD[aD@\x83a@dV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aA\xB6W__\xFD[_____`\x80\x86\x88\x03\x12\x15aDnW__\xFD[aDw\x86a@dV[\x94PaD\x85` \x87\x01a@dV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xA6W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aD\xB6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xCBW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15aD\xDFW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15aE\x03W__\xFD[aE\r\x85\x85aA\xCCV[\x92PaE\x1C\x85`\x80\x86\x01aB,V[\x91PaE+\x85`\xC0\x86\x01aB,V[\x90P\x92P\x92P\x92V[________a\x01\xA0\x89\x8B\x03\x12\x15aELW__\xFD[aEV\x8A\x8AaA\xCCV[\x97PaEe\x8A`\x80\x8B\x01aB,V[\x96PaEt\x8A`\xC0\x8B\x01aB,V[\x95Pa\x01\0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\x8FW__\xFD[aE\x9B\x8B\x82\x8C\x01a@\xFAV[\x95PPaE\xABa\x01 \x8A\x01aB[V[\x93Pa\x01@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xC6W__\xFD[aE\xD2\x8B\x82\x8C\x01a@\xFAV[\x93PPa\x01`\x89\x015\x91Pa\x01\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xF6W__\xFD[aF\x02\x8B\x82\x8C\x01a@\xFAV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[_`\x80\x82\x84\x03\x12\x15aF\"W__\xFD[a<[\x83\x83aA\xCCV[__`@\x83\x85\x03\x12\x15aF=W__\xFD[aFF\x83a@dV[\x91PaD\x1D` \x84\x01a@dV[____a\x01 \x85\x87\x03\x12\x15aFhW__\xFD[aFr\x86\x86aA\xCCV[\x93PaF\x81\x86`\x80\x87\x01aB,V[\x92PaF\x90\x86`\xC0\x87\x01aB,V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aF\xABW__\xFD[aF\xB7\x87\x82\x88\x01a@\xFAV[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a<[` \x83\x01\x84aF\xC3V[____`\x80\x85\x87\x03\x12\x15aG\x16W__\xFD[aG\x1F\x85a@dV[\x93PaG-` \x86\x01a@dV[\x92P`@\x85\x015\x91PaB\xB7``\x86\x01a@dV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10aGyWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aG\x96W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[\x81\x81\x03\x81\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81aG\xF9WaG\xF9aG\x9DV[P_\x19\x01\x90V[`\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\xB6Wa\x0C\xB6aG\x9DV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03aHkWaHkaG\x9DV[`\x01\x01\x92\x91PPV[\x88Q\x81R` \x80\x8A\x01Q\x90\x82\x01R`@\x80\x8A\x01Q\x90\x82\x01R``\x80\x8A\x01Q\x90\x82\x01R\x87Q`\x80\x82\x01R` \x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x87\x16`\xC0\x82\x01R\x85Q`\xE0\x82\x01R` \x86\x01Qa\x01\0\x82\x01Ra\x01\xA0a\x01 \x82\x01R_aH\xDBa\x01\xA0\x83\x01\x87aF\xC3V[\x82\x81\x03a\x01@\x84\x01RaH\xEE\x81\x87aF\xC3V[\x90P\x84a\x01`\x84\x01R\x82\x81\x03a\x01\x80\x84\x01RaI\n\x81\x85aF\xC3V[\x9B\x9APPPPPPPPPPPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aIua\x01 \x83\x01\x84aF\xC3V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_aB\xF3aI\xA4\x83\x86aI\x7FV[\x84aI\x7FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aI\xD8WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_a<[\x82\x84aI\x7FV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_aJ\x07\x82\x85aI\x7FV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aJ1\x82\x84aI\x7FV[_\x81R`\x01\x01\x93\x92PPPV[_aJI\x82\x85aI\x7FV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aJm\x82\x85aI\x7FV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aJ\x91\x82\x86aI\x7FV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[`\x01\x81[`\x01\x84\x11\x15aJ\xF4W\x80\x85\x04\x81\x11\x15aJ\xD8WaJ\xD8aG\x9DV[`\x01\x84\x16\x15aJ\xE6W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aJ\xBDV[\x93P\x93\x91PPV[_\x82aK\nWP`\x01a\x0C\xB6V[\x81aK\x16WP_a\x0C\xB6V[\x81`\x01\x81\x14aK,W`\x02\x81\x14aK6WaKRV[`\x01\x91PPa\x0C\xB6V[`\xFF\x84\x11\x15aKGWaKGaG\x9DV[PP`\x01\x82\x1Ba\x0C\xB6V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aKuWP\x81\x81\na\x0C\xB6V[aK\x81_\x19\x84\x84aJ\xB9V[\x80_\x19\x04\x82\x11\x15aK\x94WaK\x94aG\x9DV[\x02\x93\x92PPPV[_a<[\x83\x83aJ\xFCV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD26\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08#\0\n",
4550    );
4551    /// The runtime bytecode of the contract, as deployed on the network.
4552    ///
4553    /// ```text
4554    ///0x6080604052600436106103c9575f3560e01c80636ad28e9f116101f4578063b3e6ebd511610113578063d9cc7d26116100a8578063e63ab1e911610078578063e63ab1e914610bcb578063f2fde38b14610beb578063f6777a1014610c0a578063fa52c7d814610c24578063fc0c546a14610c67575f5ffd5b8063d9cc7d2614610b6c578063e3f237e614610b81578063e4d1fb9414610ba0578063e62977f814610bb6575f5ffd5b8063bd49c35f116100e3578063bd49c35f14610ae3578063be20309414610af8578063c64814dd14610b17578063d547741f14610b4d575f5ffd5b8063b3e6ebd514610a27578063b5700e6814610a55578063b5ecb34414610a74578063bb60bfb014610a9f575f5ffd5b80639e9a8f3111610189578063a2d78dd511610159578063a2d78dd51461095a578063a3066aab146109ac578063ac5c2ad0146109cb578063ad3cb1cc146109ea575f5ffd5b80639e9a8f31146108c05780639ec9c138146108d55780639ffb6b43146108f4578063a217fddf14610947575f5ffd5b8063870c8f26116101c4578063870c8f26146108375780638da5cb5b1461085657806391d14854146108825780639b30a5e6146108a1575f5ffd5b80636ad28e9f146107cc578063715018a6146107fa57806372e9c9341461080e5780638456cb5914610823575f5ffd5b8063394b348f116102eb57806352780b6e116102805780635c975abb116102505780635c975abb146107335780635f8754a614610756578063617066e5146107845780636887cd36146107995780636a911ccf146107b8575f5ffd5b806352780b6e146106b857806352d1902d146106d75780635544c2f1146106eb5780635a2f51fd14610705575f5ffd5b80633f3bb366116102bb5780633f3bb366146106455780633f4ba83a146106725780634d99dd16146106865780634f1ef286146106a5575f5ffd5b8063394b348f146105d45780633b2b7ffa146105f35780633e732eba146106125780633e9df9b514610631575f5ffd5b80632140fecd116103615780632f2ff15d116103315780632f2ff15d1461056d5780632fe287591461058c57806336568abe146105a157806338e454b1146105c0575f5ffd5b80632140fecd146104e8578063248a9ca3146105075780632b9e5c8a146105345780632dc9bac61461054e575f5ffd5b80630d8e6e2c1161039c5780630d8e6e2c1461046057806313b9057a1461048b57806315f31835146104aa5780631a20cd63146104c9575f5ffd5b806301ffc9a7146103cd578063026e402b14610401578063073d25fc146104225780630cb2976414610441575b5f5ffd5b3480156103d8575f5ffd5b506103ec6103e736600461403d565b610c86565b60405190151581526020015b60405180910390f35b34801561040c575f5ffd5b5061042061041b36600461407f565b610cbc565b005b34801561042d575f5ffd5b5061042061043c3660046140a7565b610ea2565b34801561044c575f5ffd5b5061042061045b366004614189565b610f42565b34801561046b575f5ffd5b5060408051600381525f60208201819052918101919091526060016103f8565b348015610496575f5ffd5b506104206104a536600461426c565b61102d565b3480156104b5575f5ffd5b506104206104c43660046142c2565b611046565b3480156104d4575f5ffd5b506104206104e33660046142fb565b61127c565b3480156104f3575f5ffd5b50610420610502366004614321565b611310565b348015610512575f5ffd5b506105266105213660046140a7565b611460565b6040519081526020016103f8565b34801561053f575f5ffd5b506104206104a536600461433a565b348015610559575f5ffd5b506104206105683660046143e3565b611480565b348015610578575f5ffd5b506104206105873660046143fc565b611504565b348015610597575f5ffd5b5061052661080081565b3480156105ac575f5ffd5b506104206105bb3660046143fc565b611520565b3480156105cb575f5ffd5b50610420611548565b3480156105df575f5ffd5b506104206105ee3660046140a7565b6115eb565b3480156105fe575f5ffd5b5061042061060d3660046143e3565b61165a565b34801561061d575f5ffd5b5061042061062c3660046140a7565b6117c6565b34801561063c575f5ffd5b506105265f5481565b348015610650575f5ffd5b50600a5461065f9061ffff1681565b60405161ffff90911681526020016103f8565b34801561067d575f5ffd5b50610420611827565b348015610691575f5ffd5b506104206106a036600461407f565b611849565b6104206106b3366004614426565b611aba565b3480156106c3575f5ffd5b506104206106d236600461445a565b611ad5565b3480156106e2575f5ffd5b50610526611c87565b3480156106f6575f5ffd5b506104206104a53660046144f0565b348015610710575f5ffd5b506103ec61071f3660046140a7565b60116020525f908152604090205460ff1681565b34801561073e575f5ffd5b505f516020614c6c5f395f51905f525460ff166103ec565b348015610761575f5ffd5b506103ec6107703660046140a7565b600e6020525f908152604090205460ff1681565b34801561078f575f5ffd5b5061052661020081565b3480156107a4575f5ffd5b506104206107b3366004614534565b611ca2565b3480156107c3575f5ffd5b50610420611f0e565b3480156107d7575f5ffd5b506107e26202a30081565b6040516001600160401b0390911681526020016103f8565b348015610805575f5ffd5b50610420611fce565b348015610819575f5ffd5b50610526600c5481565b34801561082e575f5ffd5b50610420611fef565b348015610842575f5ffd5b506104206108513660046142c2565b61200e565b348015610861575f5ffd5b5061086a612062565b6040516001600160a01b0390911681526020016103f8565b34801561088d575f5ffd5b506103ec61089c3660046143fc565b612090565b3480156108ac575f5ffd5b506105266108bb366004614612565b6120c6565b3480156108cb575f5ffd5b5061052660085481565b3480156108e0575f5ffd5b506104206108ef3660046142c2565b612120565b3480156108ff575f5ffd5b5061092d61090e366004614321565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016103f8565b348015610952575f5ffd5b506105265f81565b348015610965575f5ffd5b5061099761097436600461462c565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103f8565b3480156109b7575f5ffd5b506104206109c6366004614321565b612173565b3480156109d6575f5ffd5b506104206109e5366004614654565b6122d8565b3480156109f5575f5ffd5b50610a1a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103f891906146f1565b348015610a32575f5ffd5b506103ec610a413660046140a7565b60046020525f908152604090205460ff1681565b348015610a60575f5ffd5b5060015461086a906001600160a01b031681565b348015610a7f575f5ffd5b50610526610a8e366004614321565b60056020525f908152604090205481565b348015610aaa575f5ffd5b50610abe610ab936600461462c565b612402565b604080516001600160401b0390941684526020840192909252908201526060016103f8565b348015610aee575f5ffd5b50610526600b5481565b348015610b03575f5ffd5b50610420610b12366004614703565b612493565b348015610b22575f5ffd5b50610526610b3136600461462c565b600660209081525f928352604080842090915290825290205481565b348015610b58575f5ffd5b50610420610b673660046143fc565b612597565b348015610b77575f5ffd5b5061052660095481565b348015610b8c575f5ffd5b50610420610b9b3660046142c2565b6125bf565b348015610bab575f5ffd5b506107e26212750081565b348015610bc1575f5ffd5b5061065f61271081565b348015610bd6575f5ffd5b506105265f516020614c2c5f395f51905f5281565b348015610bf6575f5ffd5b50610420610c05366004614321565b6125e4565b348015610c15575f5ffd5b506105266013600160ff1b0381565b348015610c2f575f5ffd5b50610c59610c3e366004614321565b60036020525f90815260409020805460019091015460ff1682565b6040516103f8929190614756565b348015610c72575f5ffd5b5060025461086a906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610cb657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610cc461266c565b610ccd8261269e565b335f829003610cef57604051631f2a200560e01b815260040160405180910390fd5b600c54821015610d1257604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610d60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d849190614786565b905082811015610db65760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610dce906001600160a01b031683308661271f565b6001600160a01b0384165f9081526003602052604081208054859290610df59084906147b1565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610e309084906147b1565b9250508190555082600b5f828254610e4891906147b1565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610e9491815260200190565b60405180910390a350505050565b610eaa61266c565b610eb33361269e565b610ebc816127bc565b5f8181526011602052604090205460ff1615610eeb57604051632c8d903b60e21b815260040160405180910390fd5b5f8181526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610f379084815260200190565b60405180910390a250565b610f4a61266c565b610f533361269e565b610f5c826127bc565b5f8281526011602052604090205460ff1615610f8b57604051632c8d903b60e21b815260040160405180910390fd5b610f9481611046565b5f8281526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610fe09085815260200190565b60405180910390a2336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb228260405161102191906146f1565b60405180910390a25050565b60405163c2d7f81360e01b815260040160405180910390fd5b805181901580159061105b5750610200815111155b61107857604051631e5e435f60e21b815260040160405180910390fd5b80515f19905b80156110dd57826110906001836147c4565b815181106110a0576110a06147d7565b01602001516001600160f81b031916601d60f91b036110cb576110c46001826147c4565b91506110dd565b806110d5816147eb565b91505061107e565b505f1981141580156110ee57505f81115b61110b57604051631e5e435f60e21b815260040160405180910390fd5b5f600182845161111b91906147c4565b61112591906147c4565b90505f81118015611137575060058111155b61115457604051631e5e435f60e21b815260040160405180910390fd5b5f806111618460016147b1565b90505b84518110156111ea575f858281518110611180576111806147d7565b016020015160f81c90506030811080159061119f575060398160ff1611155b6111bc57604051631e5e435f60e21b815260040160405180910390fd5b6111c7603082614800565b60ff166111d584600a614819565b6111df91906147b1565b925050600101611164565b506001821180156112295750836112028460016147b1565b81518110611212576112126147d7565b6020910101516001600160f81b031916600360fc1b145b1561124757604051631e5e435f60e21b815260040160405180910390fd5b5f81118015611258575061ffff8111155b61127557604051631e5e435f60e21b815260040160405180910390fd5b5050505050565b5f61128681612833565b6202a3006001600160401b03831610806112ab5750621275006001600160401b038316115b156112c95760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b61131861266c565b6001600160a01b0381165f908152600560205260408120543391819003611352576040516379298a5360e11b815260040160405180910390fd5b8042101561137357604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938616835292905290812054908190036113bb57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f8181526006602090815260408083209488168352938152838220829055918152600390915290812080548392906113ff9084906147c4565b909155505060025461141b906001600160a01b0316848361283d565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610e9491815260200190565b5f9081525f516020614c4c5f395f51905f52602052604090206001015490565b5f61148a81612833565b5f8261ffff161180156114a3575061271061ffff831611155b6114c05760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001611304565b8161151657611512816125e4565b5050565b61151282826128c6565b8161153e57604051638b78631d60e01b815260040160405180910390fd5b61151282826128e2565b611550612915565b5f516020614c8c5f395f51905f52805460039190600160401b900460ff1680611586575080546001600160401b03808416911610155b156115a45760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b038316908117600160401b1760ff60401b191682556040519081525f516020614bec5f395f51905f5290602001611304565b5f6115f581612833565b5f8211801561160857506301e133808211155b6116255760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001611304565b61166261266c565b3361166c8161269e565b61271061ffff831611156116935760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff9081169084168190036116d557604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff16111561176157600182015480158061170357506009546116ff90826147b1565b4210155b611720576040516316eb94cb60e01b815260040160405180910390fd5b600a546117319061ffff1683614830565b61ffff168561ffff161115611759576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f6117d081612833565b60018210156117f25760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001611304565b5f516020614c2c5f395f51905f5261183e81612833565b611846612947565b50565b61185161266c565b61185a8261269e565b335f82900361187c57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156118bf5760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561190857604051639266535160e01b815260048101829052602401610dad565b600f80545f916001600160401b0390911690826119248361484a565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f82825461199d91906147c4565b90915550506008545f906119b190426147b1565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611a419084906147c4565b9250508190555084600b5f828254611a5991906147c4565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611ac26129a6565b611acb82612a4a565b6115128282612a54565b611add612915565b5f516020614c8c5f395f51905f52805460029190600160401b900460ff1680611b13575080546001600160401b03808416911610155b15611b315760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b038616611b795760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038716611ba05760405163d92e233d60e01b815260040160405180910390fd5b611ba8612b10565b611bb0612b18565b611bc75f516020614c2c5f395f51905f5288612b28565b50611bd25f87612b28565b505f611bdc612062565b9050806001600160a01b0316876001600160a01b031614611c0057611c0087612bc9565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c55611c408585612c39565b611c4986612dce565b50805460ff60401b191681556040516001600160401b03831681525f516020614bec5f395f51905f529060200160405180910390a150505050505050565b5f611c90612e5d565b505f516020614c0c5f395f51905f5290565b611caa61266c565b33611cb481612ea6565b611cbd88612ef3565b611cc78989612f86565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cf981898c612fff565b8651604014611d1b57604051634247068760e01b815260040160405180910390fd5b61271061ffff87161115611d425760405163dc81db8560e01b815260040160405180910390fd5b611d4b856125bf565b611d54846127bc565b5f8481526011602052604090205460ff1615611d8357604051632c8d903b60e21b815260040160405180910390fd5b611d8c83611046565b600160045f611d9a8d6120c6565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611dcb8c613108565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115611e1257611e12614742565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e5857611e58614742565b02179055505060408051808201825261ffff89811682525f60208084018281526001600160a01b038916808452600d83528684209551865461ffff191695169490941785555160019485015589825260119052839020805460ff191690921790915590519091507fbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec1490611efa908d908d908b908e908e908d908d908d90614874565b60405180910390a250505050505050505050565b611f1661266c565b33611f208161269e565b6001600160a01b0381165f908152600360205260408120600101805460ff19166002179055600854611f5290426147b1565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b80549394509092909190611f8e9084906147c4565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab90602001611021565b611fd6612915565b6040516317d5c96560e11b815260040160405180910390fd5b5f516020614c2c5f395f51905f5261200681612833565b61184661312c565b61201661266c565b336120208161269e565b612029826125bf565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c348360405161102191906146f1565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f516020614c4c5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001612103949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b61212861266c565b6121313361269e565b61213a81611046565b336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb2282604051610f3791906146f1565b61217b61266c565b6001600160a01b0381165f90815260076020908152604080832033808552925282205490918190036121c057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209386168352929052206001015442101561220857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b039091169161227b9116848461283d565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522856040516122ca91815260200190565b60405180910390a450505050565b6122e061266c565b336122ea8161269e565b6122f384612ef3565b6122fd8585612f86565b604080516001600160a01b03831660208201525f9101604051602081830303815290604052905061232f818588612fff565b825160401461235157604051634247068760e01b815260040160405180910390fd5b600160045f61235f896120c6565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61239088613108565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5878787876040516123f29493929190614919565b60405180910390a2505050505050565b6001600160a01b038083165f9081526007602090815260408083209385168352929052908120805482918291820361244d57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f516020614c8c5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156124c45750825b90505f826001600160401b031660011480156124df5750303b155b9050811580156124ed575080155b1561250b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561253557845460ff60401b1916600160401b1785555b61253e86613174565b612546612b10565b61254e613185565b612559898989613263565b831561258c57845460ff60401b19168555604051600181525f516020614bec5f395f51905f529060200160405180910390a15b505050505050505050565b816125b55760405163b0b5fb9960e01b815260040160405180910390fd5b611512828261330e565b80516108008111156115125760405163239ff57f60e01b815260040160405180910390fd5b5f6125ee81612833565b6001600160a01b03821661261757604051631e4fbdf760e01b81525f6004820152602401610dad565b5f612620612062565b9050826001600160a01b0316816001600160a01b031603612649576126448361332a565b505050565b6126535f846128c6565b61265c8361332a565b6126665f82613364565b50505050565b5f516020614c6c5f395f51905f525460ff161561269c5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff16908160028111156126cf576126cf614742565b036126ed5760405163508a793f60e01b815260040160405180910390fd5b600281600281111561270157612701614742565b036115125760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156127785750833b153d17155b806112755760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610dad565b5f60205b801561280057826127d26001836147c4565b602081106127e2576127e26147d7565b1a60089290921b9190911790806127f8816147eb565b9150506127c0565b50801580159061281657506013600160ff1b0381105b61151257604051633e4ba13f60e01b815260040160405180910390fd5b61184681336133dd565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156128875750823b153d17155b806126665760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610dad565b6128cf82611460565b6128d881612833565b6126668383612b28565b6001600160a01b038116331461290b5760405163334bd91960e11b815260040160405180910390fd5b6126448282613364565b3361291e612062565b6001600160a01b03161461269c5760405163118cdaa760e01b8152336004820152602401610dad565b61294f613416565b5f516020614c6c5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a2c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a205f516020614c0c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561269c5760405163703e46dd60e11b815260040160405180910390fd5b5f61151281612833565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612aae575060408051601f3d908101601f19168201909252612aab91810190614786565b60015b612ad657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610dad565b5f516020614c0c5f395f51905f528114612b0657604051632a87526960e21b815260048101829052602401610dad565b6126448383613445565b61269c61349a565b612b2061349a565b61269c6134d0565b5f5f516020614c4c5f395f51905f52612b418484612090565b612bc0575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612b763390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cb6565b5f915050610cb6565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015612644575f838383818110612c5657612c566147d7565b612c6c9260206040909202019081019150614321565b90505f848484818110612c8157612c816147d7565b9050604002016020016020810190612c9991906143e3565b905061271061ffff82161115612cc25760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff1690816002811115612cf357612cf3614742565b03612d115760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d6020526040902060010154158015612d5257506001600160a01b0383165f908152600d602052604090205461ffff16155b8390612d7d5760405163050814e160e41b81526001600160a01b039091166004820152602401610dad565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612c3b565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612e14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e389190614786565b811115612e5857604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461269c5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115612ed557612ed5614742565b146118465760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111580612f4757507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b15612f65576040516306cf438f60e01b815260040160405180910390fd5b80515f03611846576040516306cf438f60e01b815260040160405180910390fd5b60045f612f92846120c6565b815260208101919091526040015f205460ff1615612fc25760405162da8a5760e11b815260040160405180910390fd5b600e5f612fce83613108565b815260208101919091526040015f205460ff16156115125760405163ae493b0360e01b815260040160405180910390fd5b81516020830151159015161561302857604051633a13919960e11b815260040160405180910390fd5b805115801561303957506020810151155b801561304757506040810151155b801561305557506060810151155b1561307357604051635e4362cd60e11b815260040160405180910390fd5b61307c826134f0565b5f604051806060016040528060248152602001614ba86024913990505f84826040516020016130ac929190614996565b60405160208183030381529060405290505f6130c782613557565b90506130e481856130d788613644565b6130df6136bb565b613788565b6131005760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001612103929190918252602082015260400190565b61313461266c565b5f516020614c6c5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612988565b61317c61349a565b61184681613837565b5f516020614c8c5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156131b65750825b90505f826001600160401b031660011480156131d15750303b155b9050811580156131df575080155b156131fd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561322757845460ff60401b1916600160401b1785555b435f55831561127557845460ff60401b19168555604051600181525f516020614bec5f395f51905f529060200160405180910390a15050505050565b6001600160a01b03831661328a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166132b15760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156133065760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b61331782611460565b61332081612833565b6126668383613364565b613332612915565b6001600160a01b03811661335b57604051631e4fbdf760e01b81525f6004820152602401610dad565b61184681612bc9565b5f5f516020614c4c5f395f51905f5261337d8484612090565b15612bc0575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cb6565b6133e78282612090565b6115125760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610dad565b5f516020614c6c5f395f51905f525460ff1661269c57604051638dfc202b60e01b815260040160405180910390fd5b61344e8261383f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156134925761264482826138a2565b611512613914565b5f516020614c8c5f395f51905f5254600160401b900460ff1661269c57604051631afcd79f60e31b815260040160405180910390fd5b6134d861349a565b5f516020614c6c5f395f51905f52805460ff19169055565b805160208201515f915f516020614bcc5f395f51905f5291159015161561351657505050565b8251602084015182600384858586098509088382830914838210848410161693505050816126445760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f61357483613933565b90505f516020614bcc5f395f51905f5260035f828485099050828061359b5761359b6149aa565b848209905082806135ae576135ae6149aa565b82820890505f5f6135be83613b3b565b925090505b806136275784806135d6576135d66149aa565b60018708955084806135ea576135ea6149aa565b868709925084806135fd576135fd6149aa565b86840992508480613610576136106149aa565b848408925061361e83613b3b565b925090506135c3565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f808252602082015281516020830151159015161561366b575090565b6040518060400160405280835f015181526020015f516020614bcc5f395f51905f52846020015161369c91906149be565b6136b3905f516020614bcc5f395f51905f526147c4565b905292915050565b6136e260405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061382b5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b61333261349a565b806001600160a01b03163b5f0361387457604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610dad565b5f516020614c0c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516138be91906149dd565b5f60405180830381855af49150503d805f81146138f6576040519150601f19603f3d011682016040523d82523d5f602084013e6138fb565b606091505b509150915061390b858383613c03565b95945050505050565b341561269c5760405163b398979f60e01b815260040160405180910390fd5b5f5f61393e83613c62565b805190915060308114613953576139536149e8565b5f816001600160401b0381111561396c5761396c6140be565b6040519080825280601f01601f191660200182016040528015613996576020820181803683370190505b5090505f5b82811015613a05578360016139b083866147c4565b6139ba91906147c4565b815181106139ca576139ca6147d7565b602001015160f81c60f81b8282815181106139e7576139e76147d7565b60200101906001600160f81b03191690815f1a90535060010161399b565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015613a95578381613a4185886147c4565b613a4b91906147b1565b81518110613a5b57613a5b6147d7565b602001015160f81c60f81b60f81c828281518110613a7b57613a7b6147d7565b60ff90921660209283029190910190910152600101613a2d565b505f613aa082613fad565b90506101005f516020614bcc5f395f51905f525f613abe86896147c4565b90505f5b81811015613b2b575f886001613ad884866147c4565b613ae291906147c4565b81518110613af257613af26147d7565b016020015160f81c90508380613b0a57613b0a6149aa565b85870995508380613b1d57613b1d6149aa565b818708955050600101613ac2565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020614bcc5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083613bc957604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613be257613bdf83826147c4565b92505b8080613bf057613bf06149aa565b8384099690961496919550909350505050565b606082613c1857613c1382614014565b613c5b565b8151158015613c2f57506001600160a01b0384163b155b15613c5857604051639996b31560e01b81526001600160a01b0385166004820152602401610dad565b50805b9392505050565b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001613ca2929190614996565b6040516020818303038152906040529050808460f81b604051602001613cc99291906149fc565b604051602081830303815290604052905080604051602001613ceb9190614a26565b60408051601f1981840301815290829052915061010160f01b90613d159083908390602001614a3e565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b03811115613d8457613d846140be565b6040519080825280601f01601f191660200182016040528015613dae576020820181803683370190505b5090505f82604051602001613dc591815260200190565b60408051601f1981840301815291905290505f5b8151811015613e2f57818181518110613df457613df46147d7565b602001015160f81c60f81b838281518110613e1157613e116147d7565b60200101906001600160f81b03191690815f1a905350600101613dd9565b505f84604051602001613e4491815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613ed6575f838281518110613e7d57613e7d6147d7565b602001015160f81c60f81b838381518110613e9a57613e9a6147d7565b602001015160f81c60f81b1890508881604051602001613ebb929190614a62565b60408051601f19818403018152919052985050600101613e62565b50868887604051602001613eec93929190614a86565b60405160208183030381529060405296508680519060200120935083604051602001613f1a91815260200190565b60408051601f1981840301815291905291505f5b613f3b8a60ff8d166147c4565b811015613f9c57828181518110613f5457613f546147d7565b01602001516001600160f81b03191684613f6e838d6147b1565b81518110613f7e57613f7e6147d7565b60200101906001600160f81b03191690815f1a905350600101613f2e565b50919b9a5050505050505050505050565b5f80805b835181101561400d57838181518110613fcc57613fcc6147d7565b602002602001015160ff16816008613fe49190614819565b613fef906002614b9c565b613ff99190614819565b61400390836147b1565b9150600101613fb1565b5092915050565b8051156140245780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f6020828403121561404d575f5ffd5b81356001600160e01b031981168114613c5b575f5ffd5b80356001600160a01b038116811461407a575f5ffd5b919050565b5f5f60408385031215614090575f5ffd5b61409983614064565b946020939093013593505050565b5f602082840312156140b7575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156140f4576140f46140be565b60405290565b5f82601f830112614109575f5ffd5b8135602083015f5f6001600160401b03841115614128576141286140be565b50604051601f19601f85018116603f011681018181106001600160401b0382111715614156576141566140be565b60405283815290508082840187101561416d575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f6040838503121561419a575f5ffd5b8235915060208301356001600160401b038111156141b6575f5ffd5b6141c2858286016140fa565b9150509250929050565b5f608082840312156141dc575f5ffd5b604051608081016001600160401b03811182821017156141fe576141fe6140be565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561423c575f5ffd5b6142446140d2565b823581526020928301359281019290925250919050565b803561ffff8116811461407a575f5ffd5b5f5f5f5f6101208587031215614280575f5ffd5b61428a86866141cc565b9350614299866080870161422c565b92506142a88660c0870161422c565b91506142b7610100860161425b565b905092959194509250565b5f602082840312156142d2575f5ffd5b81356001600160401b038111156142e7575f5ffd5b6142f3848285016140fa565b949350505050565b5f6020828403121561430b575f5ffd5b81356001600160401b0381168114613c5b575f5ffd5b5f60208284031215614331575f5ffd5b613c5b82614064565b5f5f5f5f5f5f6101608789031215614350575f5ffd5b61435a88886141cc565b9550614369886080890161422c565b94506143788860c0890161422c565b93506101008701356001600160401b03811115614393575f5ffd5b61439f89828a016140fa565b9350506143af610120880161425b565b91506101408701356001600160401b038111156143ca575f5ffd5b6143d689828a016140fa565b9150509295509295509295565b5f602082840312156143f3575f5ffd5b613c5b8261425b565b5f5f6040838503121561440d575f5ffd5b8235915061441d60208401614064565b90509250929050565b5f5f60408385031215614437575f5ffd5b61444083614064565b915060208301356001600160401b038111156141b6575f5ffd5b5f5f5f5f5f6080868803121561446e575f5ffd5b61447786614064565b945061448560208701614064565b93506040860135925060608601356001600160401b038111156144a6575f5ffd5b8601601f810188136144b6575f5ffd5b80356001600160401b038111156144cb575f5ffd5b8860208260061b84010111156144df575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215614503575f5ffd5b61450d85856141cc565b925061451c856080860161422c565b915061452b8560c0860161422c565b90509250925092565b5f5f5f5f5f5f5f5f6101a0898b03121561454c575f5ffd5b6145568a8a6141cc565b97506145658a60808b0161422c565b96506145748a60c08b0161422c565b95506101008901356001600160401b0381111561458f575f5ffd5b61459b8b828c016140fa565b9550506145ab6101208a0161425b565b93506101408901356001600160401b038111156145c6575f5ffd5b6145d28b828c016140fa565b93505061016089013591506101808901356001600160401b038111156145f6575f5ffd5b6146028b828c016140fa565b9150509295985092959890939650565b5f60808284031215614622575f5ffd5b613c5b83836141cc565b5f5f6040838503121561463d575f5ffd5b61464683614064565b915061441d60208401614064565b5f5f5f5f6101208587031215614668575f5ffd5b61467286866141cc565b9350614681866080870161422c565b92506146908660c0870161422c565b91506101008501356001600160401b038111156146ab575f5ffd5b6146b7878288016140fa565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613c5b60208301846146c3565b5f5f5f5f60808587031215614716575f5ffd5b61471f85614064565b935061472d60208601614064565b9250604085013591506142b760608601614064565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061477957634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215614796575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cb657610cb661479d565b81810381811115610cb657610cb661479d565b634e487b7160e01b5f52603260045260245ffd5b5f816147f9576147f961479d565b505f190190565b60ff8281168282160390811115610cb657610cb661479d565b8082028115828204841417610cb657610cb661479d565b61ffff8181168382160190811115610cb657610cb661479d565b5f6001600160401b0382166001600160401b03810361486b5761486b61479d565b60010192915050565b885181526020808a0151908201526040808a0151908201526060808a01519082015287516080820152602088015160a082015261ffff871660c0820152855160e082015260208601516101008201526101a06101208201525f6148db6101a08301876146c3565b8281036101408401526148ee81876146c3565b90508461016084015282810361018084015261490a81856146c3565b9b9a5050505050505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f6149756101208301846146c3565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f6142f36149a4838661497f565b8461497f565b634e487b7160e01b5f52601260045260245ffd5b5f826149d857634e487b7160e01b5f52601260045260245ffd5b500690565b5f613c5b828461497f565b634e487b7160e01b5f52600160045260245ffd5b5f614a07828561497f565b5f81526001600160f81b03199390931660018401525050600201919050565b5f614a31828461497f565b5f81526001019392505050565b5f614a49828561497f565b6001600160f01b03199390931683525050600201919050565b5f614a6d828561497f565b6001600160f81b03199390931683525050600101919050565b5f614a91828661497f565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b6001815b6001841115614af457808504811115614ad857614ad861479d565b6001841615614ae657908102905b60019390931c928002614abd565b935093915050565b5f82614b0a57506001610cb6565b81614b1657505f610cb6565b8160018114614b2c5760028114614b3657614b52565b6001915050610cb6565b60ff841115614b4757614b4761479d565b50506001821b610cb6565b5060208310610133831016604e8410600b8410161715614b75575081810a610cb6565b614b815f198484614ab9565b805f1904821115614b9457614b9461479d565b029392505050565b5f613c5b8383614afc56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
4555    /// ```
4556    #[rustfmt::skip]
4557    #[allow(clippy::all)]
4558    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4559        b"`\x80`@R`\x046\x10a\x03\xC9W_5`\xE0\x1C\x80cj\xD2\x8E\x9F\x11a\x01\xF4W\x80c\xB3\xE6\xEB\xD5\x11a\x01\x13W\x80c\xD9\xCC}&\x11a\0\xA8W\x80c\xE6:\xB1\xE9\x11a\0xW\x80c\xE6:\xB1\xE9\x14a\x0B\xCBW\x80c\xF2\xFD\xE3\x8B\x14a\x0B\xEBW\x80c\xF6wz\x10\x14a\x0C\nW\x80c\xFAR\xC7\xD8\x14a\x0C$W\x80c\xFC\x0CTj\x14a\x0CgW__\xFD[\x80c\xD9\xCC}&\x14a\x0BlW\x80c\xE3\xF27\xE6\x14a\x0B\x81W\x80c\xE4\xD1\xFB\x94\x14a\x0B\xA0W\x80c\xE6)w\xF8\x14a\x0B\xB6W__\xFD[\x80c\xBDI\xC3_\x11a\0\xE3W\x80c\xBDI\xC3_\x14a\n\xE3W\x80c\xBE 0\x94\x14a\n\xF8W\x80c\xC6H\x14\xDD\x14a\x0B\x17W\x80c\xD5Gt\x1F\x14a\x0BMW__\xFD[\x80c\xB3\xE6\xEB\xD5\x14a\n'W\x80c\xB5p\x0Eh\x14a\nUW\x80c\xB5\xEC\xB3D\x14a\ntW\x80c\xBB`\xBF\xB0\x14a\n\x9FW__\xFD[\x80c\x9E\x9A\x8F1\x11a\x01\x89W\x80c\xA2\xD7\x8D\xD5\x11a\x01YW\x80c\xA2\xD7\x8D\xD5\x14a\tZW\x80c\xA3\x06j\xAB\x14a\t\xACW\x80c\xAC\\*\xD0\x14a\t\xCBW\x80c\xAD<\xB1\xCC\x14a\t\xEAW__\xFD[\x80c\x9E\x9A\x8F1\x14a\x08\xC0W\x80c\x9E\xC9\xC18\x14a\x08\xD5W\x80c\x9F\xFBkC\x14a\x08\xF4W\x80c\xA2\x17\xFD\xDF\x14a\tGW__\xFD[\x80c\x87\x0C\x8F&\x11a\x01\xC4W\x80c\x87\x0C\x8F&\x14a\x087W\x80c\x8D\xA5\xCB[\x14a\x08VW\x80c\x91\xD1HT\x14a\x08\x82W\x80c\x9B0\xA5\xE6\x14a\x08\xA1W__\xFD[\x80cj\xD2\x8E\x9F\x14a\x07\xCCW\x80cqP\x18\xA6\x14a\x07\xFAW\x80cr\xE9\xC94\x14a\x08\x0EW\x80c\x84V\xCBY\x14a\x08#W__\xFD[\x80c9K4\x8F\x11a\x02\xEBW\x80cRx\x0Bn\x11a\x02\x80W\x80c\\\x97Z\xBB\x11a\x02PW\x80c\\\x97Z\xBB\x14a\x073W\x80c_\x87T\xA6\x14a\x07VW\x80capf\xE5\x14a\x07\x84W\x80ch\x87\xCD6\x14a\x07\x99W\x80cj\x91\x1C\xCF\x14a\x07\xB8W__\xFD[\x80cRx\x0Bn\x14a\x06\xB8W\x80cR\xD1\x90-\x14a\x06\xD7W\x80cUD\xC2\xF1\x14a\x06\xEBW\x80cZ/Q\xFD\x14a\x07\x05W__\xFD[\x80c?;\xB3f\x11a\x02\xBBW\x80c?;\xB3f\x14a\x06EW\x80c?K\xA8:\x14a\x06rW\x80cM\x99\xDD\x16\x14a\x06\x86W\x80cO\x1E\xF2\x86\x14a\x06\xA5W__\xFD[\x80c9K4\x8F\x14a\x05\xD4W\x80c;+\x7F\xFA\x14a\x05\xF3W\x80c>s.\xBA\x14a\x06\x12W\x80c>\x9D\xF9\xB5\x14a\x061W__\xFD[\x80c!@\xFE\xCD\x11a\x03aW\x80c//\xF1]\x11a\x031W\x80c//\xF1]\x14a\x05mW\x80c/\xE2\x87Y\x14a\x05\x8CW\x80c6V\x8A\xBE\x14a\x05\xA1W\x80c8\xE4T\xB1\x14a\x05\xC0W__\xFD[\x80c!@\xFE\xCD\x14a\x04\xE8W\x80c$\x8A\x9C\xA3\x14a\x05\x07W\x80c+\x9E\\\x8A\x14a\x054W\x80c-\xC9\xBA\xC6\x14a\x05NW__\xFD[\x80c\r\x8En,\x11a\x03\x9CW\x80c\r\x8En,\x14a\x04`W\x80c\x13\xB9\x05z\x14a\x04\x8BW\x80c\x15\xF3\x185\x14a\x04\xAAW\x80c\x1A \xCDc\x14a\x04\xC9W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03\xCDW\x80c\x02n@+\x14a\x04\x01W\x80c\x07=%\xFC\x14a\x04\"W\x80c\x0C\xB2\x97d\x14a\x04AW[__\xFD[4\x80\x15a\x03\xD8W__\xFD[Pa\x03\xECa\x03\xE76`\x04a@=V[a\x0C\x86V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x04\x0CW__\xFD[Pa\x04 a\x04\x1B6`\x04a@\x7FV[a\x0C\xBCV[\0[4\x80\x15a\x04-W__\xFD[Pa\x04 a\x04<6`\x04a@\xA7V[a\x0E\xA2V[4\x80\x15a\x04LW__\xFD[Pa\x04 a\x04[6`\x04aA\x89V[a\x0FBV[4\x80\x15a\x04kW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\xF8V[4\x80\x15a\x04\x96W__\xFD[Pa\x04 a\x04\xA56`\x04aBlV[a\x10-V[4\x80\x15a\x04\xB5W__\xFD[Pa\x04 a\x04\xC46`\x04aB\xC2V[a\x10FV[4\x80\x15a\x04\xD4W__\xFD[Pa\x04 a\x04\xE36`\x04aB\xFBV[a\x12|V[4\x80\x15a\x04\xF3W__\xFD[Pa\x04 a\x05\x026`\x04aC!V[a\x13\x10V[4\x80\x15a\x05\x12W__\xFD[Pa\x05&a\x05!6`\x04a@\xA7V[a\x14`V[`@Q\x90\x81R` \x01a\x03\xF8V[4\x80\x15a\x05?W__\xFD[Pa\x04 a\x04\xA56`\x04aC:V[4\x80\x15a\x05YW__\xFD[Pa\x04 a\x05h6`\x04aC\xE3V[a\x14\x80V[4\x80\x15a\x05xW__\xFD[Pa\x04 a\x05\x876`\x04aC\xFCV[a\x15\x04V[4\x80\x15a\x05\x97W__\xFD[Pa\x05&a\x08\0\x81V[4\x80\x15a\x05\xACW__\xFD[Pa\x04 a\x05\xBB6`\x04aC\xFCV[a\x15 V[4\x80\x15a\x05\xCBW__\xFD[Pa\x04 a\x15HV[4\x80\x15a\x05\xDFW__\xFD[Pa\x04 a\x05\xEE6`\x04a@\xA7V[a\x15\xEBV[4\x80\x15a\x05\xFEW__\xFD[Pa\x04 a\x06\r6`\x04aC\xE3V[a\x16ZV[4\x80\x15a\x06\x1DW__\xFD[Pa\x04 a\x06,6`\x04a@\xA7V[a\x17\xC6V[4\x80\x15a\x06<W__\xFD[Pa\x05&_T\x81V[4\x80\x15a\x06PW__\xFD[P`\nTa\x06_\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x06}W__\xFD[Pa\x04 a\x18'V[4\x80\x15a\x06\x91W__\xFD[Pa\x04 a\x06\xA06`\x04a@\x7FV[a\x18IV[a\x04 a\x06\xB36`\x04aD&V[a\x1A\xBAV[4\x80\x15a\x06\xC3W__\xFD[Pa\x04 a\x06\xD26`\x04aDZV[a\x1A\xD5V[4\x80\x15a\x06\xE2W__\xFD[Pa\x05&a\x1C\x87V[4\x80\x15a\x06\xF6W__\xFD[Pa\x04 a\x04\xA56`\x04aD\xF0V[4\x80\x15a\x07\x10W__\xFD[Pa\x03\xECa\x07\x1F6`\x04a@\xA7V[`\x11` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07>W__\xFD[P_Q` aLl_9_Q\x90_RT`\xFF\x16a\x03\xECV[4\x80\x15a\x07aW__\xFD[Pa\x03\xECa\x07p6`\x04a@\xA7V[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07\x8FW__\xFD[Pa\x05&a\x02\0\x81V[4\x80\x15a\x07\xA4W__\xFD[Pa\x04 a\x07\xB36`\x04aE4V[a\x1C\xA2V[4\x80\x15a\x07\xC3W__\xFD[Pa\x04 a\x1F\x0EV[4\x80\x15a\x07\xD7W__\xFD[Pa\x07\xE2b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x08\x05W__\xFD[Pa\x04 a\x1F\xCEV[4\x80\x15a\x08\x19W__\xFD[Pa\x05&`\x0CT\x81V[4\x80\x15a\x08.W__\xFD[Pa\x04 a\x1F\xEFV[4\x80\x15a\x08BW__\xFD[Pa\x04 a\x08Q6`\x04aB\xC2V[a \x0EV[4\x80\x15a\x08aW__\xFD[Pa\x08ja bV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x08\x8DW__\xFD[Pa\x03\xECa\x08\x9C6`\x04aC\xFCV[a \x90V[4\x80\x15a\x08\xACW__\xFD[Pa\x05&a\x08\xBB6`\x04aF\x12V[a \xC6V[4\x80\x15a\x08\xCBW__\xFD[Pa\x05&`\x08T\x81V[4\x80\x15a\x08\xE0W__\xFD[Pa\x04 a\x08\xEF6`\x04aB\xC2V[a! V[4\x80\x15a\x08\xFFW__\xFD[Pa\t-a\t\x0E6`\x04aC!V[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xF8V[4\x80\x15a\tRW__\xFD[Pa\x05&_\x81V[4\x80\x15a\teW__\xFD[Pa\t\x97a\tt6`\x04aF,V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xF8V[4\x80\x15a\t\xB7W__\xFD[Pa\x04 a\t\xC66`\x04aC!V[a!sV[4\x80\x15a\t\xD6W__\xFD[Pa\x04 a\t\xE56`\x04aFTV[a\"\xD8V[4\x80\x15a\t\xF5W__\xFD[Pa\n\x1A`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\xF8\x91\x90aF\xF1V[4\x80\x15a\n2W__\xFD[Pa\x03\xECa\nA6`\x04a@\xA7V[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\n`W__\xFD[P`\x01Ta\x08j\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\n\x7FW__\xFD[Pa\x05&a\n\x8E6`\x04aC!V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\n\xAAW__\xFD[Pa\n\xBEa\n\xB96`\x04aF,V[a$\x02V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\xF8V[4\x80\x15a\n\xEEW__\xFD[Pa\x05&`\x0BT\x81V[4\x80\x15a\x0B\x03W__\xFD[Pa\x04 a\x0B\x126`\x04aG\x03V[a$\x93V[4\x80\x15a\x0B\"W__\xFD[Pa\x05&a\x0B16`\x04aF,V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x0BXW__\xFD[Pa\x04 a\x0Bg6`\x04aC\xFCV[a%\x97V[4\x80\x15a\x0BwW__\xFD[Pa\x05&`\tT\x81V[4\x80\x15a\x0B\x8CW__\xFD[Pa\x04 a\x0B\x9B6`\x04aB\xC2V[a%\xBFV[4\x80\x15a\x0B\xABW__\xFD[Pa\x07\xE2b\x12u\0\x81V[4\x80\x15a\x0B\xC1W__\xFD[Pa\x06_a'\x10\x81V[4\x80\x15a\x0B\xD6W__\xFD[Pa\x05&_Q` aL,_9_Q\x90_R\x81V[4\x80\x15a\x0B\xF6W__\xFD[Pa\x04 a\x0C\x056`\x04aC!V[a%\xE4V[4\x80\x15a\x0C\x15W__\xFD[Pa\x05&`\x13`\x01`\xFF\x1B\x03\x81V[4\x80\x15a\x0C/W__\xFD[Pa\x0CYa\x0C>6`\x04aC!V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\xF8\x92\x91\x90aGVV[4\x80\x15a\x0CrW__\xFD[P`\x02Ta\x08j\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0C\xB6WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0C\xC4a&lV[a\x0C\xCD\x82a&\x9EV[3_\x82\x90\x03a\x0C\xEFW`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\r\x12W`@Qc})\x871`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r`W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x84\x91\x90aG\x86V[\x90P\x82\x81\x10\x15a\r\xB6W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\r\xCE\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a'\x1FV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\r\xF5\x90\x84\x90aG\xB1V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x0E0\x90\x84\x90aG\xB1V[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0EH\x91\x90aG\xB1V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\x0E\x94\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0E\xAAa&lV[a\x0E\xB33a&\x9EV[a\x0E\xBC\x81a'\xBCV[_\x81\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0E\xEBW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F7\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PV[a\x0FJa&lV[a\x0FS3a&\x9EV[a\x0F\\\x82a'\xBCV[_\x82\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0F\x8BW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x94\x81a\x10FV[_\x82\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F\xE0\x90\x85\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x10!\x91\x90aF\xF1V[`@Q\x80\x91\x03\x90\xA2PPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x81\x90\x15\x80\x15\x90a\x10[WPa\x02\0\x81Q\x11\x15[a\x10xW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x19\x90[\x80\x15a\x10\xDDW\x82a\x10\x90`\x01\x83aG\xC4V[\x81Q\x81\x10a\x10\xA0Wa\x10\xA0aG\xD7V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x1D`\xF9\x1B\x03a\x10\xCBWa\x10\xC4`\x01\x82aG\xC4V[\x91Pa\x10\xDDV[\x80a\x10\xD5\x81aG\xEBV[\x91PPa\x10~V[P_\x19\x81\x14\x15\x80\x15a\x10\xEEWP_\x81\x11[a\x11\x0BW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01\x82\x84Qa\x11\x1B\x91\x90aG\xC4V[a\x11%\x91\x90aG\xC4V[\x90P_\x81\x11\x80\x15a\x117WP`\x05\x81\x11\x15[a\x11TW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80a\x11a\x84`\x01aG\xB1V[\x90P[\x84Q\x81\x10\x15a\x11\xEAW_\x85\x82\x81Q\x81\x10a\x11\x80Wa\x11\x80aG\xD7V[\x01` \x01Q`\xF8\x1C\x90P`0\x81\x10\x80\x15\x90a\x11\x9FWP`9\x81`\xFF\x16\x11\x15[a\x11\xBCW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xC7`0\x82aH\0V[`\xFF\x16a\x11\xD5\x84`\naH\x19V[a\x11\xDF\x91\x90aG\xB1V[\x92PP`\x01\x01a\x11dV[P`\x01\x82\x11\x80\x15a\x12)WP\x83a\x12\x02\x84`\x01aG\xB1V[\x81Q\x81\x10a\x12\x12Wa\x12\x12aG\xD7V[` \x91\x01\x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x03`\xFC\x1B\x14[\x15a\x12GW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x11\x80\x15a\x12XWPa\xFF\xFF\x81\x11\x15[a\x12uW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[_a\x12\x86\x81a(3V[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\x12\xABWPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\x12\xC9W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x18a&lV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x13RW`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x13sW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x13\xBBW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x13\xFF\x90\x84\x90aG\xC4V[\x90\x91UPP`\x02Ta\x14\x1B\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a(=V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\x0E\x94\x91\x81R` \x01\x90V[_\x90\x81R_Q` aLL_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[_a\x14\x8A\x81a(3V[_\x82a\xFF\xFF\x16\x11\x80\x15a\x14\xA3WPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x14\xC0W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\x13\x04V[\x81a\x15\x16Wa\x15\x12\x81a%\xE4V[PPV[a\x15\x12\x82\x82a(\xC6V[\x81a\x15>W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x12\x82\x82a(\xE2V[a\x15Pa)\x15V[_Q` aL\x8C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x15\x86WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x15\xA4W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x90\x81\x17`\x01`@\x1B\x17`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01a\x13\x04V[_a\x15\xF5\x81a(3V[_\x82\x11\x80\x15a\x16\x08WPc\x01\xE13\x80\x82\x11\x15[a\x16%W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\x13\x04V[a\x16ba&lV[3a\x16l\x81a&\x9EV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x16\x93W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x16\xD5W`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x17aW`\x01\x82\x01T\x80\x15\x80a\x17\x03WP`\tTa\x16\xFF\x90\x82aG\xB1V[B\x10\x15[a\x17 W`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x171\x90a\xFF\xFF\x16\x83aH0V[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x17YW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x17\xD0\x81a(3V[`\x01\x82\x10\x15a\x17\xF2W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\x13\x04V[_Q` aL,_9_Q\x90_Ra\x18>\x81a(3V[a\x18Fa)GV[PV[a\x18Qa&lV[a\x18Z\x82a&\x9EV[3_\x82\x90\x03a\x18|W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x18\xBFW`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x19\x08W`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\xADV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x19$\x83aHJV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x19\x9D\x91\x90aG\xC4V[\x90\x91UPP`\x08T_\x90a\x19\xB1\x90BaG\xB1V[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x1AA\x90\x84\x90aG\xC4V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x1AY\x91\x90aG\xC4V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x1A\xC2a)\xA6V[a\x1A\xCB\x82a*JV[a\x15\x12\x82\x82a*TV[a\x1A\xDDa)\x15V[_Q` aL\x8C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1B\x13WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1B1W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x1ByW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1B\xA0W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xA8a+\x10V[a\x1B\xB0a+\x18V[a\x1B\xC7_Q` aL,_9_Q\x90_R\x88a+(V[Pa\x1B\xD2_\x87a+(V[P_a\x1B\xDCa bV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1C\0Wa\x1C\0\x87a+\xC9V[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x1C@\x85\x85a,9V[a\x1CI\x86a-\xCEV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x1C\x90a.]V[P_Q` aL\x0C_9_Q\x90_R\x90V[a\x1C\xAAa&lV[3a\x1C\xB4\x81a.\xA6V[a\x1C\xBD\x88a.\xF3V[a\x1C\xC7\x89\x89a/\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xF9\x81\x89\x8Ca/\xFFV[\x86Q`@\x14a\x1D\x1BW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x87\x16\x11\x15a\x1DBW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1DK\x85a%\xBFV[a\x1DT\x84a'\xBCV[_\x84\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x1D\x83W`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x8C\x83a\x10FV[`\x01`\x04_a\x1D\x9A\x8Da \xC6V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D\xCB\x8Ca1\x08V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x1E\x12Wa\x1E\x12aGBV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x1EXWa\x1EXaGBV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x89\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x83R\x86\x84 \x95Q\x86Ta\xFF\xFF\x19\x16\x95\x16\x94\x90\x94\x17\x85UQ`\x01\x94\x85\x01U\x89\x82R`\x11\x90R\x83\x90 \x80T`\xFF\x19\x16\x90\x92\x17\x90\x91U\x90Q\x90\x91P\x7F\xBF\x14\xCD\x7F\xEApC]BO\x92\xF7\xA3\xD0\x11\t\xA5\x83D\x9Dq\x88\x98\xA6\xA9i\x87\x9CTv\xEC\x14\x90a\x1E\xFA\x90\x8D\x90\x8D\x90\x8B\x90\x8E\x90\x8E\x90\x8D\x90\x8D\x90\x8D\x90aHtV[`@Q\x80\x91\x03\x90\xA2PPPPPPPPPPV[a\x1F\x16a&lV[3a\x1F \x81a&\x9EV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x1FR\x90BaG\xB1V[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x1F\x8E\x90\x84\x90aG\xC4V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01a\x10!V[a\x1F\xD6a)\x15V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aL,_9_Q\x90_Ra \x06\x81a(3V[a\x18Fa1,V[a \x16a&lV[3a  \x81a&\x9EV[a )\x82a%\xBFV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x10!\x91\x90aF\xF1V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[_\x91\x82R_Q` aLL_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a!\x03\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a!(a&lV[a!13a&\x9EV[a!:\x81a\x10FV[3`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x0F7\x91\x90aF\xF1V[a!{a&lV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a!\xC0W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\"\x08W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\"{\x91\x16\x84\x84a(=V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\"\xCA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\"\xE0a&lV[3a\"\xEA\x81a&\x9EV[a\"\xF3\x84a.\xF3V[a\"\xFD\x85\x85a/\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa#/\x81\x85\x88a/\xFFV[\x82Q`@\x14a#QW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a#_\x89a \xC6V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a#\x90\x88a1\x08V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa#\xF2\x94\x93\x92\x91\x90aI\x19V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a$MW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aL\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a$\xC4WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a$\xDFWP0;\x15[\x90P\x81\x15\x80\x15a$\xEDWP\x80\x15[\x15a%\x0BW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a%5W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a%>\x86a1tV[a%Fa+\x10V[a%Na1\x85V[a%Y\x89\x89\x89a2cV[\x83\x15a%\x8CW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a%\xB5W`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x12\x82\x82a3\x0EV[\x80Qa\x08\0\x81\x11\x15a\x15\x12W`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a%\xEE\x81a(3V[`\x01`\x01`\xA0\x1B\x03\x82\x16a&\x17W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\xADV[_a& a bV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a&IWa&D\x83a3*V[PPPV[a&S_\x84a(\xC6V[a&\\\x83a3*V[a&f_\x82a3dV[PPPPV[_Q` aLl_9_Q\x90_RT`\xFF\x16\x15a&\x9CW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a&\xCFWa&\xCFaGBV[\x03a&\xEDW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a'\x01Wa'\x01aGBV[\x03a\x15\x12W`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a'xWP\x83;\x15=\x17\x15[\x80a\x12uW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\r\xADV[_` [\x80\x15a(\0W\x82a'\xD2`\x01\x83aG\xC4V[` \x81\x10a'\xE2Wa'\xE2aG\xD7V[\x1A`\x08\x92\x90\x92\x1B\x91\x90\x91\x17\x90\x80a'\xF8\x81aG\xEBV[\x91PPa'\xC0V[P\x80\x15\x80\x15\x90a(\x16WP`\x13`\x01`\xFF\x1B\x03\x81\x10[a\x15\x12W`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18F\x813a3\xDDV[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a(\x87WP\x82;\x15=\x17\x15[\x80a&fW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\r\xADV[a(\xCF\x82a\x14`V[a(\xD8\x81a(3V[a&f\x83\x83a+(V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a)\x0BW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a&D\x82\x82a3dV[3a)\x1Ea bV[`\x01`\x01`\xA0\x1B\x03\x16\x14a&\x9CW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\xADV[a)Oa4\x16V[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a*,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a* _Q` aL\x0C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a&\x9CW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x15\x12\x81a(3V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a*\xAEWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra*\xAB\x91\x81\x01\x90aG\x86V[`\x01[a*\xD6W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\xADV[_Q` aL\x0C_9_Q\x90_R\x81\x14a+\x06W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\xADV[a&D\x83\x83a4EV[a&\x9Ca4\x9AV[a+ a4\x9AV[a&\x9Ca4\xD0V[__Q` aLL_9_Q\x90_Ra+A\x84\x84a \x90V[a+\xC0W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua+v3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0C\xB6V[_\x91PPa\x0C\xB6V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[_[\x81\x81\x10\x15a&DW_\x83\x83\x83\x81\x81\x10a,VWa,VaG\xD7V[a,l\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91PaC!V[\x90P_\x84\x84\x84\x81\x81\x10a,\x81Wa,\x81aG\xD7V[\x90P`@\x02\x01` \x01` \x81\x01\x90a,\x99\x91\x90aC\xE3V[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a,\xC2W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a,\xF3Wa,\xF3aGBV[\x03a-\x11W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a-RWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a-}W`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\r\xADV[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a,;V[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a.\x14W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.8\x91\x90aG\x86V[\x81\x11\x15a.XW`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a&\x9CW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a.\xD5Wa.\xD5aGBV[\x14a\x18FW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a/GWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a/eW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x18FW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a/\x92\x84a \xC6V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a/\xC2W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a/\xCE\x83a1\x08V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x15\x12W`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a0(W`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a09WP` \x81\x01Q\x15[\x80\x15a0GWP`@\x81\x01Q\x15[\x80\x15a0UWP``\x81\x01Q\x15[\x15a0sW`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0|\x82a4\xF0V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aK\xA8`$\x919\x90P_\x84\x82`@Q` \x01a0\xAC\x92\x91\x90aI\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a0\xC7\x82a5WV[\x90Pa0\xE4\x81\x85a0\xD7\x88a6DV[a0\xDFa6\xBBV[a7\x88V[a1\0W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a!\x03\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a14a&lV[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a)\x88V[a1|a4\x9AV[a\x18F\x81a87V[_Q` aL\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a1\xB6WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a1\xD1WP0;\x15[\x90P\x81\x15\x80\x15a1\xDFWP\x80\x15[\x15a1\xFDW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a2'W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x12uW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a2\x8AW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a2\xB1W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a3\x06W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a3\x17\x82a\x14`V[a3 \x81a(3V[a&f\x83\x83a3dV[a32a)\x15V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3[W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\xADV[a\x18F\x81a+\xC9V[__Q` aLL_9_Q\x90_Ra3}\x84\x84a \x90V[\x15a+\xC0W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0C\xB6V[a3\xE7\x82\x82a \x90V[a\x15\x12W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\r\xADV[_Q` aLl_9_Q\x90_RT`\xFF\x16a&\x9CW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4N\x82a8?V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a4\x92Wa&D\x82\x82a8\xA2V[a\x15\x12a9\x14V[_Q` aL\x8C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a&\x9CW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4\xD8a4\x9AV[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[\x80Q` \x82\x01Q_\x91_Q` aK\xCC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a5\x16WPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a&DW`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a5t\x83a93V[\x90P_Q` aK\xCC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a5\x9BWa5\x9BaI\xAAV[\x84\x82\t\x90P\x82\x80a5\xAEWa5\xAEaI\xAAV[\x82\x82\x08\x90P__a5\xBE\x83a;;V[\x92P\x90P[\x80a6'W\x84\x80a5\xD6Wa5\xD6aI\xAAV[`\x01\x87\x08\x95P\x84\x80a5\xEAWa5\xEAaI\xAAV[\x86\x87\t\x92P\x84\x80a5\xFDWa5\xFDaI\xAAV[\x86\x84\t\x92P\x84\x80a6\x10Wa6\x10aI\xAAV[\x84\x84\x08\x92Pa6\x1E\x83a;;V[\x92P\x90Pa5\xC3V[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a6kWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aK\xCC_9_Q\x90_R\x84` \x01Qa6\x9C\x91\x90aI\xBEV[a6\xB3\x90_Q` aK\xCC_9_Q\x90_RaG\xC4V[\x90R\x92\x91PPV[a6\xE2`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a8+W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a32a4\x9AV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a8tW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\xADV[_Q` aL\x0C_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa8\xBE\x91\x90aI\xDDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a8\xF6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a8\xFBV[``\x91P[P\x91P\x91Pa9\x0B\x85\x83\x83a<\x03V[\x95\x94PPPPPV[4\x15a&\x9CW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a9>\x83a<bV[\x80Q\x90\x91P`0\x81\x14a9SWa9SaI\xE8V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a9lWa9la@\xBEV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a9\x96W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a:\x05W\x83`\x01a9\xB0\x83\x86aG\xC4V[a9\xBA\x91\x90aG\xC4V[\x81Q\x81\x10a9\xCAWa9\xCAaG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a9\xE7Wa9\xE7aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a9\x9BV[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a:\x95W\x83\x81a:A\x85\x88aG\xC4V[a:K\x91\x90aG\xB1V[\x81Q\x81\x10a:[Wa:[aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a:{Wa:{aG\xD7V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a:-V[P_a:\xA0\x82a?\xADV[\x90Pa\x01\0_Q` aK\xCC_9_Q\x90_R_a:\xBE\x86\x89aG\xC4V[\x90P_[\x81\x81\x10\x15a;+W_\x88`\x01a:\xD8\x84\x86aG\xC4V[a:\xE2\x91\x90aG\xC4V[\x81Q\x81\x10a:\xF2Wa:\xF2aG\xD7V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a;\nWa;\naI\xAAV[\x85\x87\t\x95P\x83\x80a;\x1DWa;\x1DaI\xAAV[\x81\x87\x08\x95PP`\x01\x01a:\xC2V[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` aK\xCC_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a;\xC9W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a;\xE2Wa;\xDF\x83\x82aG\xC4V[\x92P[\x80\x80a;\xF0Wa;\xF0aI\xAAV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[``\x82a<\x18Wa<\x13\x82a@\x14V[a<[V[\x81Q\x15\x80\x15a</WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a<XW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\xADV[P\x80[\x93\x92PPPV[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a<\xA2\x92\x91\x90aI\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a<\xC9\x92\x91\x90aI\xFCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a<\xEB\x91\x90aJ&V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a=\x15\x90\x83\x90\x83\x90` \x01aJ>V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x84Wa=\x84a@\xBEV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a=\xAEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a=\xC5\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a>/W\x81\x81\x81Q\x81\x10a=\xF4Wa=\xF4aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a>\x11Wa>\x11aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a=\xD9V[P_\x84`@Q` \x01a>D\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a>\xD6W_\x83\x82\x81Q\x81\x10a>}Wa>}aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a>\x9AWa>\x9AaG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a>\xBB\x92\x91\x90aJbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a>bV[P\x86\x88\x87`@Q` \x01a>\xEC\x93\x92\x91\x90aJ\x86V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a?\x1A\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a?;\x8A`\xFF\x8D\x16aG\xC4V[\x81\x10\x15a?\x9CW\x82\x81\x81Q\x81\x10a?TWa?TaG\xD7V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a?n\x83\x8DaG\xB1V[\x81Q\x81\x10a?~Wa?~aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a?.V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a@\rW\x83\x81\x81Q\x81\x10a?\xCCWa?\xCCaG\xD7V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a?\xE4\x91\x90aH\x19V[a?\xEF\x90`\x02aK\x9CV[a?\xF9\x91\x90aH\x19V[a@\x03\x90\x83aG\xB1V[\x91P`\x01\x01a?\xB1V[P\x92\x91PPV[\x80Q\x15a@$W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a@MW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a<[W__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a@zW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a@\x90W__\xFD[a@\x99\x83a@dV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a@\xB7W__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a@\xF4Wa@\xF4a@\xBEV[`@R\x90V[_\x82`\x1F\x83\x01\x12aA\tW__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15aA(WaA(a@\xBEV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15aAVWaAVa@\xBEV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15aAmW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[__`@\x83\x85\x03\x12\x15aA\x9AW__\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aA\xB6W__\xFD[aA\xC2\x85\x82\x86\x01a@\xFAV[\x91PP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15aA\xDCW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aA\xFEWaA\xFEa@\xBEV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15aB<W__\xFD[aBDa@\xD2V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a@zW__\xFD[____a\x01 \x85\x87\x03\x12\x15aB\x80W__\xFD[aB\x8A\x86\x86aA\xCCV[\x93PaB\x99\x86`\x80\x87\x01aB,V[\x92PaB\xA8\x86`\xC0\x87\x01aB,V[\x91PaB\xB7a\x01\0\x86\x01aB[V[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15aB\xD2W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aB\xE7W__\xFD[aB\xF3\x84\x82\x85\x01a@\xFAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15aC\x0BW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a<[W__\xFD[_` \x82\x84\x03\x12\x15aC1W__\xFD[a<[\x82a@dV[______a\x01`\x87\x89\x03\x12\x15aCPW__\xFD[aCZ\x88\x88aA\xCCV[\x95PaCi\x88`\x80\x89\x01aB,V[\x94PaCx\x88`\xC0\x89\x01aB,V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\x93W__\xFD[aC\x9F\x89\x82\x8A\x01a@\xFAV[\x93PPaC\xAFa\x01 \x88\x01aB[V[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\xCAW__\xFD[aC\xD6\x89\x82\x8A\x01a@\xFAV[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15aC\xF3W__\xFD[a<[\x82aB[V[__`@\x83\x85\x03\x12\x15aD\rW__\xFD[\x825\x91PaD\x1D` \x84\x01a@dV[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15aD7W__\xFD[aD@\x83a@dV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aA\xB6W__\xFD[_____`\x80\x86\x88\x03\x12\x15aDnW__\xFD[aDw\x86a@dV[\x94PaD\x85` \x87\x01a@dV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xA6W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aD\xB6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xCBW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15aD\xDFW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15aE\x03W__\xFD[aE\r\x85\x85aA\xCCV[\x92PaE\x1C\x85`\x80\x86\x01aB,V[\x91PaE+\x85`\xC0\x86\x01aB,V[\x90P\x92P\x92P\x92V[________a\x01\xA0\x89\x8B\x03\x12\x15aELW__\xFD[aEV\x8A\x8AaA\xCCV[\x97PaEe\x8A`\x80\x8B\x01aB,V[\x96PaEt\x8A`\xC0\x8B\x01aB,V[\x95Pa\x01\0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\x8FW__\xFD[aE\x9B\x8B\x82\x8C\x01a@\xFAV[\x95PPaE\xABa\x01 \x8A\x01aB[V[\x93Pa\x01@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xC6W__\xFD[aE\xD2\x8B\x82\x8C\x01a@\xFAV[\x93PPa\x01`\x89\x015\x91Pa\x01\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xF6W__\xFD[aF\x02\x8B\x82\x8C\x01a@\xFAV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[_`\x80\x82\x84\x03\x12\x15aF\"W__\xFD[a<[\x83\x83aA\xCCV[__`@\x83\x85\x03\x12\x15aF=W__\xFD[aFF\x83a@dV[\x91PaD\x1D` \x84\x01a@dV[____a\x01 \x85\x87\x03\x12\x15aFhW__\xFD[aFr\x86\x86aA\xCCV[\x93PaF\x81\x86`\x80\x87\x01aB,V[\x92PaF\x90\x86`\xC0\x87\x01aB,V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aF\xABW__\xFD[aF\xB7\x87\x82\x88\x01a@\xFAV[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a<[` \x83\x01\x84aF\xC3V[____`\x80\x85\x87\x03\x12\x15aG\x16W__\xFD[aG\x1F\x85a@dV[\x93PaG-` \x86\x01a@dV[\x92P`@\x85\x015\x91PaB\xB7``\x86\x01a@dV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10aGyWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aG\x96W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[\x81\x81\x03\x81\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81aG\xF9WaG\xF9aG\x9DV[P_\x19\x01\x90V[`\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\xB6Wa\x0C\xB6aG\x9DV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03aHkWaHkaG\x9DV[`\x01\x01\x92\x91PPV[\x88Q\x81R` \x80\x8A\x01Q\x90\x82\x01R`@\x80\x8A\x01Q\x90\x82\x01R``\x80\x8A\x01Q\x90\x82\x01R\x87Q`\x80\x82\x01R` \x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x87\x16`\xC0\x82\x01R\x85Q`\xE0\x82\x01R` \x86\x01Qa\x01\0\x82\x01Ra\x01\xA0a\x01 \x82\x01R_aH\xDBa\x01\xA0\x83\x01\x87aF\xC3V[\x82\x81\x03a\x01@\x84\x01RaH\xEE\x81\x87aF\xC3V[\x90P\x84a\x01`\x84\x01R\x82\x81\x03a\x01\x80\x84\x01RaI\n\x81\x85aF\xC3V[\x9B\x9APPPPPPPPPPPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aIua\x01 \x83\x01\x84aF\xC3V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_aB\xF3aI\xA4\x83\x86aI\x7FV[\x84aI\x7FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aI\xD8WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_a<[\x82\x84aI\x7FV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_aJ\x07\x82\x85aI\x7FV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aJ1\x82\x84aI\x7FV[_\x81R`\x01\x01\x93\x92PPPV[_aJI\x82\x85aI\x7FV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aJm\x82\x85aI\x7FV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aJ\x91\x82\x86aI\x7FV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[`\x01\x81[`\x01\x84\x11\x15aJ\xF4W\x80\x85\x04\x81\x11\x15aJ\xD8WaJ\xD8aG\x9DV[`\x01\x84\x16\x15aJ\xE6W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aJ\xBDV[\x93P\x93\x91PPV[_\x82aK\nWP`\x01a\x0C\xB6V[\x81aK\x16WP_a\x0C\xB6V[\x81`\x01\x81\x14aK,W`\x02\x81\x14aK6WaKRV[`\x01\x91PPa\x0C\xB6V[`\xFF\x84\x11\x15aKGWaKGaG\x9DV[PP`\x01\x82\x1Ba\x0C\xB6V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aKuWP\x81\x81\na\x0C\xB6V[aK\x81_\x19\x84\x84aJ\xB9V[\x80_\x19\x04\x82\x11\x15aK\x94WaK\x94aG\x9DV[\x02\x93\x92PPPV[_a<[\x83\x83aJ\xFCV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD26\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08#\0\n",
4560    );
4561    #[derive(serde::Serialize, serde::Deserialize)]
4562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4563    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
4564```solidity
4565error AccessControlBadConfirmation();
4566```*/
4567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4568    #[derive(Clone)]
4569    pub struct AccessControlBadConfirmation;
4570    #[allow(
4571        non_camel_case_types,
4572        non_snake_case,
4573        clippy::pub_underscore_fields,
4574        clippy::style
4575    )]
4576    const _: () = {
4577        use alloy::sol_types as alloy_sol_types;
4578        #[doc(hidden)]
4579        #[allow(dead_code)]
4580        type UnderlyingSolTuple<'a> = ();
4581        #[doc(hidden)]
4582        type UnderlyingRustTuple<'a> = ();
4583        #[cfg(test)]
4584        #[allow(dead_code, unreachable_patterns)]
4585        fn _type_assertion(
4586            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4587        ) {
4588            match _t {
4589                alloy_sol_types::private::AssertTypeEq::<
4590                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4591                >(_) => {}
4592            }
4593        }
4594        #[automatically_derived]
4595        #[doc(hidden)]
4596        impl ::core::convert::From<AccessControlBadConfirmation>
4597        for UnderlyingRustTuple<'_> {
4598            fn from(value: AccessControlBadConfirmation) -> Self {
4599                ()
4600            }
4601        }
4602        #[automatically_derived]
4603        #[doc(hidden)]
4604        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4605        for AccessControlBadConfirmation {
4606            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4607                Self
4608            }
4609        }
4610        #[automatically_derived]
4611        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
4612            type Parameters<'a> = UnderlyingSolTuple<'a>;
4613            type Token<'a> = <Self::Parameters<
4614                'a,
4615            > as alloy_sol_types::SolType>::Token<'a>;
4616            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
4617            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
4618            #[inline]
4619            fn new<'a>(
4620                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4621            ) -> Self {
4622                tuple.into()
4623            }
4624            #[inline]
4625            fn tokenize(&self) -> Self::Token<'_> {
4626                ()
4627            }
4628            #[inline]
4629            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4630                <Self::Parameters<
4631                    '_,
4632                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4633                    .map(Self::new)
4634            }
4635        }
4636    };
4637    #[derive(serde::Serialize, serde::Deserialize)]
4638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4639    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
4640```solidity
4641error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
4642```*/
4643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4644    #[derive(Clone)]
4645    pub struct AccessControlUnauthorizedAccount {
4646        #[allow(missing_docs)]
4647        pub account: alloy::sol_types::private::Address,
4648        #[allow(missing_docs)]
4649        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
4650    }
4651    #[allow(
4652        non_camel_case_types,
4653        non_snake_case,
4654        clippy::pub_underscore_fields,
4655        clippy::style
4656    )]
4657    const _: () = {
4658        use alloy::sol_types as alloy_sol_types;
4659        #[doc(hidden)]
4660        #[allow(dead_code)]
4661        type UnderlyingSolTuple<'a> = (
4662            alloy::sol_types::sol_data::Address,
4663            alloy::sol_types::sol_data::FixedBytes<32>,
4664        );
4665        #[doc(hidden)]
4666        type UnderlyingRustTuple<'a> = (
4667            alloy::sol_types::private::Address,
4668            alloy::sol_types::private::FixedBytes<32>,
4669        );
4670        #[cfg(test)]
4671        #[allow(dead_code, unreachable_patterns)]
4672        fn _type_assertion(
4673            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4674        ) {
4675            match _t {
4676                alloy_sol_types::private::AssertTypeEq::<
4677                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4678                >(_) => {}
4679            }
4680        }
4681        #[automatically_derived]
4682        #[doc(hidden)]
4683        impl ::core::convert::From<AccessControlUnauthorizedAccount>
4684        for UnderlyingRustTuple<'_> {
4685            fn from(value: AccessControlUnauthorizedAccount) -> Self {
4686                (value.account, value.neededRole)
4687            }
4688        }
4689        #[automatically_derived]
4690        #[doc(hidden)]
4691        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4692        for AccessControlUnauthorizedAccount {
4693            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4694                Self {
4695                    account: tuple.0,
4696                    neededRole: tuple.1,
4697                }
4698            }
4699        }
4700        #[automatically_derived]
4701        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
4702            type Parameters<'a> = UnderlyingSolTuple<'a>;
4703            type Token<'a> = <Self::Parameters<
4704                'a,
4705            > as alloy_sol_types::SolType>::Token<'a>;
4706            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
4707            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
4708            #[inline]
4709            fn new<'a>(
4710                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4711            ) -> Self {
4712                tuple.into()
4713            }
4714            #[inline]
4715            fn tokenize(&self) -> Self::Token<'_> {
4716                (
4717                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4718                        &self.account,
4719                    ),
4720                    <alloy::sol_types::sol_data::FixedBytes<
4721                        32,
4722                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
4723                )
4724            }
4725            #[inline]
4726            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4727                <Self::Parameters<
4728                    '_,
4729                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4730                    .map(Self::new)
4731            }
4732        }
4733    };
4734    #[derive(serde::Serialize, serde::Deserialize)]
4735    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4736    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4737```solidity
4738error AddressEmptyCode(address target);
4739```*/
4740    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4741    #[derive(Clone)]
4742    pub struct AddressEmptyCode {
4743        #[allow(missing_docs)]
4744        pub target: alloy::sol_types::private::Address,
4745    }
4746    #[allow(
4747        non_camel_case_types,
4748        non_snake_case,
4749        clippy::pub_underscore_fields,
4750        clippy::style
4751    )]
4752    const _: () = {
4753        use alloy::sol_types as alloy_sol_types;
4754        #[doc(hidden)]
4755        #[allow(dead_code)]
4756        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4757        #[doc(hidden)]
4758        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4759        #[cfg(test)]
4760        #[allow(dead_code, unreachable_patterns)]
4761        fn _type_assertion(
4762            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4763        ) {
4764            match _t {
4765                alloy_sol_types::private::AssertTypeEq::<
4766                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4767                >(_) => {}
4768            }
4769        }
4770        #[automatically_derived]
4771        #[doc(hidden)]
4772        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4773            fn from(value: AddressEmptyCode) -> Self {
4774                (value.target,)
4775            }
4776        }
4777        #[automatically_derived]
4778        #[doc(hidden)]
4779        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4780            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4781                Self { target: tuple.0 }
4782            }
4783        }
4784        #[automatically_derived]
4785        impl alloy_sol_types::SolError for AddressEmptyCode {
4786            type Parameters<'a> = UnderlyingSolTuple<'a>;
4787            type Token<'a> = <Self::Parameters<
4788                'a,
4789            > as alloy_sol_types::SolType>::Token<'a>;
4790            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4791            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4792            #[inline]
4793            fn new<'a>(
4794                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4795            ) -> Self {
4796                tuple.into()
4797            }
4798            #[inline]
4799            fn tokenize(&self) -> Self::Token<'_> {
4800                (
4801                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4802                        &self.target,
4803                    ),
4804                )
4805            }
4806            #[inline]
4807            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4808                <Self::Parameters<
4809                    '_,
4810                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4811                    .map(Self::new)
4812            }
4813        }
4814    };
4815    #[derive(serde::Serialize, serde::Deserialize)]
4816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4817    /**Custom error with signature `BLSSigIsInfinity()` and selector `0x74272332`.
4818```solidity
4819error BLSSigIsInfinity();
4820```*/
4821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4822    #[derive(Clone)]
4823    pub struct BLSSigIsInfinity;
4824    #[allow(
4825        non_camel_case_types,
4826        non_snake_case,
4827        clippy::pub_underscore_fields,
4828        clippy::style
4829    )]
4830    const _: () = {
4831        use alloy::sol_types as alloy_sol_types;
4832        #[doc(hidden)]
4833        #[allow(dead_code)]
4834        type UnderlyingSolTuple<'a> = ();
4835        #[doc(hidden)]
4836        type UnderlyingRustTuple<'a> = ();
4837        #[cfg(test)]
4838        #[allow(dead_code, unreachable_patterns)]
4839        fn _type_assertion(
4840            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4841        ) {
4842            match _t {
4843                alloy_sol_types::private::AssertTypeEq::<
4844                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4845                >(_) => {}
4846            }
4847        }
4848        #[automatically_derived]
4849        #[doc(hidden)]
4850        impl ::core::convert::From<BLSSigIsInfinity> for UnderlyingRustTuple<'_> {
4851            fn from(value: BLSSigIsInfinity) -> Self {
4852                ()
4853            }
4854        }
4855        #[automatically_derived]
4856        #[doc(hidden)]
4857        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSSigIsInfinity {
4858            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4859                Self
4860            }
4861        }
4862        #[automatically_derived]
4863        impl alloy_sol_types::SolError for BLSSigIsInfinity {
4864            type Parameters<'a> = UnderlyingSolTuple<'a>;
4865            type Token<'a> = <Self::Parameters<
4866                'a,
4867            > as alloy_sol_types::SolType>::Token<'a>;
4868            const SIGNATURE: &'static str = "BLSSigIsInfinity()";
4869            const SELECTOR: [u8; 4] = [116u8, 39u8, 35u8, 50u8];
4870            #[inline]
4871            fn new<'a>(
4872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4873            ) -> Self {
4874                tuple.into()
4875            }
4876            #[inline]
4877            fn tokenize(&self) -> Self::Token<'_> {
4878                ()
4879            }
4880            #[inline]
4881            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4882                <Self::Parameters<
4883                    '_,
4884                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4885                    .map(Self::new)
4886            }
4887        }
4888    };
4889    #[derive(serde::Serialize, serde::Deserialize)]
4890    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4891    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
4892```solidity
4893error BLSSigVerificationFailed();
4894```*/
4895    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4896    #[derive(Clone)]
4897    pub struct BLSSigVerificationFailed;
4898    #[allow(
4899        non_camel_case_types,
4900        non_snake_case,
4901        clippy::pub_underscore_fields,
4902        clippy::style
4903    )]
4904    const _: () = {
4905        use alloy::sol_types as alloy_sol_types;
4906        #[doc(hidden)]
4907        #[allow(dead_code)]
4908        type UnderlyingSolTuple<'a> = ();
4909        #[doc(hidden)]
4910        type UnderlyingRustTuple<'a> = ();
4911        #[cfg(test)]
4912        #[allow(dead_code, unreachable_patterns)]
4913        fn _type_assertion(
4914            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4915        ) {
4916            match _t {
4917                alloy_sol_types::private::AssertTypeEq::<
4918                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4919                >(_) => {}
4920            }
4921        }
4922        #[automatically_derived]
4923        #[doc(hidden)]
4924        impl ::core::convert::From<BLSSigVerificationFailed>
4925        for UnderlyingRustTuple<'_> {
4926            fn from(value: BLSSigVerificationFailed) -> Self {
4927                ()
4928            }
4929        }
4930        #[automatically_derived]
4931        #[doc(hidden)]
4932        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4933        for BLSSigVerificationFailed {
4934            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4935                Self
4936            }
4937        }
4938        #[automatically_derived]
4939        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
4940            type Parameters<'a> = UnderlyingSolTuple<'a>;
4941            type Token<'a> = <Self::Parameters<
4942                'a,
4943            > as alloy_sol_types::SolType>::Token<'a>;
4944            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
4945            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
4946            #[inline]
4947            fn new<'a>(
4948                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4949            ) -> Self {
4950                tuple.into()
4951            }
4952            #[inline]
4953            fn tokenize(&self) -> Self::Token<'_> {
4954                ()
4955            }
4956            #[inline]
4957            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4958                <Self::Parameters<
4959                    '_,
4960                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4961                    .map(Self::new)
4962            }
4963        }
4964    };
4965    #[derive(serde::Serialize, serde::Deserialize)]
4966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4967    /**Custom error with signature `BLSVKIsInfinity()` and selector `0xbc86c59a`.
4968```solidity
4969error BLSVKIsInfinity();
4970```*/
4971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4972    #[derive(Clone)]
4973    pub struct BLSVKIsInfinity;
4974    #[allow(
4975        non_camel_case_types,
4976        non_snake_case,
4977        clippy::pub_underscore_fields,
4978        clippy::style
4979    )]
4980    const _: () = {
4981        use alloy::sol_types as alloy_sol_types;
4982        #[doc(hidden)]
4983        #[allow(dead_code)]
4984        type UnderlyingSolTuple<'a> = ();
4985        #[doc(hidden)]
4986        type UnderlyingRustTuple<'a> = ();
4987        #[cfg(test)]
4988        #[allow(dead_code, unreachable_patterns)]
4989        fn _type_assertion(
4990            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4991        ) {
4992            match _t {
4993                alloy_sol_types::private::AssertTypeEq::<
4994                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4995                >(_) => {}
4996            }
4997        }
4998        #[automatically_derived]
4999        #[doc(hidden)]
5000        impl ::core::convert::From<BLSVKIsInfinity> for UnderlyingRustTuple<'_> {
5001            fn from(value: BLSVKIsInfinity) -> Self {
5002                ()
5003            }
5004        }
5005        #[automatically_derived]
5006        #[doc(hidden)]
5007        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSVKIsInfinity {
5008            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5009                Self
5010            }
5011        }
5012        #[automatically_derived]
5013        impl alloy_sol_types::SolError for BLSVKIsInfinity {
5014            type Parameters<'a> = UnderlyingSolTuple<'a>;
5015            type Token<'a> = <Self::Parameters<
5016                'a,
5017            > as alloy_sol_types::SolType>::Token<'a>;
5018            const SIGNATURE: &'static str = "BLSVKIsInfinity()";
5019            const SELECTOR: [u8; 4] = [188u8, 134u8, 197u8, 154u8];
5020            #[inline]
5021            fn new<'a>(
5022                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5023            ) -> Self {
5024                tuple.into()
5025            }
5026            #[inline]
5027            fn tokenize(&self) -> Self::Token<'_> {
5028                ()
5029            }
5030            #[inline]
5031            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5032                <Self::Parameters<
5033                    '_,
5034                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5035                    .map(Self::new)
5036            }
5037        }
5038    };
5039    #[derive(serde::Serialize, serde::Deserialize)]
5040    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5041    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
5042```solidity
5043error BN254PairingProdFailed();
5044```*/
5045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5046    #[derive(Clone)]
5047    pub struct BN254PairingProdFailed;
5048    #[allow(
5049        non_camel_case_types,
5050        non_snake_case,
5051        clippy::pub_underscore_fields,
5052        clippy::style
5053    )]
5054    const _: () = {
5055        use alloy::sol_types as alloy_sol_types;
5056        #[doc(hidden)]
5057        #[allow(dead_code)]
5058        type UnderlyingSolTuple<'a> = ();
5059        #[doc(hidden)]
5060        type UnderlyingRustTuple<'a> = ();
5061        #[cfg(test)]
5062        #[allow(dead_code, unreachable_patterns)]
5063        fn _type_assertion(
5064            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5065        ) {
5066            match _t {
5067                alloy_sol_types::private::AssertTypeEq::<
5068                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5069                >(_) => {}
5070            }
5071        }
5072        #[automatically_derived]
5073        #[doc(hidden)]
5074        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
5075            fn from(value: BN254PairingProdFailed) -> Self {
5076                ()
5077            }
5078        }
5079        #[automatically_derived]
5080        #[doc(hidden)]
5081        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
5082            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5083                Self
5084            }
5085        }
5086        #[automatically_derived]
5087        impl alloy_sol_types::SolError for BN254PairingProdFailed {
5088            type Parameters<'a> = UnderlyingSolTuple<'a>;
5089            type Token<'a> = <Self::Parameters<
5090                'a,
5091            > as alloy_sol_types::SolType>::Token<'a>;
5092            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
5093            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
5094            #[inline]
5095            fn new<'a>(
5096                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5097            ) -> Self {
5098                tuple.into()
5099            }
5100            #[inline]
5101            fn tokenize(&self) -> Self::Token<'_> {
5102                ()
5103            }
5104            #[inline]
5105            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5106                <Self::Parameters<
5107                    '_,
5108                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5109                    .map(Self::new)
5110            }
5111        }
5112    };
5113    #[derive(serde::Serialize, serde::Deserialize)]
5114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5115    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
5116```solidity
5117error BlsKeyAlreadyUsed();
5118```*/
5119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5120    #[derive(Clone)]
5121    pub struct BlsKeyAlreadyUsed;
5122    #[allow(
5123        non_camel_case_types,
5124        non_snake_case,
5125        clippy::pub_underscore_fields,
5126        clippy::style
5127    )]
5128    const _: () = {
5129        use alloy::sol_types as alloy_sol_types;
5130        #[doc(hidden)]
5131        #[allow(dead_code)]
5132        type UnderlyingSolTuple<'a> = ();
5133        #[doc(hidden)]
5134        type UnderlyingRustTuple<'a> = ();
5135        #[cfg(test)]
5136        #[allow(dead_code, unreachable_patterns)]
5137        fn _type_assertion(
5138            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5139        ) {
5140            match _t {
5141                alloy_sol_types::private::AssertTypeEq::<
5142                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5143                >(_) => {}
5144            }
5145        }
5146        #[automatically_derived]
5147        #[doc(hidden)]
5148        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
5149            fn from(value: BlsKeyAlreadyUsed) -> Self {
5150                ()
5151            }
5152        }
5153        #[automatically_derived]
5154        #[doc(hidden)]
5155        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
5156            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5157                Self
5158            }
5159        }
5160        #[automatically_derived]
5161        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
5162            type Parameters<'a> = UnderlyingSolTuple<'a>;
5163            type Token<'a> = <Self::Parameters<
5164                'a,
5165            > as alloy_sol_types::SolType>::Token<'a>;
5166            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
5167            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
5168            #[inline]
5169            fn new<'a>(
5170                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5171            ) -> Self {
5172                tuple.into()
5173            }
5174            #[inline]
5175            fn tokenize(&self) -> Self::Token<'_> {
5176                ()
5177            }
5178            #[inline]
5179            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5180                <Self::Parameters<
5181                    '_,
5182                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5183                    .map(Self::new)
5184            }
5185        }
5186    };
5187    #[derive(serde::Serialize, serde::Deserialize)]
5188    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5189    /**Custom error with signature `CommissionAlreadyInitialized(address)` and selector `0x50814e10`.
5190```solidity
5191error CommissionAlreadyInitialized(address validator);
5192```*/
5193    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5194    #[derive(Clone)]
5195    pub struct CommissionAlreadyInitialized {
5196        #[allow(missing_docs)]
5197        pub validator: alloy::sol_types::private::Address,
5198    }
5199    #[allow(
5200        non_camel_case_types,
5201        non_snake_case,
5202        clippy::pub_underscore_fields,
5203        clippy::style
5204    )]
5205    const _: () = {
5206        use alloy::sol_types as alloy_sol_types;
5207        #[doc(hidden)]
5208        #[allow(dead_code)]
5209        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5210        #[doc(hidden)]
5211        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5212        #[cfg(test)]
5213        #[allow(dead_code, unreachable_patterns)]
5214        fn _type_assertion(
5215            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5216        ) {
5217            match _t {
5218                alloy_sol_types::private::AssertTypeEq::<
5219                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5220                >(_) => {}
5221            }
5222        }
5223        #[automatically_derived]
5224        #[doc(hidden)]
5225        impl ::core::convert::From<CommissionAlreadyInitialized>
5226        for UnderlyingRustTuple<'_> {
5227            fn from(value: CommissionAlreadyInitialized) -> Self {
5228                (value.validator,)
5229            }
5230        }
5231        #[automatically_derived]
5232        #[doc(hidden)]
5233        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5234        for CommissionAlreadyInitialized {
5235            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5236                Self { validator: tuple.0 }
5237            }
5238        }
5239        #[automatically_derived]
5240        impl alloy_sol_types::SolError for CommissionAlreadyInitialized {
5241            type Parameters<'a> = UnderlyingSolTuple<'a>;
5242            type Token<'a> = <Self::Parameters<
5243                'a,
5244            > as alloy_sol_types::SolType>::Token<'a>;
5245            const SIGNATURE: &'static str = "CommissionAlreadyInitialized(address)";
5246            const SELECTOR: [u8; 4] = [80u8, 129u8, 78u8, 16u8];
5247            #[inline]
5248            fn new<'a>(
5249                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5250            ) -> Self {
5251                tuple.into()
5252            }
5253            #[inline]
5254            fn tokenize(&self) -> Self::Token<'_> {
5255                (
5256                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5257                        &self.validator,
5258                    ),
5259                )
5260            }
5261            #[inline]
5262            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5263                <Self::Parameters<
5264                    '_,
5265                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5266                    .map(Self::new)
5267            }
5268        }
5269    };
5270    #[derive(serde::Serialize, serde::Deserialize)]
5271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5272    /**Custom error with signature `CommissionIncreaseExceedsMax()` and selector `0x25ad48ca`.
5273```solidity
5274error CommissionIncreaseExceedsMax();
5275```*/
5276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5277    #[derive(Clone)]
5278    pub struct CommissionIncreaseExceedsMax;
5279    #[allow(
5280        non_camel_case_types,
5281        non_snake_case,
5282        clippy::pub_underscore_fields,
5283        clippy::style
5284    )]
5285    const _: () = {
5286        use alloy::sol_types as alloy_sol_types;
5287        #[doc(hidden)]
5288        #[allow(dead_code)]
5289        type UnderlyingSolTuple<'a> = ();
5290        #[doc(hidden)]
5291        type UnderlyingRustTuple<'a> = ();
5292        #[cfg(test)]
5293        #[allow(dead_code, unreachable_patterns)]
5294        fn _type_assertion(
5295            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5296        ) {
5297            match _t {
5298                alloy_sol_types::private::AssertTypeEq::<
5299                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5300                >(_) => {}
5301            }
5302        }
5303        #[automatically_derived]
5304        #[doc(hidden)]
5305        impl ::core::convert::From<CommissionIncreaseExceedsMax>
5306        for UnderlyingRustTuple<'_> {
5307            fn from(value: CommissionIncreaseExceedsMax) -> Self {
5308                ()
5309            }
5310        }
5311        #[automatically_derived]
5312        #[doc(hidden)]
5313        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5314        for CommissionIncreaseExceedsMax {
5315            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5316                Self
5317            }
5318        }
5319        #[automatically_derived]
5320        impl alloy_sol_types::SolError for CommissionIncreaseExceedsMax {
5321            type Parameters<'a> = UnderlyingSolTuple<'a>;
5322            type Token<'a> = <Self::Parameters<
5323                'a,
5324            > as alloy_sol_types::SolType>::Token<'a>;
5325            const SIGNATURE: &'static str = "CommissionIncreaseExceedsMax()";
5326            const SELECTOR: [u8; 4] = [37u8, 173u8, 72u8, 202u8];
5327            #[inline]
5328            fn new<'a>(
5329                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5330            ) -> Self {
5331                tuple.into()
5332            }
5333            #[inline]
5334            fn tokenize(&self) -> Self::Token<'_> {
5335                ()
5336            }
5337            #[inline]
5338            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5339                <Self::Parameters<
5340                    '_,
5341                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5342                    .map(Self::new)
5343            }
5344        }
5345    };
5346    #[derive(serde::Serialize, serde::Deserialize)]
5347    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5348    /**Custom error with signature `CommissionUnchanged()` and selector `0xc20bac94`.
5349```solidity
5350error CommissionUnchanged();
5351```*/
5352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5353    #[derive(Clone)]
5354    pub struct CommissionUnchanged;
5355    #[allow(
5356        non_camel_case_types,
5357        non_snake_case,
5358        clippy::pub_underscore_fields,
5359        clippy::style
5360    )]
5361    const _: () = {
5362        use alloy::sol_types as alloy_sol_types;
5363        #[doc(hidden)]
5364        #[allow(dead_code)]
5365        type UnderlyingSolTuple<'a> = ();
5366        #[doc(hidden)]
5367        type UnderlyingRustTuple<'a> = ();
5368        #[cfg(test)]
5369        #[allow(dead_code, unreachable_patterns)]
5370        fn _type_assertion(
5371            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5372        ) {
5373            match _t {
5374                alloy_sol_types::private::AssertTypeEq::<
5375                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5376                >(_) => {}
5377            }
5378        }
5379        #[automatically_derived]
5380        #[doc(hidden)]
5381        impl ::core::convert::From<CommissionUnchanged> for UnderlyingRustTuple<'_> {
5382            fn from(value: CommissionUnchanged) -> Self {
5383                ()
5384            }
5385        }
5386        #[automatically_derived]
5387        #[doc(hidden)]
5388        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUnchanged {
5389            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5390                Self
5391            }
5392        }
5393        #[automatically_derived]
5394        impl alloy_sol_types::SolError for CommissionUnchanged {
5395            type Parameters<'a> = UnderlyingSolTuple<'a>;
5396            type Token<'a> = <Self::Parameters<
5397                'a,
5398            > as alloy_sol_types::SolType>::Token<'a>;
5399            const SIGNATURE: &'static str = "CommissionUnchanged()";
5400            const SELECTOR: [u8; 4] = [194u8, 11u8, 172u8, 148u8];
5401            #[inline]
5402            fn new<'a>(
5403                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5404            ) -> Self {
5405                tuple.into()
5406            }
5407            #[inline]
5408            fn tokenize(&self) -> Self::Token<'_> {
5409                ()
5410            }
5411            #[inline]
5412            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5413                <Self::Parameters<
5414                    '_,
5415                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5416                    .map(Self::new)
5417            }
5418        }
5419    };
5420    #[derive(serde::Serialize, serde::Deserialize)]
5421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5422    /**Custom error with signature `CommissionUpdateTooSoon()` and selector `0x16eb94cb`.
5423```solidity
5424error CommissionUpdateTooSoon();
5425```*/
5426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5427    #[derive(Clone)]
5428    pub struct CommissionUpdateTooSoon;
5429    #[allow(
5430        non_camel_case_types,
5431        non_snake_case,
5432        clippy::pub_underscore_fields,
5433        clippy::style
5434    )]
5435    const _: () = {
5436        use alloy::sol_types as alloy_sol_types;
5437        #[doc(hidden)]
5438        #[allow(dead_code)]
5439        type UnderlyingSolTuple<'a> = ();
5440        #[doc(hidden)]
5441        type UnderlyingRustTuple<'a> = ();
5442        #[cfg(test)]
5443        #[allow(dead_code, unreachable_patterns)]
5444        fn _type_assertion(
5445            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5446        ) {
5447            match _t {
5448                alloy_sol_types::private::AssertTypeEq::<
5449                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5450                >(_) => {}
5451            }
5452        }
5453        #[automatically_derived]
5454        #[doc(hidden)]
5455        impl ::core::convert::From<CommissionUpdateTooSoon> for UnderlyingRustTuple<'_> {
5456            fn from(value: CommissionUpdateTooSoon) -> Self {
5457                ()
5458            }
5459        }
5460        #[automatically_derived]
5461        #[doc(hidden)]
5462        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUpdateTooSoon {
5463            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5464                Self
5465            }
5466        }
5467        #[automatically_derived]
5468        impl alloy_sol_types::SolError for CommissionUpdateTooSoon {
5469            type Parameters<'a> = UnderlyingSolTuple<'a>;
5470            type Token<'a> = <Self::Parameters<
5471                'a,
5472            > as alloy_sol_types::SolType>::Token<'a>;
5473            const SIGNATURE: &'static str = "CommissionUpdateTooSoon()";
5474            const SELECTOR: [u8; 4] = [22u8, 235u8, 148u8, 203u8];
5475            #[inline]
5476            fn new<'a>(
5477                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5478            ) -> Self {
5479                tuple.into()
5480            }
5481            #[inline]
5482            fn tokenize(&self) -> Self::Token<'_> {
5483                ()
5484            }
5485            #[inline]
5486            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5487                <Self::Parameters<
5488                    '_,
5489                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5490                    .map(Self::new)
5491            }
5492        }
5493    };
5494    #[derive(serde::Serialize, serde::Deserialize)]
5495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5496    /**Custom error with signature `DefaultAdminCannotBeRenounced()` and selector `0x8b78631d`.
5497```solidity
5498error DefaultAdminCannotBeRenounced();
5499```*/
5500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5501    #[derive(Clone)]
5502    pub struct DefaultAdminCannotBeRenounced;
5503    #[allow(
5504        non_camel_case_types,
5505        non_snake_case,
5506        clippy::pub_underscore_fields,
5507        clippy::style
5508    )]
5509    const _: () = {
5510        use alloy::sol_types as alloy_sol_types;
5511        #[doc(hidden)]
5512        #[allow(dead_code)]
5513        type UnderlyingSolTuple<'a> = ();
5514        #[doc(hidden)]
5515        type UnderlyingRustTuple<'a> = ();
5516        #[cfg(test)]
5517        #[allow(dead_code, unreachable_patterns)]
5518        fn _type_assertion(
5519            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5520        ) {
5521            match _t {
5522                alloy_sol_types::private::AssertTypeEq::<
5523                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5524                >(_) => {}
5525            }
5526        }
5527        #[automatically_derived]
5528        #[doc(hidden)]
5529        impl ::core::convert::From<DefaultAdminCannotBeRenounced>
5530        for UnderlyingRustTuple<'_> {
5531            fn from(value: DefaultAdminCannotBeRenounced) -> Self {
5532                ()
5533            }
5534        }
5535        #[automatically_derived]
5536        #[doc(hidden)]
5537        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5538        for DefaultAdminCannotBeRenounced {
5539            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5540                Self
5541            }
5542        }
5543        #[automatically_derived]
5544        impl alloy_sol_types::SolError for DefaultAdminCannotBeRenounced {
5545            type Parameters<'a> = UnderlyingSolTuple<'a>;
5546            type Token<'a> = <Self::Parameters<
5547                'a,
5548            > as alloy_sol_types::SolType>::Token<'a>;
5549            const SIGNATURE: &'static str = "DefaultAdminCannotBeRenounced()";
5550            const SELECTOR: [u8; 4] = [139u8, 120u8, 99u8, 29u8];
5551            #[inline]
5552            fn new<'a>(
5553                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5554            ) -> Self {
5555                tuple.into()
5556            }
5557            #[inline]
5558            fn tokenize(&self) -> Self::Token<'_> {
5559                ()
5560            }
5561            #[inline]
5562            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5563                <Self::Parameters<
5564                    '_,
5565                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5566                    .map(Self::new)
5567            }
5568        }
5569    };
5570    #[derive(serde::Serialize, serde::Deserialize)]
5571    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5572    /**Custom error with signature `DefaultAdminCannotBeRevoked()` and selector `0xb0b5fb99`.
5573```solidity
5574error DefaultAdminCannotBeRevoked();
5575```*/
5576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5577    #[derive(Clone)]
5578    pub struct DefaultAdminCannotBeRevoked;
5579    #[allow(
5580        non_camel_case_types,
5581        non_snake_case,
5582        clippy::pub_underscore_fields,
5583        clippy::style
5584    )]
5585    const _: () = {
5586        use alloy::sol_types as alloy_sol_types;
5587        #[doc(hidden)]
5588        #[allow(dead_code)]
5589        type UnderlyingSolTuple<'a> = ();
5590        #[doc(hidden)]
5591        type UnderlyingRustTuple<'a> = ();
5592        #[cfg(test)]
5593        #[allow(dead_code, unreachable_patterns)]
5594        fn _type_assertion(
5595            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5596        ) {
5597            match _t {
5598                alloy_sol_types::private::AssertTypeEq::<
5599                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5600                >(_) => {}
5601            }
5602        }
5603        #[automatically_derived]
5604        #[doc(hidden)]
5605        impl ::core::convert::From<DefaultAdminCannotBeRevoked>
5606        for UnderlyingRustTuple<'_> {
5607            fn from(value: DefaultAdminCannotBeRevoked) -> Self {
5608                ()
5609            }
5610        }
5611        #[automatically_derived]
5612        #[doc(hidden)]
5613        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5614        for DefaultAdminCannotBeRevoked {
5615            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5616                Self
5617            }
5618        }
5619        #[automatically_derived]
5620        impl alloy_sol_types::SolError for DefaultAdminCannotBeRevoked {
5621            type Parameters<'a> = UnderlyingSolTuple<'a>;
5622            type Token<'a> = <Self::Parameters<
5623                'a,
5624            > as alloy_sol_types::SolType>::Token<'a>;
5625            const SIGNATURE: &'static str = "DefaultAdminCannotBeRevoked()";
5626            const SELECTOR: [u8; 4] = [176u8, 181u8, 251u8, 153u8];
5627            #[inline]
5628            fn new<'a>(
5629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5630            ) -> Self {
5631                tuple.into()
5632            }
5633            #[inline]
5634            fn tokenize(&self) -> Self::Token<'_> {
5635                ()
5636            }
5637            #[inline]
5638            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5639                <Self::Parameters<
5640                    '_,
5641                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5642                    .map(Self::new)
5643            }
5644        }
5645    };
5646    #[derive(serde::Serialize, serde::Deserialize)]
5647    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5648    /**Custom error with signature `DelegateAmountTooSmall()` and selector `0x7d298731`.
5649```solidity
5650error DelegateAmountTooSmall();
5651```*/
5652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5653    #[derive(Clone)]
5654    pub struct DelegateAmountTooSmall;
5655    #[allow(
5656        non_camel_case_types,
5657        non_snake_case,
5658        clippy::pub_underscore_fields,
5659        clippy::style
5660    )]
5661    const _: () = {
5662        use alloy::sol_types as alloy_sol_types;
5663        #[doc(hidden)]
5664        #[allow(dead_code)]
5665        type UnderlyingSolTuple<'a> = ();
5666        #[doc(hidden)]
5667        type UnderlyingRustTuple<'a> = ();
5668        #[cfg(test)]
5669        #[allow(dead_code, unreachable_patterns)]
5670        fn _type_assertion(
5671            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5672        ) {
5673            match _t {
5674                alloy_sol_types::private::AssertTypeEq::<
5675                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5676                >(_) => {}
5677            }
5678        }
5679        #[automatically_derived]
5680        #[doc(hidden)]
5681        impl ::core::convert::From<DelegateAmountTooSmall> for UnderlyingRustTuple<'_> {
5682            fn from(value: DelegateAmountTooSmall) -> Self {
5683                ()
5684            }
5685        }
5686        #[automatically_derived]
5687        #[doc(hidden)]
5688        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DelegateAmountTooSmall {
5689            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5690                Self
5691            }
5692        }
5693        #[automatically_derived]
5694        impl alloy_sol_types::SolError for DelegateAmountTooSmall {
5695            type Parameters<'a> = UnderlyingSolTuple<'a>;
5696            type Token<'a> = <Self::Parameters<
5697                'a,
5698            > as alloy_sol_types::SolType>::Token<'a>;
5699            const SIGNATURE: &'static str = "DelegateAmountTooSmall()";
5700            const SELECTOR: [u8; 4] = [125u8, 41u8, 135u8, 49u8];
5701            #[inline]
5702            fn new<'a>(
5703                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5704            ) -> Self {
5705                tuple.into()
5706            }
5707            #[inline]
5708            fn tokenize(&self) -> Self::Token<'_> {
5709                ()
5710            }
5711            #[inline]
5712            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5713                <Self::Parameters<
5714                    '_,
5715                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5716                    .map(Self::new)
5717            }
5718        }
5719    };
5720    #[derive(serde::Serialize, serde::Deserialize)]
5721    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5722    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
5723```solidity
5724error DeprecatedFunction();
5725```*/
5726    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5727    #[derive(Clone)]
5728    pub struct DeprecatedFunction;
5729    #[allow(
5730        non_camel_case_types,
5731        non_snake_case,
5732        clippy::pub_underscore_fields,
5733        clippy::style
5734    )]
5735    const _: () = {
5736        use alloy::sol_types as alloy_sol_types;
5737        #[doc(hidden)]
5738        #[allow(dead_code)]
5739        type UnderlyingSolTuple<'a> = ();
5740        #[doc(hidden)]
5741        type UnderlyingRustTuple<'a> = ();
5742        #[cfg(test)]
5743        #[allow(dead_code, unreachable_patterns)]
5744        fn _type_assertion(
5745            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5746        ) {
5747            match _t {
5748                alloy_sol_types::private::AssertTypeEq::<
5749                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5750                >(_) => {}
5751            }
5752        }
5753        #[automatically_derived]
5754        #[doc(hidden)]
5755        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
5756            fn from(value: DeprecatedFunction) -> Self {
5757                ()
5758            }
5759        }
5760        #[automatically_derived]
5761        #[doc(hidden)]
5762        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
5763            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5764                Self
5765            }
5766        }
5767        #[automatically_derived]
5768        impl alloy_sol_types::SolError for DeprecatedFunction {
5769            type Parameters<'a> = UnderlyingSolTuple<'a>;
5770            type Token<'a> = <Self::Parameters<
5771                'a,
5772            > as alloy_sol_types::SolType>::Token<'a>;
5773            const SIGNATURE: &'static str = "DeprecatedFunction()";
5774            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
5775            #[inline]
5776            fn new<'a>(
5777                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5778            ) -> Self {
5779                tuple.into()
5780            }
5781            #[inline]
5782            fn tokenize(&self) -> Self::Token<'_> {
5783                ()
5784            }
5785            #[inline]
5786            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5787                <Self::Parameters<
5788                    '_,
5789                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5790                    .map(Self::new)
5791            }
5792        }
5793    };
5794    #[derive(serde::Serialize, serde::Deserialize)]
5795    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5796    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5797```solidity
5798error ERC1967InvalidImplementation(address implementation);
5799```*/
5800    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5801    #[derive(Clone)]
5802    pub struct ERC1967InvalidImplementation {
5803        #[allow(missing_docs)]
5804        pub implementation: alloy::sol_types::private::Address,
5805    }
5806    #[allow(
5807        non_camel_case_types,
5808        non_snake_case,
5809        clippy::pub_underscore_fields,
5810        clippy::style
5811    )]
5812    const _: () = {
5813        use alloy::sol_types as alloy_sol_types;
5814        #[doc(hidden)]
5815        #[allow(dead_code)]
5816        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5817        #[doc(hidden)]
5818        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5819        #[cfg(test)]
5820        #[allow(dead_code, unreachable_patterns)]
5821        fn _type_assertion(
5822            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5823        ) {
5824            match _t {
5825                alloy_sol_types::private::AssertTypeEq::<
5826                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5827                >(_) => {}
5828            }
5829        }
5830        #[automatically_derived]
5831        #[doc(hidden)]
5832        impl ::core::convert::From<ERC1967InvalidImplementation>
5833        for UnderlyingRustTuple<'_> {
5834            fn from(value: ERC1967InvalidImplementation) -> Self {
5835                (value.implementation,)
5836            }
5837        }
5838        #[automatically_derived]
5839        #[doc(hidden)]
5840        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5841        for ERC1967InvalidImplementation {
5842            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5843                Self { implementation: tuple.0 }
5844            }
5845        }
5846        #[automatically_derived]
5847        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5848            type Parameters<'a> = UnderlyingSolTuple<'a>;
5849            type Token<'a> = <Self::Parameters<
5850                'a,
5851            > as alloy_sol_types::SolType>::Token<'a>;
5852            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5853            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5854            #[inline]
5855            fn new<'a>(
5856                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5857            ) -> Self {
5858                tuple.into()
5859            }
5860            #[inline]
5861            fn tokenize(&self) -> Self::Token<'_> {
5862                (
5863                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5864                        &self.implementation,
5865                    ),
5866                )
5867            }
5868            #[inline]
5869            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5870                <Self::Parameters<
5871                    '_,
5872                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5873                    .map(Self::new)
5874            }
5875        }
5876    };
5877    #[derive(serde::Serialize, serde::Deserialize)]
5878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5879    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5880```solidity
5881error ERC1967NonPayable();
5882```*/
5883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5884    #[derive(Clone)]
5885    pub struct ERC1967NonPayable;
5886    #[allow(
5887        non_camel_case_types,
5888        non_snake_case,
5889        clippy::pub_underscore_fields,
5890        clippy::style
5891    )]
5892    const _: () = {
5893        use alloy::sol_types as alloy_sol_types;
5894        #[doc(hidden)]
5895        #[allow(dead_code)]
5896        type UnderlyingSolTuple<'a> = ();
5897        #[doc(hidden)]
5898        type UnderlyingRustTuple<'a> = ();
5899        #[cfg(test)]
5900        #[allow(dead_code, unreachable_patterns)]
5901        fn _type_assertion(
5902            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5903        ) {
5904            match _t {
5905                alloy_sol_types::private::AssertTypeEq::<
5906                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5907                >(_) => {}
5908            }
5909        }
5910        #[automatically_derived]
5911        #[doc(hidden)]
5912        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5913            fn from(value: ERC1967NonPayable) -> Self {
5914                ()
5915            }
5916        }
5917        #[automatically_derived]
5918        #[doc(hidden)]
5919        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5920            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5921                Self
5922            }
5923        }
5924        #[automatically_derived]
5925        impl alloy_sol_types::SolError for ERC1967NonPayable {
5926            type Parameters<'a> = UnderlyingSolTuple<'a>;
5927            type Token<'a> = <Self::Parameters<
5928                'a,
5929            > as alloy_sol_types::SolType>::Token<'a>;
5930            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5931            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5932            #[inline]
5933            fn new<'a>(
5934                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5935            ) -> Self {
5936                tuple.into()
5937            }
5938            #[inline]
5939            fn tokenize(&self) -> Self::Token<'_> {
5940                ()
5941            }
5942            #[inline]
5943            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5944                <Self::Parameters<
5945                    '_,
5946                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5947                    .map(Self::new)
5948            }
5949        }
5950    };
5951    #[derive(serde::Serialize, serde::Deserialize)]
5952    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5953    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
5954```solidity
5955error EnforcedPause();
5956```*/
5957    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5958    #[derive(Clone)]
5959    pub struct EnforcedPause;
5960    #[allow(
5961        non_camel_case_types,
5962        non_snake_case,
5963        clippy::pub_underscore_fields,
5964        clippy::style
5965    )]
5966    const _: () = {
5967        use alloy::sol_types as alloy_sol_types;
5968        #[doc(hidden)]
5969        #[allow(dead_code)]
5970        type UnderlyingSolTuple<'a> = ();
5971        #[doc(hidden)]
5972        type UnderlyingRustTuple<'a> = ();
5973        #[cfg(test)]
5974        #[allow(dead_code, unreachable_patterns)]
5975        fn _type_assertion(
5976            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5977        ) {
5978            match _t {
5979                alloy_sol_types::private::AssertTypeEq::<
5980                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5981                >(_) => {}
5982            }
5983        }
5984        #[automatically_derived]
5985        #[doc(hidden)]
5986        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
5987            fn from(value: EnforcedPause) -> Self {
5988                ()
5989            }
5990        }
5991        #[automatically_derived]
5992        #[doc(hidden)]
5993        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
5994            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5995                Self
5996            }
5997        }
5998        #[automatically_derived]
5999        impl alloy_sol_types::SolError for EnforcedPause {
6000            type Parameters<'a> = UnderlyingSolTuple<'a>;
6001            type Token<'a> = <Self::Parameters<
6002                'a,
6003            > as alloy_sol_types::SolType>::Token<'a>;
6004            const SIGNATURE: &'static str = "EnforcedPause()";
6005            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
6006            #[inline]
6007            fn new<'a>(
6008                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6009            ) -> Self {
6010                tuple.into()
6011            }
6012            #[inline]
6013            fn tokenize(&self) -> Self::Token<'_> {
6014                ()
6015            }
6016            #[inline]
6017            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6018                <Self::Parameters<
6019                    '_,
6020                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6021                    .map(Self::new)
6022            }
6023        }
6024    };
6025    #[derive(serde::Serialize, serde::Deserialize)]
6026    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6027    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
6028```solidity
6029error ExitEscrowPeriodInvalid();
6030```*/
6031    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6032    #[derive(Clone)]
6033    pub struct ExitEscrowPeriodInvalid;
6034    #[allow(
6035        non_camel_case_types,
6036        non_snake_case,
6037        clippy::pub_underscore_fields,
6038        clippy::style
6039    )]
6040    const _: () = {
6041        use alloy::sol_types as alloy_sol_types;
6042        #[doc(hidden)]
6043        #[allow(dead_code)]
6044        type UnderlyingSolTuple<'a> = ();
6045        #[doc(hidden)]
6046        type UnderlyingRustTuple<'a> = ();
6047        #[cfg(test)]
6048        #[allow(dead_code, unreachable_patterns)]
6049        fn _type_assertion(
6050            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6051        ) {
6052            match _t {
6053                alloy_sol_types::private::AssertTypeEq::<
6054                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6055                >(_) => {}
6056            }
6057        }
6058        #[automatically_derived]
6059        #[doc(hidden)]
6060        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
6061            fn from(value: ExitEscrowPeriodInvalid) -> Self {
6062                ()
6063            }
6064        }
6065        #[automatically_derived]
6066        #[doc(hidden)]
6067        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
6068            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6069                Self
6070            }
6071        }
6072        #[automatically_derived]
6073        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
6074            type Parameters<'a> = UnderlyingSolTuple<'a>;
6075            type Token<'a> = <Self::Parameters<
6076                'a,
6077            > as alloy_sol_types::SolType>::Token<'a>;
6078            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
6079            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
6080            #[inline]
6081            fn new<'a>(
6082                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6083            ) -> Self {
6084                tuple.into()
6085            }
6086            #[inline]
6087            fn tokenize(&self) -> Self::Token<'_> {
6088                ()
6089            }
6090            #[inline]
6091            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6092                <Self::Parameters<
6093                    '_,
6094                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6095                    .map(Self::new)
6096            }
6097        }
6098    };
6099    #[derive(serde::Serialize, serde::Deserialize)]
6100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6101    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
6102```solidity
6103error ExpectedPause();
6104```*/
6105    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6106    #[derive(Clone)]
6107    pub struct ExpectedPause;
6108    #[allow(
6109        non_camel_case_types,
6110        non_snake_case,
6111        clippy::pub_underscore_fields,
6112        clippy::style
6113    )]
6114    const _: () = {
6115        use alloy::sol_types as alloy_sol_types;
6116        #[doc(hidden)]
6117        #[allow(dead_code)]
6118        type UnderlyingSolTuple<'a> = ();
6119        #[doc(hidden)]
6120        type UnderlyingRustTuple<'a> = ();
6121        #[cfg(test)]
6122        #[allow(dead_code, unreachable_patterns)]
6123        fn _type_assertion(
6124            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6125        ) {
6126            match _t {
6127                alloy_sol_types::private::AssertTypeEq::<
6128                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6129                >(_) => {}
6130            }
6131        }
6132        #[automatically_derived]
6133        #[doc(hidden)]
6134        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
6135            fn from(value: ExpectedPause) -> Self {
6136                ()
6137            }
6138        }
6139        #[automatically_derived]
6140        #[doc(hidden)]
6141        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
6142            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6143                Self
6144            }
6145        }
6146        #[automatically_derived]
6147        impl alloy_sol_types::SolError for ExpectedPause {
6148            type Parameters<'a> = UnderlyingSolTuple<'a>;
6149            type Token<'a> = <Self::Parameters<
6150                'a,
6151            > as alloy_sol_types::SolType>::Token<'a>;
6152            const SIGNATURE: &'static str = "ExpectedPause()";
6153            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
6154            #[inline]
6155            fn new<'a>(
6156                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6157            ) -> Self {
6158                tuple.into()
6159            }
6160            #[inline]
6161            fn tokenize(&self) -> Self::Token<'_> {
6162                ()
6163            }
6164            #[inline]
6165            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6166                <Self::Parameters<
6167                    '_,
6168                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6169                    .map(Self::new)
6170            }
6171        }
6172    };
6173    #[derive(serde::Serialize, serde::Deserialize)]
6174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6175    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
6176```solidity
6177error FailedInnerCall();
6178```*/
6179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6180    #[derive(Clone)]
6181    pub struct FailedInnerCall;
6182    #[allow(
6183        non_camel_case_types,
6184        non_snake_case,
6185        clippy::pub_underscore_fields,
6186        clippy::style
6187    )]
6188    const _: () = {
6189        use alloy::sol_types as alloy_sol_types;
6190        #[doc(hidden)]
6191        #[allow(dead_code)]
6192        type UnderlyingSolTuple<'a> = ();
6193        #[doc(hidden)]
6194        type UnderlyingRustTuple<'a> = ();
6195        #[cfg(test)]
6196        #[allow(dead_code, unreachable_patterns)]
6197        fn _type_assertion(
6198            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6199        ) {
6200            match _t {
6201                alloy_sol_types::private::AssertTypeEq::<
6202                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6203                >(_) => {}
6204            }
6205        }
6206        #[automatically_derived]
6207        #[doc(hidden)]
6208        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
6209            fn from(value: FailedInnerCall) -> Self {
6210                ()
6211            }
6212        }
6213        #[automatically_derived]
6214        #[doc(hidden)]
6215        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
6216            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6217                Self
6218            }
6219        }
6220        #[automatically_derived]
6221        impl alloy_sol_types::SolError for FailedInnerCall {
6222            type Parameters<'a> = UnderlyingSolTuple<'a>;
6223            type Token<'a> = <Self::Parameters<
6224                'a,
6225            > as alloy_sol_types::SolType>::Token<'a>;
6226            const SIGNATURE: &'static str = "FailedInnerCall()";
6227            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
6228            #[inline]
6229            fn new<'a>(
6230                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6231            ) -> Self {
6232                tuple.into()
6233            }
6234            #[inline]
6235            fn tokenize(&self) -> Self::Token<'_> {
6236                ()
6237            }
6238            #[inline]
6239            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6240                <Self::Parameters<
6241                    '_,
6242                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6243                    .map(Self::new)
6244            }
6245        }
6246    };
6247    #[derive(serde::Serialize, serde::Deserialize)]
6248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6249    /**Custom error with signature `InitialActiveStakeExceedsBalance()` and selector `0x7b269e92`.
6250```solidity
6251error InitialActiveStakeExceedsBalance();
6252```*/
6253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6254    #[derive(Clone)]
6255    pub struct InitialActiveStakeExceedsBalance;
6256    #[allow(
6257        non_camel_case_types,
6258        non_snake_case,
6259        clippy::pub_underscore_fields,
6260        clippy::style
6261    )]
6262    const _: () = {
6263        use alloy::sol_types as alloy_sol_types;
6264        #[doc(hidden)]
6265        #[allow(dead_code)]
6266        type UnderlyingSolTuple<'a> = ();
6267        #[doc(hidden)]
6268        type UnderlyingRustTuple<'a> = ();
6269        #[cfg(test)]
6270        #[allow(dead_code, unreachable_patterns)]
6271        fn _type_assertion(
6272            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6273        ) {
6274            match _t {
6275                alloy_sol_types::private::AssertTypeEq::<
6276                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6277                >(_) => {}
6278            }
6279        }
6280        #[automatically_derived]
6281        #[doc(hidden)]
6282        impl ::core::convert::From<InitialActiveStakeExceedsBalance>
6283        for UnderlyingRustTuple<'_> {
6284            fn from(value: InitialActiveStakeExceedsBalance) -> Self {
6285                ()
6286            }
6287        }
6288        #[automatically_derived]
6289        #[doc(hidden)]
6290        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6291        for InitialActiveStakeExceedsBalance {
6292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6293                Self
6294            }
6295        }
6296        #[automatically_derived]
6297        impl alloy_sol_types::SolError for InitialActiveStakeExceedsBalance {
6298            type Parameters<'a> = UnderlyingSolTuple<'a>;
6299            type Token<'a> = <Self::Parameters<
6300                'a,
6301            > as alloy_sol_types::SolType>::Token<'a>;
6302            const SIGNATURE: &'static str = "InitialActiveStakeExceedsBalance()";
6303            const SELECTOR: [u8; 4] = [123u8, 38u8, 158u8, 146u8];
6304            #[inline]
6305            fn new<'a>(
6306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6307            ) -> Self {
6308                tuple.into()
6309            }
6310            #[inline]
6311            fn tokenize(&self) -> Self::Token<'_> {
6312                ()
6313            }
6314            #[inline]
6315            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6316                <Self::Parameters<
6317                    '_,
6318                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6319                    .map(Self::new)
6320            }
6321        }
6322    };
6323    #[derive(serde::Serialize, serde::Deserialize)]
6324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6325    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
6326```solidity
6327error InsufficientAllowance(uint256, uint256);
6328```*/
6329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6330    #[derive(Clone)]
6331    pub struct InsufficientAllowance {
6332        #[allow(missing_docs)]
6333        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6334        #[allow(missing_docs)]
6335        pub _1: alloy::sol_types::private::primitives::aliases::U256,
6336    }
6337    #[allow(
6338        non_camel_case_types,
6339        non_snake_case,
6340        clippy::pub_underscore_fields,
6341        clippy::style
6342    )]
6343    const _: () = {
6344        use alloy::sol_types as alloy_sol_types;
6345        #[doc(hidden)]
6346        #[allow(dead_code)]
6347        type UnderlyingSolTuple<'a> = (
6348            alloy::sol_types::sol_data::Uint<256>,
6349            alloy::sol_types::sol_data::Uint<256>,
6350        );
6351        #[doc(hidden)]
6352        type UnderlyingRustTuple<'a> = (
6353            alloy::sol_types::private::primitives::aliases::U256,
6354            alloy::sol_types::private::primitives::aliases::U256,
6355        );
6356        #[cfg(test)]
6357        #[allow(dead_code, unreachable_patterns)]
6358        fn _type_assertion(
6359            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6360        ) {
6361            match _t {
6362                alloy_sol_types::private::AssertTypeEq::<
6363                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6364                >(_) => {}
6365            }
6366        }
6367        #[automatically_derived]
6368        #[doc(hidden)]
6369        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
6370            fn from(value: InsufficientAllowance) -> Self {
6371                (value._0, value._1)
6372            }
6373        }
6374        #[automatically_derived]
6375        #[doc(hidden)]
6376        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
6377            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6378                Self { _0: tuple.0, _1: tuple.1 }
6379            }
6380        }
6381        #[automatically_derived]
6382        impl alloy_sol_types::SolError for InsufficientAllowance {
6383            type Parameters<'a> = UnderlyingSolTuple<'a>;
6384            type Token<'a> = <Self::Parameters<
6385                'a,
6386            > as alloy_sol_types::SolType>::Token<'a>;
6387            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
6388            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
6389            #[inline]
6390            fn new<'a>(
6391                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6392            ) -> Self {
6393                tuple.into()
6394            }
6395            #[inline]
6396            fn tokenize(&self) -> Self::Token<'_> {
6397                (
6398                    <alloy::sol_types::sol_data::Uint<
6399                        256,
6400                    > as alloy_sol_types::SolType>::tokenize(&self._0),
6401                    <alloy::sol_types::sol_data::Uint<
6402                        256,
6403                    > as alloy_sol_types::SolType>::tokenize(&self._1),
6404                )
6405            }
6406            #[inline]
6407            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6408                <Self::Parameters<
6409                    '_,
6410                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6411                    .map(Self::new)
6412            }
6413        }
6414    };
6415    #[derive(serde::Serialize, serde::Deserialize)]
6416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6417    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
6418```solidity
6419error InsufficientBalance(uint256);
6420```*/
6421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6422    #[derive(Clone)]
6423    pub struct InsufficientBalance(
6424        pub alloy::sol_types::private::primitives::aliases::U256,
6425    );
6426    #[allow(
6427        non_camel_case_types,
6428        non_snake_case,
6429        clippy::pub_underscore_fields,
6430        clippy::style
6431    )]
6432    const _: () = {
6433        use alloy::sol_types as alloy_sol_types;
6434        #[doc(hidden)]
6435        #[allow(dead_code)]
6436        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6437        #[doc(hidden)]
6438        type UnderlyingRustTuple<'a> = (
6439            alloy::sol_types::private::primitives::aliases::U256,
6440        );
6441        #[cfg(test)]
6442        #[allow(dead_code, unreachable_patterns)]
6443        fn _type_assertion(
6444            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6445        ) {
6446            match _t {
6447                alloy_sol_types::private::AssertTypeEq::<
6448                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6449                >(_) => {}
6450            }
6451        }
6452        #[automatically_derived]
6453        #[doc(hidden)]
6454        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
6455            fn from(value: InsufficientBalance) -> Self {
6456                (value.0,)
6457            }
6458        }
6459        #[automatically_derived]
6460        #[doc(hidden)]
6461        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
6462            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6463                Self(tuple.0)
6464            }
6465        }
6466        #[automatically_derived]
6467        impl alloy_sol_types::SolError for InsufficientBalance {
6468            type Parameters<'a> = UnderlyingSolTuple<'a>;
6469            type Token<'a> = <Self::Parameters<
6470                'a,
6471            > as alloy_sol_types::SolType>::Token<'a>;
6472            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
6473            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
6474            #[inline]
6475            fn new<'a>(
6476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6477            ) -> Self {
6478                tuple.into()
6479            }
6480            #[inline]
6481            fn tokenize(&self) -> Self::Token<'_> {
6482                (
6483                    <alloy::sol_types::sol_data::Uint<
6484                        256,
6485                    > as alloy_sol_types::SolType>::tokenize(&self.0),
6486                )
6487            }
6488            #[inline]
6489            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6490                <Self::Parameters<
6491                    '_,
6492                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6493                    .map(Self::new)
6494            }
6495        }
6496    };
6497    #[derive(serde::Serialize, serde::Deserialize)]
6498    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6499    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
6500```solidity
6501error InvalidCommission();
6502```*/
6503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6504    #[derive(Clone)]
6505    pub struct InvalidCommission;
6506    #[allow(
6507        non_camel_case_types,
6508        non_snake_case,
6509        clippy::pub_underscore_fields,
6510        clippy::style
6511    )]
6512    const _: () = {
6513        use alloy::sol_types as alloy_sol_types;
6514        #[doc(hidden)]
6515        #[allow(dead_code)]
6516        type UnderlyingSolTuple<'a> = ();
6517        #[doc(hidden)]
6518        type UnderlyingRustTuple<'a> = ();
6519        #[cfg(test)]
6520        #[allow(dead_code, unreachable_patterns)]
6521        fn _type_assertion(
6522            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6523        ) {
6524            match _t {
6525                alloy_sol_types::private::AssertTypeEq::<
6526                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6527                >(_) => {}
6528            }
6529        }
6530        #[automatically_derived]
6531        #[doc(hidden)]
6532        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
6533            fn from(value: InvalidCommission) -> Self {
6534                ()
6535            }
6536        }
6537        #[automatically_derived]
6538        #[doc(hidden)]
6539        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
6540            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6541                Self
6542            }
6543        }
6544        #[automatically_derived]
6545        impl alloy_sol_types::SolError for InvalidCommission {
6546            type Parameters<'a> = UnderlyingSolTuple<'a>;
6547            type Token<'a> = <Self::Parameters<
6548                'a,
6549            > as alloy_sol_types::SolType>::Token<'a>;
6550            const SIGNATURE: &'static str = "InvalidCommission()";
6551            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
6552            #[inline]
6553            fn new<'a>(
6554                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6555            ) -> Self {
6556                tuple.into()
6557            }
6558            #[inline]
6559            fn tokenize(&self) -> Self::Token<'_> {
6560                ()
6561            }
6562            #[inline]
6563            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6564                <Self::Parameters<
6565                    '_,
6566                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6567                    .map(Self::new)
6568            }
6569        }
6570    };
6571    #[derive(serde::Serialize, serde::Deserialize)]
6572    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6573    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
6574```solidity
6575error InvalidG1();
6576```*/
6577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6578    #[derive(Clone)]
6579    pub struct InvalidG1;
6580    #[allow(
6581        non_camel_case_types,
6582        non_snake_case,
6583        clippy::pub_underscore_fields,
6584        clippy::style
6585    )]
6586    const _: () = {
6587        use alloy::sol_types as alloy_sol_types;
6588        #[doc(hidden)]
6589        #[allow(dead_code)]
6590        type UnderlyingSolTuple<'a> = ();
6591        #[doc(hidden)]
6592        type UnderlyingRustTuple<'a> = ();
6593        #[cfg(test)]
6594        #[allow(dead_code, unreachable_patterns)]
6595        fn _type_assertion(
6596            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6597        ) {
6598            match _t {
6599                alloy_sol_types::private::AssertTypeEq::<
6600                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6601                >(_) => {}
6602            }
6603        }
6604        #[automatically_derived]
6605        #[doc(hidden)]
6606        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
6607            fn from(value: InvalidG1) -> Self {
6608                ()
6609            }
6610        }
6611        #[automatically_derived]
6612        #[doc(hidden)]
6613        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
6614            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6615                Self
6616            }
6617        }
6618        #[automatically_derived]
6619        impl alloy_sol_types::SolError for InvalidG1 {
6620            type Parameters<'a> = UnderlyingSolTuple<'a>;
6621            type Token<'a> = <Self::Parameters<
6622                'a,
6623            > as alloy_sol_types::SolType>::Token<'a>;
6624            const SIGNATURE: &'static str = "InvalidG1()";
6625            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
6626            #[inline]
6627            fn new<'a>(
6628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6629            ) -> Self {
6630                tuple.into()
6631            }
6632            #[inline]
6633            fn tokenize(&self) -> Self::Token<'_> {
6634                ()
6635            }
6636            #[inline]
6637            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6638                <Self::Parameters<
6639                    '_,
6640                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6641                    .map(Self::new)
6642            }
6643        }
6644    };
6645    #[derive(serde::Serialize, serde::Deserialize)]
6646    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6647    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6648```solidity
6649error InvalidInitialization();
6650```*/
6651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6652    #[derive(Clone)]
6653    pub struct InvalidInitialization;
6654    #[allow(
6655        non_camel_case_types,
6656        non_snake_case,
6657        clippy::pub_underscore_fields,
6658        clippy::style
6659    )]
6660    const _: () = {
6661        use alloy::sol_types as alloy_sol_types;
6662        #[doc(hidden)]
6663        #[allow(dead_code)]
6664        type UnderlyingSolTuple<'a> = ();
6665        #[doc(hidden)]
6666        type UnderlyingRustTuple<'a> = ();
6667        #[cfg(test)]
6668        #[allow(dead_code, unreachable_patterns)]
6669        fn _type_assertion(
6670            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6671        ) {
6672            match _t {
6673                alloy_sol_types::private::AssertTypeEq::<
6674                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6675                >(_) => {}
6676            }
6677        }
6678        #[automatically_derived]
6679        #[doc(hidden)]
6680        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6681            fn from(value: InvalidInitialization) -> Self {
6682                ()
6683            }
6684        }
6685        #[automatically_derived]
6686        #[doc(hidden)]
6687        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6688            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6689                Self
6690            }
6691        }
6692        #[automatically_derived]
6693        impl alloy_sol_types::SolError for InvalidInitialization {
6694            type Parameters<'a> = UnderlyingSolTuple<'a>;
6695            type Token<'a> = <Self::Parameters<
6696                'a,
6697            > as alloy_sol_types::SolType>::Token<'a>;
6698            const SIGNATURE: &'static str = "InvalidInitialization()";
6699            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6700            #[inline]
6701            fn new<'a>(
6702                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6703            ) -> Self {
6704                tuple.into()
6705            }
6706            #[inline]
6707            fn tokenize(&self) -> Self::Token<'_> {
6708                ()
6709            }
6710            #[inline]
6711            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6712                <Self::Parameters<
6713                    '_,
6714                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6715                    .map(Self::new)
6716            }
6717        }
6718    };
6719    #[derive(serde::Serialize, serde::Deserialize)]
6720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6721    /**Custom error with signature `InvalidMetadataUriLength()` and selector `0x239ff57f`.
6722```solidity
6723error InvalidMetadataUriLength();
6724```*/
6725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6726    #[derive(Clone)]
6727    pub struct InvalidMetadataUriLength;
6728    #[allow(
6729        non_camel_case_types,
6730        non_snake_case,
6731        clippy::pub_underscore_fields,
6732        clippy::style
6733    )]
6734    const _: () = {
6735        use alloy::sol_types as alloy_sol_types;
6736        #[doc(hidden)]
6737        #[allow(dead_code)]
6738        type UnderlyingSolTuple<'a> = ();
6739        #[doc(hidden)]
6740        type UnderlyingRustTuple<'a> = ();
6741        #[cfg(test)]
6742        #[allow(dead_code, unreachable_patterns)]
6743        fn _type_assertion(
6744            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6745        ) {
6746            match _t {
6747                alloy_sol_types::private::AssertTypeEq::<
6748                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6749                >(_) => {}
6750            }
6751        }
6752        #[automatically_derived]
6753        #[doc(hidden)]
6754        impl ::core::convert::From<InvalidMetadataUriLength>
6755        for UnderlyingRustTuple<'_> {
6756            fn from(value: InvalidMetadataUriLength) -> Self {
6757                ()
6758            }
6759        }
6760        #[automatically_derived]
6761        #[doc(hidden)]
6762        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6763        for InvalidMetadataUriLength {
6764            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6765                Self
6766            }
6767        }
6768        #[automatically_derived]
6769        impl alloy_sol_types::SolError for InvalidMetadataUriLength {
6770            type Parameters<'a> = UnderlyingSolTuple<'a>;
6771            type Token<'a> = <Self::Parameters<
6772                'a,
6773            > as alloy_sol_types::SolType>::Token<'a>;
6774            const SIGNATURE: &'static str = "InvalidMetadataUriLength()";
6775            const SELECTOR: [u8; 4] = [35u8, 159u8, 245u8, 127u8];
6776            #[inline]
6777            fn new<'a>(
6778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6779            ) -> Self {
6780                tuple.into()
6781            }
6782            #[inline]
6783            fn tokenize(&self) -> Self::Token<'_> {
6784                ()
6785            }
6786            #[inline]
6787            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6788                <Self::Parameters<
6789                    '_,
6790                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6791                    .map(Self::new)
6792            }
6793        }
6794    };
6795    #[derive(serde::Serialize, serde::Deserialize)]
6796    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6797    /**Custom error with signature `InvalidP2pAddr()` and selector `0x79790d7c`.
6798```solidity
6799error InvalidP2pAddr();
6800```*/
6801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6802    #[derive(Clone)]
6803    pub struct InvalidP2pAddr;
6804    #[allow(
6805        non_camel_case_types,
6806        non_snake_case,
6807        clippy::pub_underscore_fields,
6808        clippy::style
6809    )]
6810    const _: () = {
6811        use alloy::sol_types as alloy_sol_types;
6812        #[doc(hidden)]
6813        #[allow(dead_code)]
6814        type UnderlyingSolTuple<'a> = ();
6815        #[doc(hidden)]
6816        type UnderlyingRustTuple<'a> = ();
6817        #[cfg(test)]
6818        #[allow(dead_code, unreachable_patterns)]
6819        fn _type_assertion(
6820            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6821        ) {
6822            match _t {
6823                alloy_sol_types::private::AssertTypeEq::<
6824                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6825                >(_) => {}
6826            }
6827        }
6828        #[automatically_derived]
6829        #[doc(hidden)]
6830        impl ::core::convert::From<InvalidP2pAddr> for UnderlyingRustTuple<'_> {
6831            fn from(value: InvalidP2pAddr) -> Self {
6832                ()
6833            }
6834        }
6835        #[automatically_derived]
6836        #[doc(hidden)]
6837        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidP2pAddr {
6838            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6839                Self
6840            }
6841        }
6842        #[automatically_derived]
6843        impl alloy_sol_types::SolError for InvalidP2pAddr {
6844            type Parameters<'a> = UnderlyingSolTuple<'a>;
6845            type Token<'a> = <Self::Parameters<
6846                'a,
6847            > as alloy_sol_types::SolType>::Token<'a>;
6848            const SIGNATURE: &'static str = "InvalidP2pAddr()";
6849            const SELECTOR: [u8; 4] = [121u8, 121u8, 13u8, 124u8];
6850            #[inline]
6851            fn new<'a>(
6852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6853            ) -> Self {
6854                tuple.into()
6855            }
6856            #[inline]
6857            fn tokenize(&self) -> Self::Token<'_> {
6858                ()
6859            }
6860            #[inline]
6861            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6862                <Self::Parameters<
6863                    '_,
6864                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6865                    .map(Self::new)
6866            }
6867        }
6868    };
6869    #[derive(serde::Serialize, serde::Deserialize)]
6870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6871    /**Custom error with signature `InvalidRateLimitParameters()` and selector `0x674e8ef3`.
6872```solidity
6873error InvalidRateLimitParameters();
6874```*/
6875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6876    #[derive(Clone)]
6877    pub struct InvalidRateLimitParameters;
6878    #[allow(
6879        non_camel_case_types,
6880        non_snake_case,
6881        clippy::pub_underscore_fields,
6882        clippy::style
6883    )]
6884    const _: () = {
6885        use alloy::sol_types as alloy_sol_types;
6886        #[doc(hidden)]
6887        #[allow(dead_code)]
6888        type UnderlyingSolTuple<'a> = ();
6889        #[doc(hidden)]
6890        type UnderlyingRustTuple<'a> = ();
6891        #[cfg(test)]
6892        #[allow(dead_code, unreachable_patterns)]
6893        fn _type_assertion(
6894            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6895        ) {
6896            match _t {
6897                alloy_sol_types::private::AssertTypeEq::<
6898                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6899                >(_) => {}
6900            }
6901        }
6902        #[automatically_derived]
6903        #[doc(hidden)]
6904        impl ::core::convert::From<InvalidRateLimitParameters>
6905        for UnderlyingRustTuple<'_> {
6906            fn from(value: InvalidRateLimitParameters) -> Self {
6907                ()
6908            }
6909        }
6910        #[automatically_derived]
6911        #[doc(hidden)]
6912        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6913        for InvalidRateLimitParameters {
6914            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6915                Self
6916            }
6917        }
6918        #[automatically_derived]
6919        impl alloy_sol_types::SolError for InvalidRateLimitParameters {
6920            type Parameters<'a> = UnderlyingSolTuple<'a>;
6921            type Token<'a> = <Self::Parameters<
6922                'a,
6923            > as alloy_sol_types::SolType>::Token<'a>;
6924            const SIGNATURE: &'static str = "InvalidRateLimitParameters()";
6925            const SELECTOR: [u8; 4] = [103u8, 78u8, 142u8, 243u8];
6926            #[inline]
6927            fn new<'a>(
6928                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6929            ) -> Self {
6930                tuple.into()
6931            }
6932            #[inline]
6933            fn tokenize(&self) -> Self::Token<'_> {
6934                ()
6935            }
6936            #[inline]
6937            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6938                <Self::Parameters<
6939                    '_,
6940                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6941                    .map(Self::new)
6942            }
6943        }
6944    };
6945    #[derive(serde::Serialize, serde::Deserialize)]
6946    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6947    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
6948```solidity
6949error InvalidSchnorrSig();
6950```*/
6951    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6952    #[derive(Clone)]
6953    pub struct InvalidSchnorrSig;
6954    #[allow(
6955        non_camel_case_types,
6956        non_snake_case,
6957        clippy::pub_underscore_fields,
6958        clippy::style
6959    )]
6960    const _: () = {
6961        use alloy::sol_types as alloy_sol_types;
6962        #[doc(hidden)]
6963        #[allow(dead_code)]
6964        type UnderlyingSolTuple<'a> = ();
6965        #[doc(hidden)]
6966        type UnderlyingRustTuple<'a> = ();
6967        #[cfg(test)]
6968        #[allow(dead_code, unreachable_patterns)]
6969        fn _type_assertion(
6970            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6971        ) {
6972            match _t {
6973                alloy_sol_types::private::AssertTypeEq::<
6974                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6975                >(_) => {}
6976            }
6977        }
6978        #[automatically_derived]
6979        #[doc(hidden)]
6980        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
6981            fn from(value: InvalidSchnorrSig) -> Self {
6982                ()
6983            }
6984        }
6985        #[automatically_derived]
6986        #[doc(hidden)]
6987        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
6988            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6989                Self
6990            }
6991        }
6992        #[automatically_derived]
6993        impl alloy_sol_types::SolError for InvalidSchnorrSig {
6994            type Parameters<'a> = UnderlyingSolTuple<'a>;
6995            type Token<'a> = <Self::Parameters<
6996                'a,
6997            > as alloy_sol_types::SolType>::Token<'a>;
6998            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
6999            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
7000            #[inline]
7001            fn new<'a>(
7002                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7003            ) -> Self {
7004                tuple.into()
7005            }
7006            #[inline]
7007            fn tokenize(&self) -> Self::Token<'_> {
7008                ()
7009            }
7010            #[inline]
7011            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7012                <Self::Parameters<
7013                    '_,
7014                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7015                    .map(Self::new)
7016            }
7017        }
7018    };
7019    #[derive(serde::Serialize, serde::Deserialize)]
7020    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7021    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
7022```solidity
7023error InvalidSchnorrVK();
7024```*/
7025    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7026    #[derive(Clone)]
7027    pub struct InvalidSchnorrVK;
7028    #[allow(
7029        non_camel_case_types,
7030        non_snake_case,
7031        clippy::pub_underscore_fields,
7032        clippy::style
7033    )]
7034    const _: () = {
7035        use alloy::sol_types as alloy_sol_types;
7036        #[doc(hidden)]
7037        #[allow(dead_code)]
7038        type UnderlyingSolTuple<'a> = ();
7039        #[doc(hidden)]
7040        type UnderlyingRustTuple<'a> = ();
7041        #[cfg(test)]
7042        #[allow(dead_code, unreachable_patterns)]
7043        fn _type_assertion(
7044            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7045        ) {
7046            match _t {
7047                alloy_sol_types::private::AssertTypeEq::<
7048                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7049                >(_) => {}
7050            }
7051        }
7052        #[automatically_derived]
7053        #[doc(hidden)]
7054        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
7055            fn from(value: InvalidSchnorrVK) -> Self {
7056                ()
7057            }
7058        }
7059        #[automatically_derived]
7060        #[doc(hidden)]
7061        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
7062            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7063                Self
7064            }
7065        }
7066        #[automatically_derived]
7067        impl alloy_sol_types::SolError for InvalidSchnorrVK {
7068            type Parameters<'a> = UnderlyingSolTuple<'a>;
7069            type Token<'a> = <Self::Parameters<
7070                'a,
7071            > as alloy_sol_types::SolType>::Token<'a>;
7072            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
7073            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
7074            #[inline]
7075            fn new<'a>(
7076                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7077            ) -> Self {
7078                tuple.into()
7079            }
7080            #[inline]
7081            fn tokenize(&self) -> Self::Token<'_> {
7082                ()
7083            }
7084            #[inline]
7085            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7086                <Self::Parameters<
7087                    '_,
7088                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7089                    .map(Self::new)
7090            }
7091        }
7092    };
7093    #[derive(serde::Serialize, serde::Deserialize)]
7094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7095    /**Custom error with signature `InvalidX25519Key()` and selector `0x3e4ba13f`.
7096```solidity
7097error InvalidX25519Key();
7098```*/
7099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7100    #[derive(Clone)]
7101    pub struct InvalidX25519Key;
7102    #[allow(
7103        non_camel_case_types,
7104        non_snake_case,
7105        clippy::pub_underscore_fields,
7106        clippy::style
7107    )]
7108    const _: () = {
7109        use alloy::sol_types as alloy_sol_types;
7110        #[doc(hidden)]
7111        #[allow(dead_code)]
7112        type UnderlyingSolTuple<'a> = ();
7113        #[doc(hidden)]
7114        type UnderlyingRustTuple<'a> = ();
7115        #[cfg(test)]
7116        #[allow(dead_code, unreachable_patterns)]
7117        fn _type_assertion(
7118            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7119        ) {
7120            match _t {
7121                alloy_sol_types::private::AssertTypeEq::<
7122                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7123                >(_) => {}
7124            }
7125        }
7126        #[automatically_derived]
7127        #[doc(hidden)]
7128        impl ::core::convert::From<InvalidX25519Key> for UnderlyingRustTuple<'_> {
7129            fn from(value: InvalidX25519Key) -> Self {
7130                ()
7131            }
7132        }
7133        #[automatically_derived]
7134        #[doc(hidden)]
7135        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidX25519Key {
7136            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7137                Self
7138            }
7139        }
7140        #[automatically_derived]
7141        impl alloy_sol_types::SolError for InvalidX25519Key {
7142            type Parameters<'a> = UnderlyingSolTuple<'a>;
7143            type Token<'a> = <Self::Parameters<
7144                'a,
7145            > as alloy_sol_types::SolType>::Token<'a>;
7146            const SIGNATURE: &'static str = "InvalidX25519Key()";
7147            const SELECTOR: [u8; 4] = [62u8, 75u8, 161u8, 63u8];
7148            #[inline]
7149            fn new<'a>(
7150                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7151            ) -> Self {
7152                tuple.into()
7153            }
7154            #[inline]
7155            fn tokenize(&self) -> Self::Token<'_> {
7156                ()
7157            }
7158            #[inline]
7159            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7160                <Self::Parameters<
7161                    '_,
7162                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7163                    .map(Self::new)
7164            }
7165        }
7166    };
7167    #[derive(serde::Serialize, serde::Deserialize)]
7168    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7169    /**Custom error with signature `MinDelegateAmountTooSmall()` and selector `0x90b8678a`.
7170```solidity
7171error MinDelegateAmountTooSmall();
7172```*/
7173    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7174    #[derive(Clone)]
7175    pub struct MinDelegateAmountTooSmall;
7176    #[allow(
7177        non_camel_case_types,
7178        non_snake_case,
7179        clippy::pub_underscore_fields,
7180        clippy::style
7181    )]
7182    const _: () = {
7183        use alloy::sol_types as alloy_sol_types;
7184        #[doc(hidden)]
7185        #[allow(dead_code)]
7186        type UnderlyingSolTuple<'a> = ();
7187        #[doc(hidden)]
7188        type UnderlyingRustTuple<'a> = ();
7189        #[cfg(test)]
7190        #[allow(dead_code, unreachable_patterns)]
7191        fn _type_assertion(
7192            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7193        ) {
7194            match _t {
7195                alloy_sol_types::private::AssertTypeEq::<
7196                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7197                >(_) => {}
7198            }
7199        }
7200        #[automatically_derived]
7201        #[doc(hidden)]
7202        impl ::core::convert::From<MinDelegateAmountTooSmall>
7203        for UnderlyingRustTuple<'_> {
7204            fn from(value: MinDelegateAmountTooSmall) -> Self {
7205                ()
7206            }
7207        }
7208        #[automatically_derived]
7209        #[doc(hidden)]
7210        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7211        for MinDelegateAmountTooSmall {
7212            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7213                Self
7214            }
7215        }
7216        #[automatically_derived]
7217        impl alloy_sol_types::SolError for MinDelegateAmountTooSmall {
7218            type Parameters<'a> = UnderlyingSolTuple<'a>;
7219            type Token<'a> = <Self::Parameters<
7220                'a,
7221            > as alloy_sol_types::SolType>::Token<'a>;
7222            const SIGNATURE: &'static str = "MinDelegateAmountTooSmall()";
7223            const SELECTOR: [u8; 4] = [144u8, 184u8, 103u8, 138u8];
7224            #[inline]
7225            fn new<'a>(
7226                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7227            ) -> Self {
7228                tuple.into()
7229            }
7230            #[inline]
7231            fn tokenize(&self) -> Self::Token<'_> {
7232                ()
7233            }
7234            #[inline]
7235            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7236                <Self::Parameters<
7237                    '_,
7238                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7239                    .map(Self::new)
7240            }
7241        }
7242    };
7243    #[derive(serde::Serialize, serde::Deserialize)]
7244    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7245    /**Custom error with signature `NoUndelegationFound()` and selector `0xb524fd6a`.
7246```solidity
7247error NoUndelegationFound();
7248```*/
7249    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7250    #[derive(Clone)]
7251    pub struct NoUndelegationFound;
7252    #[allow(
7253        non_camel_case_types,
7254        non_snake_case,
7255        clippy::pub_underscore_fields,
7256        clippy::style
7257    )]
7258    const _: () = {
7259        use alloy::sol_types as alloy_sol_types;
7260        #[doc(hidden)]
7261        #[allow(dead_code)]
7262        type UnderlyingSolTuple<'a> = ();
7263        #[doc(hidden)]
7264        type UnderlyingRustTuple<'a> = ();
7265        #[cfg(test)]
7266        #[allow(dead_code, unreachable_patterns)]
7267        fn _type_assertion(
7268            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7269        ) {
7270            match _t {
7271                alloy_sol_types::private::AssertTypeEq::<
7272                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7273                >(_) => {}
7274            }
7275        }
7276        #[automatically_derived]
7277        #[doc(hidden)]
7278        impl ::core::convert::From<NoUndelegationFound> for UnderlyingRustTuple<'_> {
7279            fn from(value: NoUndelegationFound) -> Self {
7280                ()
7281            }
7282        }
7283        #[automatically_derived]
7284        #[doc(hidden)]
7285        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoUndelegationFound {
7286            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7287                Self
7288            }
7289        }
7290        #[automatically_derived]
7291        impl alloy_sol_types::SolError for NoUndelegationFound {
7292            type Parameters<'a> = UnderlyingSolTuple<'a>;
7293            type Token<'a> = <Self::Parameters<
7294                'a,
7295            > as alloy_sol_types::SolType>::Token<'a>;
7296            const SIGNATURE: &'static str = "NoUndelegationFound()";
7297            const SELECTOR: [u8; 4] = [181u8, 36u8, 253u8, 106u8];
7298            #[inline]
7299            fn new<'a>(
7300                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7301            ) -> Self {
7302                tuple.into()
7303            }
7304            #[inline]
7305            fn tokenize(&self) -> Self::Token<'_> {
7306                ()
7307            }
7308            #[inline]
7309            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7310                <Self::Parameters<
7311                    '_,
7312                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7313                    .map(Self::new)
7314            }
7315        }
7316    };
7317    #[derive(serde::Serialize, serde::Deserialize)]
7318    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7319    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
7320```solidity
7321error NotInitializing();
7322```*/
7323    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7324    #[derive(Clone)]
7325    pub struct NotInitializing;
7326    #[allow(
7327        non_camel_case_types,
7328        non_snake_case,
7329        clippy::pub_underscore_fields,
7330        clippy::style
7331    )]
7332    const _: () = {
7333        use alloy::sol_types as alloy_sol_types;
7334        #[doc(hidden)]
7335        #[allow(dead_code)]
7336        type UnderlyingSolTuple<'a> = ();
7337        #[doc(hidden)]
7338        type UnderlyingRustTuple<'a> = ();
7339        #[cfg(test)]
7340        #[allow(dead_code, unreachable_patterns)]
7341        fn _type_assertion(
7342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7343        ) {
7344            match _t {
7345                alloy_sol_types::private::AssertTypeEq::<
7346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7347                >(_) => {}
7348            }
7349        }
7350        #[automatically_derived]
7351        #[doc(hidden)]
7352        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
7353            fn from(value: NotInitializing) -> Self {
7354                ()
7355            }
7356        }
7357        #[automatically_derived]
7358        #[doc(hidden)]
7359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
7360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7361                Self
7362            }
7363        }
7364        #[automatically_derived]
7365        impl alloy_sol_types::SolError for NotInitializing {
7366            type Parameters<'a> = UnderlyingSolTuple<'a>;
7367            type Token<'a> = <Self::Parameters<
7368                'a,
7369            > as alloy_sol_types::SolType>::Token<'a>;
7370            const SIGNATURE: &'static str = "NotInitializing()";
7371            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
7372            #[inline]
7373            fn new<'a>(
7374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7375            ) -> Self {
7376                tuple.into()
7377            }
7378            #[inline]
7379            fn tokenize(&self) -> Self::Token<'_> {
7380                ()
7381            }
7382            #[inline]
7383            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7384                <Self::Parameters<
7385                    '_,
7386                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7387                    .map(Self::new)
7388            }
7389        }
7390    };
7391    #[derive(serde::Serialize, serde::Deserialize)]
7392    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7393    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
7394```solidity
7395error NothingToWithdraw();
7396```*/
7397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7398    #[derive(Clone)]
7399    pub struct NothingToWithdraw;
7400    #[allow(
7401        non_camel_case_types,
7402        non_snake_case,
7403        clippy::pub_underscore_fields,
7404        clippy::style
7405    )]
7406    const _: () = {
7407        use alloy::sol_types as alloy_sol_types;
7408        #[doc(hidden)]
7409        #[allow(dead_code)]
7410        type UnderlyingSolTuple<'a> = ();
7411        #[doc(hidden)]
7412        type UnderlyingRustTuple<'a> = ();
7413        #[cfg(test)]
7414        #[allow(dead_code, unreachable_patterns)]
7415        fn _type_assertion(
7416            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7417        ) {
7418            match _t {
7419                alloy_sol_types::private::AssertTypeEq::<
7420                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7421                >(_) => {}
7422            }
7423        }
7424        #[automatically_derived]
7425        #[doc(hidden)]
7426        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
7427            fn from(value: NothingToWithdraw) -> Self {
7428                ()
7429            }
7430        }
7431        #[automatically_derived]
7432        #[doc(hidden)]
7433        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
7434            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7435                Self
7436            }
7437        }
7438        #[automatically_derived]
7439        impl alloy_sol_types::SolError for NothingToWithdraw {
7440            type Parameters<'a> = UnderlyingSolTuple<'a>;
7441            type Token<'a> = <Self::Parameters<
7442                'a,
7443            > as alloy_sol_types::SolType>::Token<'a>;
7444            const SIGNATURE: &'static str = "NothingToWithdraw()";
7445            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
7446            #[inline]
7447            fn new<'a>(
7448                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7449            ) -> Self {
7450                tuple.into()
7451            }
7452            #[inline]
7453            fn tokenize(&self) -> Self::Token<'_> {
7454                ()
7455            }
7456            #[inline]
7457            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7458                <Self::Parameters<
7459                    '_,
7460                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7461                    .map(Self::new)
7462            }
7463        }
7464    };
7465    #[derive(serde::Serialize, serde::Deserialize)]
7466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7467    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
7468```solidity
7469error OwnableInvalidOwner(address owner);
7470```*/
7471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7472    #[derive(Clone)]
7473    pub struct OwnableInvalidOwner {
7474        #[allow(missing_docs)]
7475        pub owner: alloy::sol_types::private::Address,
7476    }
7477    #[allow(
7478        non_camel_case_types,
7479        non_snake_case,
7480        clippy::pub_underscore_fields,
7481        clippy::style
7482    )]
7483    const _: () = {
7484        use alloy::sol_types as alloy_sol_types;
7485        #[doc(hidden)]
7486        #[allow(dead_code)]
7487        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7488        #[doc(hidden)]
7489        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7490        #[cfg(test)]
7491        #[allow(dead_code, unreachable_patterns)]
7492        fn _type_assertion(
7493            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7494        ) {
7495            match _t {
7496                alloy_sol_types::private::AssertTypeEq::<
7497                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7498                >(_) => {}
7499            }
7500        }
7501        #[automatically_derived]
7502        #[doc(hidden)]
7503        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
7504            fn from(value: OwnableInvalidOwner) -> Self {
7505                (value.owner,)
7506            }
7507        }
7508        #[automatically_derived]
7509        #[doc(hidden)]
7510        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
7511            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7512                Self { owner: tuple.0 }
7513            }
7514        }
7515        #[automatically_derived]
7516        impl alloy_sol_types::SolError for OwnableInvalidOwner {
7517            type Parameters<'a> = UnderlyingSolTuple<'a>;
7518            type Token<'a> = <Self::Parameters<
7519                'a,
7520            > as alloy_sol_types::SolType>::Token<'a>;
7521            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
7522            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
7523            #[inline]
7524            fn new<'a>(
7525                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7526            ) -> Self {
7527                tuple.into()
7528            }
7529            #[inline]
7530            fn tokenize(&self) -> Self::Token<'_> {
7531                (
7532                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7533                        &self.owner,
7534                    ),
7535                )
7536            }
7537            #[inline]
7538            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7539                <Self::Parameters<
7540                    '_,
7541                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7542                    .map(Self::new)
7543            }
7544        }
7545    };
7546    #[derive(serde::Serialize, serde::Deserialize)]
7547    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7548    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
7549```solidity
7550error OwnableUnauthorizedAccount(address account);
7551```*/
7552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7553    #[derive(Clone)]
7554    pub struct OwnableUnauthorizedAccount {
7555        #[allow(missing_docs)]
7556        pub account: alloy::sol_types::private::Address,
7557    }
7558    #[allow(
7559        non_camel_case_types,
7560        non_snake_case,
7561        clippy::pub_underscore_fields,
7562        clippy::style
7563    )]
7564    const _: () = {
7565        use alloy::sol_types as alloy_sol_types;
7566        #[doc(hidden)]
7567        #[allow(dead_code)]
7568        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7569        #[doc(hidden)]
7570        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7571        #[cfg(test)]
7572        #[allow(dead_code, unreachable_patterns)]
7573        fn _type_assertion(
7574            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7575        ) {
7576            match _t {
7577                alloy_sol_types::private::AssertTypeEq::<
7578                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7579                >(_) => {}
7580            }
7581        }
7582        #[automatically_derived]
7583        #[doc(hidden)]
7584        impl ::core::convert::From<OwnableUnauthorizedAccount>
7585        for UnderlyingRustTuple<'_> {
7586            fn from(value: OwnableUnauthorizedAccount) -> Self {
7587                (value.account,)
7588            }
7589        }
7590        #[automatically_derived]
7591        #[doc(hidden)]
7592        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7593        for OwnableUnauthorizedAccount {
7594            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7595                Self { account: tuple.0 }
7596            }
7597        }
7598        #[automatically_derived]
7599        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
7600            type Parameters<'a> = UnderlyingSolTuple<'a>;
7601            type Token<'a> = <Self::Parameters<
7602                'a,
7603            > as alloy_sol_types::SolType>::Token<'a>;
7604            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
7605            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
7606            #[inline]
7607            fn new<'a>(
7608                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7609            ) -> Self {
7610                tuple.into()
7611            }
7612            #[inline]
7613            fn tokenize(&self) -> Self::Token<'_> {
7614                (
7615                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7616                        &self.account,
7617                    ),
7618                )
7619            }
7620            #[inline]
7621            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7622                <Self::Parameters<
7623                    '_,
7624                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7625                    .map(Self::new)
7626            }
7627        }
7628    };
7629    #[derive(serde::Serialize, serde::Deserialize)]
7630    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7631    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
7632```solidity
7633error OwnershipCannotBeRenounced();
7634```*/
7635    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7636    #[derive(Clone)]
7637    pub struct OwnershipCannotBeRenounced;
7638    #[allow(
7639        non_camel_case_types,
7640        non_snake_case,
7641        clippy::pub_underscore_fields,
7642        clippy::style
7643    )]
7644    const _: () = {
7645        use alloy::sol_types as alloy_sol_types;
7646        #[doc(hidden)]
7647        #[allow(dead_code)]
7648        type UnderlyingSolTuple<'a> = ();
7649        #[doc(hidden)]
7650        type UnderlyingRustTuple<'a> = ();
7651        #[cfg(test)]
7652        #[allow(dead_code, unreachable_patterns)]
7653        fn _type_assertion(
7654            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7655        ) {
7656            match _t {
7657                alloy_sol_types::private::AssertTypeEq::<
7658                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7659                >(_) => {}
7660            }
7661        }
7662        #[automatically_derived]
7663        #[doc(hidden)]
7664        impl ::core::convert::From<OwnershipCannotBeRenounced>
7665        for UnderlyingRustTuple<'_> {
7666            fn from(value: OwnershipCannotBeRenounced) -> Self {
7667                ()
7668            }
7669        }
7670        #[automatically_derived]
7671        #[doc(hidden)]
7672        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7673        for OwnershipCannotBeRenounced {
7674            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7675                Self
7676            }
7677        }
7678        #[automatically_derived]
7679        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
7680            type Parameters<'a> = UnderlyingSolTuple<'a>;
7681            type Token<'a> = <Self::Parameters<
7682                'a,
7683            > as alloy_sol_types::SolType>::Token<'a>;
7684            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
7685            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
7686            #[inline]
7687            fn new<'a>(
7688                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7689            ) -> Self {
7690                tuple.into()
7691            }
7692            #[inline]
7693            fn tokenize(&self) -> Self::Token<'_> {
7694                ()
7695            }
7696            #[inline]
7697            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7698                <Self::Parameters<
7699                    '_,
7700                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7701                    .map(Self::new)
7702            }
7703        }
7704    };
7705    #[derive(serde::Serialize, serde::Deserialize)]
7706    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7707    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
7708```solidity
7709error PowPrecompileFailed();
7710```*/
7711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7712    #[derive(Clone)]
7713    pub struct PowPrecompileFailed;
7714    #[allow(
7715        non_camel_case_types,
7716        non_snake_case,
7717        clippy::pub_underscore_fields,
7718        clippy::style
7719    )]
7720    const _: () = {
7721        use alloy::sol_types as alloy_sol_types;
7722        #[doc(hidden)]
7723        #[allow(dead_code)]
7724        type UnderlyingSolTuple<'a> = ();
7725        #[doc(hidden)]
7726        type UnderlyingRustTuple<'a> = ();
7727        #[cfg(test)]
7728        #[allow(dead_code, unreachable_patterns)]
7729        fn _type_assertion(
7730            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7731        ) {
7732            match _t {
7733                alloy_sol_types::private::AssertTypeEq::<
7734                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7735                >(_) => {}
7736            }
7737        }
7738        #[automatically_derived]
7739        #[doc(hidden)]
7740        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
7741            fn from(value: PowPrecompileFailed) -> Self {
7742                ()
7743            }
7744        }
7745        #[automatically_derived]
7746        #[doc(hidden)]
7747        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
7748            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7749                Self
7750            }
7751        }
7752        #[automatically_derived]
7753        impl alloy_sol_types::SolError for PowPrecompileFailed {
7754            type Parameters<'a> = UnderlyingSolTuple<'a>;
7755            type Token<'a> = <Self::Parameters<
7756                'a,
7757            > as alloy_sol_types::SolType>::Token<'a>;
7758            const SIGNATURE: &'static str = "PowPrecompileFailed()";
7759            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
7760            #[inline]
7761            fn new<'a>(
7762                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7763            ) -> Self {
7764                tuple.into()
7765            }
7766            #[inline]
7767            fn tokenize(&self) -> Self::Token<'_> {
7768                ()
7769            }
7770            #[inline]
7771            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7772                <Self::Parameters<
7773                    '_,
7774                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7775                    .map(Self::new)
7776            }
7777        }
7778    };
7779    #[derive(serde::Serialize, serde::Deserialize)]
7780    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7781    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
7782```solidity
7783error PrematureWithdrawal();
7784```*/
7785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7786    #[derive(Clone)]
7787    pub struct PrematureWithdrawal;
7788    #[allow(
7789        non_camel_case_types,
7790        non_snake_case,
7791        clippy::pub_underscore_fields,
7792        clippy::style
7793    )]
7794    const _: () = {
7795        use alloy::sol_types as alloy_sol_types;
7796        #[doc(hidden)]
7797        #[allow(dead_code)]
7798        type UnderlyingSolTuple<'a> = ();
7799        #[doc(hidden)]
7800        type UnderlyingRustTuple<'a> = ();
7801        #[cfg(test)]
7802        #[allow(dead_code, unreachable_patterns)]
7803        fn _type_assertion(
7804            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7805        ) {
7806            match _t {
7807                alloy_sol_types::private::AssertTypeEq::<
7808                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7809                >(_) => {}
7810            }
7811        }
7812        #[automatically_derived]
7813        #[doc(hidden)]
7814        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
7815            fn from(value: PrematureWithdrawal) -> Self {
7816                ()
7817            }
7818        }
7819        #[automatically_derived]
7820        #[doc(hidden)]
7821        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
7822            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7823                Self
7824            }
7825        }
7826        #[automatically_derived]
7827        impl alloy_sol_types::SolError for PrematureWithdrawal {
7828            type Parameters<'a> = UnderlyingSolTuple<'a>;
7829            type Token<'a> = <Self::Parameters<
7830                'a,
7831            > as alloy_sol_types::SolType>::Token<'a>;
7832            const SIGNATURE: &'static str = "PrematureWithdrawal()";
7833            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
7834            #[inline]
7835            fn new<'a>(
7836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7837            ) -> Self {
7838                tuple.into()
7839            }
7840            #[inline]
7841            fn tokenize(&self) -> Self::Token<'_> {
7842                ()
7843            }
7844            #[inline]
7845            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7846                <Self::Parameters<
7847                    '_,
7848                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7849                    .map(Self::new)
7850            }
7851        }
7852    };
7853    #[derive(serde::Serialize, serde::Deserialize)]
7854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7855    /**Custom error with signature `SchnorrKeyAlreadyUsed()` and selector `0xae493b03`.
7856```solidity
7857error SchnorrKeyAlreadyUsed();
7858```*/
7859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7860    #[derive(Clone)]
7861    pub struct SchnorrKeyAlreadyUsed;
7862    #[allow(
7863        non_camel_case_types,
7864        non_snake_case,
7865        clippy::pub_underscore_fields,
7866        clippy::style
7867    )]
7868    const _: () = {
7869        use alloy::sol_types as alloy_sol_types;
7870        #[doc(hidden)]
7871        #[allow(dead_code)]
7872        type UnderlyingSolTuple<'a> = ();
7873        #[doc(hidden)]
7874        type UnderlyingRustTuple<'a> = ();
7875        #[cfg(test)]
7876        #[allow(dead_code, unreachable_patterns)]
7877        fn _type_assertion(
7878            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7879        ) {
7880            match _t {
7881                alloy_sol_types::private::AssertTypeEq::<
7882                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7883                >(_) => {}
7884            }
7885        }
7886        #[automatically_derived]
7887        #[doc(hidden)]
7888        impl ::core::convert::From<SchnorrKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
7889            fn from(value: SchnorrKeyAlreadyUsed) -> Self {
7890                ()
7891            }
7892        }
7893        #[automatically_derived]
7894        #[doc(hidden)]
7895        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SchnorrKeyAlreadyUsed {
7896            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7897                Self
7898            }
7899        }
7900        #[automatically_derived]
7901        impl alloy_sol_types::SolError for SchnorrKeyAlreadyUsed {
7902            type Parameters<'a> = UnderlyingSolTuple<'a>;
7903            type Token<'a> = <Self::Parameters<
7904                'a,
7905            > as alloy_sol_types::SolType>::Token<'a>;
7906            const SIGNATURE: &'static str = "SchnorrKeyAlreadyUsed()";
7907            const SELECTOR: [u8; 4] = [174u8, 73u8, 59u8, 3u8];
7908            #[inline]
7909            fn new<'a>(
7910                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7911            ) -> Self {
7912                tuple.into()
7913            }
7914            #[inline]
7915            fn tokenize(&self) -> Self::Token<'_> {
7916                ()
7917            }
7918            #[inline]
7919            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7920                <Self::Parameters<
7921                    '_,
7922                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7923                    .map(Self::new)
7924            }
7925        }
7926    };
7927    #[derive(serde::Serialize, serde::Deserialize)]
7928    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7929    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7930```solidity
7931error UUPSUnauthorizedCallContext();
7932```*/
7933    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7934    #[derive(Clone)]
7935    pub struct UUPSUnauthorizedCallContext;
7936    #[allow(
7937        non_camel_case_types,
7938        non_snake_case,
7939        clippy::pub_underscore_fields,
7940        clippy::style
7941    )]
7942    const _: () = {
7943        use alloy::sol_types as alloy_sol_types;
7944        #[doc(hidden)]
7945        #[allow(dead_code)]
7946        type UnderlyingSolTuple<'a> = ();
7947        #[doc(hidden)]
7948        type UnderlyingRustTuple<'a> = ();
7949        #[cfg(test)]
7950        #[allow(dead_code, unreachable_patterns)]
7951        fn _type_assertion(
7952            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7953        ) {
7954            match _t {
7955                alloy_sol_types::private::AssertTypeEq::<
7956                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7957                >(_) => {}
7958            }
7959        }
7960        #[automatically_derived]
7961        #[doc(hidden)]
7962        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7963        for UnderlyingRustTuple<'_> {
7964            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7965                ()
7966            }
7967        }
7968        #[automatically_derived]
7969        #[doc(hidden)]
7970        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7971        for UUPSUnauthorizedCallContext {
7972            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7973                Self
7974            }
7975        }
7976        #[automatically_derived]
7977        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7978            type Parameters<'a> = UnderlyingSolTuple<'a>;
7979            type Token<'a> = <Self::Parameters<
7980                'a,
7981            > as alloy_sol_types::SolType>::Token<'a>;
7982            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7983            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7984            #[inline]
7985            fn new<'a>(
7986                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7987            ) -> Self {
7988                tuple.into()
7989            }
7990            #[inline]
7991            fn tokenize(&self) -> Self::Token<'_> {
7992                ()
7993            }
7994            #[inline]
7995            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7996                <Self::Parameters<
7997                    '_,
7998                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7999                    .map(Self::new)
8000            }
8001        }
8002    };
8003    #[derive(serde::Serialize, serde::Deserialize)]
8004    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8005    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
8006```solidity
8007error UUPSUnsupportedProxiableUUID(bytes32 slot);
8008```*/
8009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8010    #[derive(Clone)]
8011    pub struct UUPSUnsupportedProxiableUUID {
8012        #[allow(missing_docs)]
8013        pub slot: alloy::sol_types::private::FixedBytes<32>,
8014    }
8015    #[allow(
8016        non_camel_case_types,
8017        non_snake_case,
8018        clippy::pub_underscore_fields,
8019        clippy::style
8020    )]
8021    const _: () = {
8022        use alloy::sol_types as alloy_sol_types;
8023        #[doc(hidden)]
8024        #[allow(dead_code)]
8025        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8026        #[doc(hidden)]
8027        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8028        #[cfg(test)]
8029        #[allow(dead_code, unreachable_patterns)]
8030        fn _type_assertion(
8031            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8032        ) {
8033            match _t {
8034                alloy_sol_types::private::AssertTypeEq::<
8035                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8036                >(_) => {}
8037            }
8038        }
8039        #[automatically_derived]
8040        #[doc(hidden)]
8041        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
8042        for UnderlyingRustTuple<'_> {
8043            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
8044                (value.slot,)
8045            }
8046        }
8047        #[automatically_derived]
8048        #[doc(hidden)]
8049        impl ::core::convert::From<UnderlyingRustTuple<'_>>
8050        for UUPSUnsupportedProxiableUUID {
8051            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8052                Self { slot: tuple.0 }
8053            }
8054        }
8055        #[automatically_derived]
8056        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
8057            type Parameters<'a> = UnderlyingSolTuple<'a>;
8058            type Token<'a> = <Self::Parameters<
8059                'a,
8060            > as alloy_sol_types::SolType>::Token<'a>;
8061            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
8062            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
8063            #[inline]
8064            fn new<'a>(
8065                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8066            ) -> Self {
8067                tuple.into()
8068            }
8069            #[inline]
8070            fn tokenize(&self) -> Self::Token<'_> {
8071                (
8072                    <alloy::sol_types::sol_data::FixedBytes<
8073                        32,
8074                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
8075                )
8076            }
8077            #[inline]
8078            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8079                <Self::Parameters<
8080                    '_,
8081                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8082                    .map(Self::new)
8083            }
8084        }
8085    };
8086    #[derive(serde::Serialize, serde::Deserialize)]
8087    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8088    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
8089```solidity
8090error UndelegationAlreadyExists();
8091```*/
8092    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8093    #[derive(Clone)]
8094    pub struct UndelegationAlreadyExists;
8095    #[allow(
8096        non_camel_case_types,
8097        non_snake_case,
8098        clippy::pub_underscore_fields,
8099        clippy::style
8100    )]
8101    const _: () = {
8102        use alloy::sol_types as alloy_sol_types;
8103        #[doc(hidden)]
8104        #[allow(dead_code)]
8105        type UnderlyingSolTuple<'a> = ();
8106        #[doc(hidden)]
8107        type UnderlyingRustTuple<'a> = ();
8108        #[cfg(test)]
8109        #[allow(dead_code, unreachable_patterns)]
8110        fn _type_assertion(
8111            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8112        ) {
8113            match _t {
8114                alloy_sol_types::private::AssertTypeEq::<
8115                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8116                >(_) => {}
8117            }
8118        }
8119        #[automatically_derived]
8120        #[doc(hidden)]
8121        impl ::core::convert::From<UndelegationAlreadyExists>
8122        for UnderlyingRustTuple<'_> {
8123            fn from(value: UndelegationAlreadyExists) -> Self {
8124                ()
8125            }
8126        }
8127        #[automatically_derived]
8128        #[doc(hidden)]
8129        impl ::core::convert::From<UnderlyingRustTuple<'_>>
8130        for UndelegationAlreadyExists {
8131            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8132                Self
8133            }
8134        }
8135        #[automatically_derived]
8136        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
8137            type Parameters<'a> = UnderlyingSolTuple<'a>;
8138            type Token<'a> = <Self::Parameters<
8139                'a,
8140            > as alloy_sol_types::SolType>::Token<'a>;
8141            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
8142            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
8143            #[inline]
8144            fn new<'a>(
8145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8146            ) -> Self {
8147                tuple.into()
8148            }
8149            #[inline]
8150            fn tokenize(&self) -> Self::Token<'_> {
8151                ()
8152            }
8153            #[inline]
8154            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8155                <Self::Parameters<
8156                    '_,
8157                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8158                    .map(Self::new)
8159            }
8160        }
8161    };
8162    #[derive(serde::Serialize, serde::Deserialize)]
8163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8164    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
8165```solidity
8166error ValidatorAlreadyExited();
8167```*/
8168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8169    #[derive(Clone)]
8170    pub struct ValidatorAlreadyExited;
8171    #[allow(
8172        non_camel_case_types,
8173        non_snake_case,
8174        clippy::pub_underscore_fields,
8175        clippy::style
8176    )]
8177    const _: () = {
8178        use alloy::sol_types as alloy_sol_types;
8179        #[doc(hidden)]
8180        #[allow(dead_code)]
8181        type UnderlyingSolTuple<'a> = ();
8182        #[doc(hidden)]
8183        type UnderlyingRustTuple<'a> = ();
8184        #[cfg(test)]
8185        #[allow(dead_code, unreachable_patterns)]
8186        fn _type_assertion(
8187            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8188        ) {
8189            match _t {
8190                alloy_sol_types::private::AssertTypeEq::<
8191                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8192                >(_) => {}
8193            }
8194        }
8195        #[automatically_derived]
8196        #[doc(hidden)]
8197        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
8198            fn from(value: ValidatorAlreadyExited) -> Self {
8199                ()
8200            }
8201        }
8202        #[automatically_derived]
8203        #[doc(hidden)]
8204        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
8205            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8206                Self
8207            }
8208        }
8209        #[automatically_derived]
8210        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
8211            type Parameters<'a> = UnderlyingSolTuple<'a>;
8212            type Token<'a> = <Self::Parameters<
8213                'a,
8214            > as alloy_sol_types::SolType>::Token<'a>;
8215            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
8216            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
8217            #[inline]
8218            fn new<'a>(
8219                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8220            ) -> Self {
8221                tuple.into()
8222            }
8223            #[inline]
8224            fn tokenize(&self) -> Self::Token<'_> {
8225                ()
8226            }
8227            #[inline]
8228            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8229                <Self::Parameters<
8230                    '_,
8231                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8232                    .map(Self::new)
8233            }
8234        }
8235    };
8236    #[derive(serde::Serialize, serde::Deserialize)]
8237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8238    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
8239```solidity
8240error ValidatorAlreadyRegistered();
8241```*/
8242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8243    #[derive(Clone)]
8244    pub struct ValidatorAlreadyRegistered;
8245    #[allow(
8246        non_camel_case_types,
8247        non_snake_case,
8248        clippy::pub_underscore_fields,
8249        clippy::style
8250    )]
8251    const _: () = {
8252        use alloy::sol_types as alloy_sol_types;
8253        #[doc(hidden)]
8254        #[allow(dead_code)]
8255        type UnderlyingSolTuple<'a> = ();
8256        #[doc(hidden)]
8257        type UnderlyingRustTuple<'a> = ();
8258        #[cfg(test)]
8259        #[allow(dead_code, unreachable_patterns)]
8260        fn _type_assertion(
8261            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8262        ) {
8263            match _t {
8264                alloy_sol_types::private::AssertTypeEq::<
8265                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8266                >(_) => {}
8267            }
8268        }
8269        #[automatically_derived]
8270        #[doc(hidden)]
8271        impl ::core::convert::From<ValidatorAlreadyRegistered>
8272        for UnderlyingRustTuple<'_> {
8273            fn from(value: ValidatorAlreadyRegistered) -> Self {
8274                ()
8275            }
8276        }
8277        #[automatically_derived]
8278        #[doc(hidden)]
8279        impl ::core::convert::From<UnderlyingRustTuple<'_>>
8280        for ValidatorAlreadyRegistered {
8281            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8282                Self
8283            }
8284        }
8285        #[automatically_derived]
8286        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
8287            type Parameters<'a> = UnderlyingSolTuple<'a>;
8288            type Token<'a> = <Self::Parameters<
8289                'a,
8290            > as alloy_sol_types::SolType>::Token<'a>;
8291            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
8292            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
8293            #[inline]
8294            fn new<'a>(
8295                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8296            ) -> Self {
8297                tuple.into()
8298            }
8299            #[inline]
8300            fn tokenize(&self) -> Self::Token<'_> {
8301                ()
8302            }
8303            #[inline]
8304            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8305                <Self::Parameters<
8306                    '_,
8307                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8308                    .map(Self::new)
8309            }
8310        }
8311    };
8312    #[derive(serde::Serialize, serde::Deserialize)]
8313    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8314    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
8315```solidity
8316error ValidatorInactive();
8317```*/
8318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8319    #[derive(Clone)]
8320    pub struct ValidatorInactive;
8321    #[allow(
8322        non_camel_case_types,
8323        non_snake_case,
8324        clippy::pub_underscore_fields,
8325        clippy::style
8326    )]
8327    const _: () = {
8328        use alloy::sol_types as alloy_sol_types;
8329        #[doc(hidden)]
8330        #[allow(dead_code)]
8331        type UnderlyingSolTuple<'a> = ();
8332        #[doc(hidden)]
8333        type UnderlyingRustTuple<'a> = ();
8334        #[cfg(test)]
8335        #[allow(dead_code, unreachable_patterns)]
8336        fn _type_assertion(
8337            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8338        ) {
8339            match _t {
8340                alloy_sol_types::private::AssertTypeEq::<
8341                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8342                >(_) => {}
8343            }
8344        }
8345        #[automatically_derived]
8346        #[doc(hidden)]
8347        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
8348            fn from(value: ValidatorInactive) -> Self {
8349                ()
8350            }
8351        }
8352        #[automatically_derived]
8353        #[doc(hidden)]
8354        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
8355            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8356                Self
8357            }
8358        }
8359        #[automatically_derived]
8360        impl alloy_sol_types::SolError for ValidatorInactive {
8361            type Parameters<'a> = UnderlyingSolTuple<'a>;
8362            type Token<'a> = <Self::Parameters<
8363                'a,
8364            > as alloy_sol_types::SolType>::Token<'a>;
8365            const SIGNATURE: &'static str = "ValidatorInactive()";
8366            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
8367            #[inline]
8368            fn new<'a>(
8369                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8370            ) -> Self {
8371                tuple.into()
8372            }
8373            #[inline]
8374            fn tokenize(&self) -> Self::Token<'_> {
8375                ()
8376            }
8377            #[inline]
8378            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8379                <Self::Parameters<
8380                    '_,
8381                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8382                    .map(Self::new)
8383            }
8384        }
8385    };
8386    #[derive(serde::Serialize, serde::Deserialize)]
8387    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8388    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
8389```solidity
8390error ValidatorNotExited();
8391```*/
8392    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8393    #[derive(Clone)]
8394    pub struct ValidatorNotExited;
8395    #[allow(
8396        non_camel_case_types,
8397        non_snake_case,
8398        clippy::pub_underscore_fields,
8399        clippy::style
8400    )]
8401    const _: () = {
8402        use alloy::sol_types as alloy_sol_types;
8403        #[doc(hidden)]
8404        #[allow(dead_code)]
8405        type UnderlyingSolTuple<'a> = ();
8406        #[doc(hidden)]
8407        type UnderlyingRustTuple<'a> = ();
8408        #[cfg(test)]
8409        #[allow(dead_code, unreachable_patterns)]
8410        fn _type_assertion(
8411            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8412        ) {
8413            match _t {
8414                alloy_sol_types::private::AssertTypeEq::<
8415                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8416                >(_) => {}
8417            }
8418        }
8419        #[automatically_derived]
8420        #[doc(hidden)]
8421        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
8422            fn from(value: ValidatorNotExited) -> Self {
8423                ()
8424            }
8425        }
8426        #[automatically_derived]
8427        #[doc(hidden)]
8428        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
8429            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8430                Self
8431            }
8432        }
8433        #[automatically_derived]
8434        impl alloy_sol_types::SolError for ValidatorNotExited {
8435            type Parameters<'a> = UnderlyingSolTuple<'a>;
8436            type Token<'a> = <Self::Parameters<
8437                'a,
8438            > as alloy_sol_types::SolType>::Token<'a>;
8439            const SIGNATURE: &'static str = "ValidatorNotExited()";
8440            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
8441            #[inline]
8442            fn new<'a>(
8443                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8444            ) -> Self {
8445                tuple.into()
8446            }
8447            #[inline]
8448            fn tokenize(&self) -> Self::Token<'_> {
8449                ()
8450            }
8451            #[inline]
8452            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8453                <Self::Parameters<
8454                    '_,
8455                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8456                    .map(Self::new)
8457            }
8458        }
8459    };
8460    #[derive(serde::Serialize, serde::Deserialize)]
8461    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8462    /**Custom error with signature `X25519KeyAlreadyUsed()` and selector `0xb23640ec`.
8463```solidity
8464error X25519KeyAlreadyUsed();
8465```*/
8466    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8467    #[derive(Clone)]
8468    pub struct X25519KeyAlreadyUsed;
8469    #[allow(
8470        non_camel_case_types,
8471        non_snake_case,
8472        clippy::pub_underscore_fields,
8473        clippy::style
8474    )]
8475    const _: () = {
8476        use alloy::sol_types as alloy_sol_types;
8477        #[doc(hidden)]
8478        #[allow(dead_code)]
8479        type UnderlyingSolTuple<'a> = ();
8480        #[doc(hidden)]
8481        type UnderlyingRustTuple<'a> = ();
8482        #[cfg(test)]
8483        #[allow(dead_code, unreachable_patterns)]
8484        fn _type_assertion(
8485            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8486        ) {
8487            match _t {
8488                alloy_sol_types::private::AssertTypeEq::<
8489                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8490                >(_) => {}
8491            }
8492        }
8493        #[automatically_derived]
8494        #[doc(hidden)]
8495        impl ::core::convert::From<X25519KeyAlreadyUsed> for UnderlyingRustTuple<'_> {
8496            fn from(value: X25519KeyAlreadyUsed) -> Self {
8497                ()
8498            }
8499        }
8500        #[automatically_derived]
8501        #[doc(hidden)]
8502        impl ::core::convert::From<UnderlyingRustTuple<'_>> for X25519KeyAlreadyUsed {
8503            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8504                Self
8505            }
8506        }
8507        #[automatically_derived]
8508        impl alloy_sol_types::SolError for X25519KeyAlreadyUsed {
8509            type Parameters<'a> = UnderlyingSolTuple<'a>;
8510            type Token<'a> = <Self::Parameters<
8511                'a,
8512            > as alloy_sol_types::SolType>::Token<'a>;
8513            const SIGNATURE: &'static str = "X25519KeyAlreadyUsed()";
8514            const SELECTOR: [u8; 4] = [178u8, 54u8, 64u8, 236u8];
8515            #[inline]
8516            fn new<'a>(
8517                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8518            ) -> Self {
8519                tuple.into()
8520            }
8521            #[inline]
8522            fn tokenize(&self) -> Self::Token<'_> {
8523                ()
8524            }
8525            #[inline]
8526            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8527                <Self::Parameters<
8528                    '_,
8529                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8530                    .map(Self::new)
8531            }
8532        }
8533    };
8534    #[derive(serde::Serialize, serde::Deserialize)]
8535    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8536    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
8537```solidity
8538error ZeroAddress();
8539```*/
8540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8541    #[derive(Clone)]
8542    pub struct ZeroAddress;
8543    #[allow(
8544        non_camel_case_types,
8545        non_snake_case,
8546        clippy::pub_underscore_fields,
8547        clippy::style
8548    )]
8549    const _: () = {
8550        use alloy::sol_types as alloy_sol_types;
8551        #[doc(hidden)]
8552        #[allow(dead_code)]
8553        type UnderlyingSolTuple<'a> = ();
8554        #[doc(hidden)]
8555        type UnderlyingRustTuple<'a> = ();
8556        #[cfg(test)]
8557        #[allow(dead_code, unreachable_patterns)]
8558        fn _type_assertion(
8559            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8560        ) {
8561            match _t {
8562                alloy_sol_types::private::AssertTypeEq::<
8563                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8564                >(_) => {}
8565            }
8566        }
8567        #[automatically_derived]
8568        #[doc(hidden)]
8569        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
8570            fn from(value: ZeroAddress) -> Self {
8571                ()
8572            }
8573        }
8574        #[automatically_derived]
8575        #[doc(hidden)]
8576        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
8577            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8578                Self
8579            }
8580        }
8581        #[automatically_derived]
8582        impl alloy_sol_types::SolError for ZeroAddress {
8583            type Parameters<'a> = UnderlyingSolTuple<'a>;
8584            type Token<'a> = <Self::Parameters<
8585                'a,
8586            > as alloy_sol_types::SolType>::Token<'a>;
8587            const SIGNATURE: &'static str = "ZeroAddress()";
8588            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
8589            #[inline]
8590            fn new<'a>(
8591                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8592            ) -> Self {
8593                tuple.into()
8594            }
8595            #[inline]
8596            fn tokenize(&self) -> Self::Token<'_> {
8597                ()
8598            }
8599            #[inline]
8600            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8601                <Self::Parameters<
8602                    '_,
8603                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8604                    .map(Self::new)
8605            }
8606        }
8607    };
8608    #[derive(serde::Serialize, serde::Deserialize)]
8609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8610    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
8611```solidity
8612error ZeroAmount();
8613```*/
8614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8615    #[derive(Clone)]
8616    pub struct ZeroAmount;
8617    #[allow(
8618        non_camel_case_types,
8619        non_snake_case,
8620        clippy::pub_underscore_fields,
8621        clippy::style
8622    )]
8623    const _: () = {
8624        use alloy::sol_types as alloy_sol_types;
8625        #[doc(hidden)]
8626        #[allow(dead_code)]
8627        type UnderlyingSolTuple<'a> = ();
8628        #[doc(hidden)]
8629        type UnderlyingRustTuple<'a> = ();
8630        #[cfg(test)]
8631        #[allow(dead_code, unreachable_patterns)]
8632        fn _type_assertion(
8633            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8634        ) {
8635            match _t {
8636                alloy_sol_types::private::AssertTypeEq::<
8637                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8638                >(_) => {}
8639            }
8640        }
8641        #[automatically_derived]
8642        #[doc(hidden)]
8643        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
8644            fn from(value: ZeroAmount) -> Self {
8645                ()
8646            }
8647        }
8648        #[automatically_derived]
8649        #[doc(hidden)]
8650        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
8651            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8652                Self
8653            }
8654        }
8655        #[automatically_derived]
8656        impl alloy_sol_types::SolError for ZeroAmount {
8657            type Parameters<'a> = UnderlyingSolTuple<'a>;
8658            type Token<'a> = <Self::Parameters<
8659                'a,
8660            > as alloy_sol_types::SolType>::Token<'a>;
8661            const SIGNATURE: &'static str = "ZeroAmount()";
8662            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
8663            #[inline]
8664            fn new<'a>(
8665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8666            ) -> Self {
8667                tuple.into()
8668            }
8669            #[inline]
8670            fn tokenize(&self) -> Self::Token<'_> {
8671                ()
8672            }
8673            #[inline]
8674            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8675                <Self::Parameters<
8676                    '_,
8677                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8678                    .map(Self::new)
8679            }
8680        }
8681    };
8682    #[derive(serde::Serialize, serde::Deserialize)]
8683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8684    /**Event with signature `CommissionUpdated(address,uint256,uint16,uint16)` and selector `0xbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd64`.
8685```solidity
8686event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
8687```*/
8688    #[allow(
8689        non_camel_case_types,
8690        non_snake_case,
8691        clippy::pub_underscore_fields,
8692        clippy::style
8693    )]
8694    #[derive(Clone)]
8695    pub struct CommissionUpdated {
8696        #[allow(missing_docs)]
8697        pub validator: alloy::sol_types::private::Address,
8698        #[allow(missing_docs)]
8699        pub timestamp: alloy::sol_types::private::primitives::aliases::U256,
8700        #[allow(missing_docs)]
8701        pub oldCommission: u16,
8702        #[allow(missing_docs)]
8703        pub newCommission: u16,
8704    }
8705    #[allow(
8706        non_camel_case_types,
8707        non_snake_case,
8708        clippy::pub_underscore_fields,
8709        clippy::style
8710    )]
8711    const _: () = {
8712        use alloy::sol_types as alloy_sol_types;
8713        #[automatically_derived]
8714        impl alloy_sol_types::SolEvent for CommissionUpdated {
8715            type DataTuple<'a> = (
8716                alloy::sol_types::sol_data::Uint<256>,
8717                alloy::sol_types::sol_data::Uint<16>,
8718                alloy::sol_types::sol_data::Uint<16>,
8719            );
8720            type DataToken<'a> = <Self::DataTuple<
8721                'a,
8722            > as alloy_sol_types::SolType>::Token<'a>;
8723            type TopicList = (
8724                alloy_sol_types::sol_data::FixedBytes<32>,
8725                alloy::sol_types::sol_data::Address,
8726            );
8727            const SIGNATURE: &'static str = "CommissionUpdated(address,uint256,uint16,uint16)";
8728            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8729                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
8730                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
8731                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
8732            ]);
8733            const ANONYMOUS: bool = false;
8734            #[allow(unused_variables)]
8735            #[inline]
8736            fn new(
8737                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8738                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8739            ) -> Self {
8740                Self {
8741                    validator: topics.1,
8742                    timestamp: data.0,
8743                    oldCommission: data.1,
8744                    newCommission: data.2,
8745                }
8746            }
8747            #[inline]
8748            fn check_signature(
8749                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8750            ) -> alloy_sol_types::Result<()> {
8751                if topics.0 != Self::SIGNATURE_HASH {
8752                    return Err(
8753                        alloy_sol_types::Error::invalid_event_signature_hash(
8754                            Self::SIGNATURE,
8755                            topics.0,
8756                            Self::SIGNATURE_HASH,
8757                        ),
8758                    );
8759                }
8760                Ok(())
8761            }
8762            #[inline]
8763            fn tokenize_body(&self) -> Self::DataToken<'_> {
8764                (
8765                    <alloy::sol_types::sol_data::Uint<
8766                        256,
8767                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
8768                    <alloy::sol_types::sol_data::Uint<
8769                        16,
8770                    > as alloy_sol_types::SolType>::tokenize(&self.oldCommission),
8771                    <alloy::sol_types::sol_data::Uint<
8772                        16,
8773                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
8774                )
8775            }
8776            #[inline]
8777            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8778                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8779            }
8780            #[inline]
8781            fn encode_topics_raw(
8782                &self,
8783                out: &mut [alloy_sol_types::abi::token::WordToken],
8784            ) -> alloy_sol_types::Result<()> {
8785                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8786                    return Err(alloy_sol_types::Error::Overrun);
8787                }
8788                out[0usize] = alloy_sol_types::abi::token::WordToken(
8789                    Self::SIGNATURE_HASH,
8790                );
8791                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8792                    &self.validator,
8793                );
8794                Ok(())
8795            }
8796        }
8797        #[automatically_derived]
8798        impl alloy_sol_types::private::IntoLogData for CommissionUpdated {
8799            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8800                From::from(self)
8801            }
8802            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8803                From::from(&self)
8804            }
8805        }
8806        #[automatically_derived]
8807        impl From<&CommissionUpdated> for alloy_sol_types::private::LogData {
8808            #[inline]
8809            fn from(this: &CommissionUpdated) -> alloy_sol_types::private::LogData {
8810                alloy_sol_types::SolEvent::encode_log_data(this)
8811            }
8812        }
8813    };
8814    #[derive(serde::Serialize, serde::Deserialize)]
8815    #[derive()]
8816    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
8817```solidity
8818event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
8819```*/
8820    #[allow(
8821        non_camel_case_types,
8822        non_snake_case,
8823        clippy::pub_underscore_fields,
8824        clippy::style
8825    )]
8826    #[derive(Clone)]
8827    pub struct ConsensusKeysUpdated {
8828        #[allow(missing_docs)]
8829        pub account: alloy::sol_types::private::Address,
8830        #[allow(missing_docs)]
8831        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8832        #[allow(missing_docs)]
8833        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8834    }
8835    #[allow(
8836        non_camel_case_types,
8837        non_snake_case,
8838        clippy::pub_underscore_fields,
8839        clippy::style
8840    )]
8841    const _: () = {
8842        use alloy::sol_types as alloy_sol_types;
8843        #[automatically_derived]
8844        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
8845            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
8846            type DataToken<'a> = <Self::DataTuple<
8847                'a,
8848            > as alloy_sol_types::SolType>::Token<'a>;
8849            type TopicList = (
8850                alloy_sol_types::sol_data::FixedBytes<32>,
8851                alloy::sol_types::sol_data::Address,
8852            );
8853            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
8854            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8855                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
8856                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
8857                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
8858            ]);
8859            const ANONYMOUS: bool = false;
8860            #[allow(unused_variables)]
8861            #[inline]
8862            fn new(
8863                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8864                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8865            ) -> Self {
8866                Self {
8867                    account: topics.1,
8868                    blsVK: data.0,
8869                    schnorrVK: data.1,
8870                }
8871            }
8872            #[inline]
8873            fn check_signature(
8874                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8875            ) -> alloy_sol_types::Result<()> {
8876                if topics.0 != Self::SIGNATURE_HASH {
8877                    return Err(
8878                        alloy_sol_types::Error::invalid_event_signature_hash(
8879                            Self::SIGNATURE,
8880                            topics.0,
8881                            Self::SIGNATURE_HASH,
8882                        ),
8883                    );
8884                }
8885                Ok(())
8886            }
8887            #[inline]
8888            fn tokenize_body(&self) -> Self::DataToken<'_> {
8889                (
8890                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8891                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8892                        &self.schnorrVK,
8893                    ),
8894                )
8895            }
8896            #[inline]
8897            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8898                (Self::SIGNATURE_HASH.into(), self.account.clone())
8899            }
8900            #[inline]
8901            fn encode_topics_raw(
8902                &self,
8903                out: &mut [alloy_sol_types::abi::token::WordToken],
8904            ) -> alloy_sol_types::Result<()> {
8905                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8906                    return Err(alloy_sol_types::Error::Overrun);
8907                }
8908                out[0usize] = alloy_sol_types::abi::token::WordToken(
8909                    Self::SIGNATURE_HASH,
8910                );
8911                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8912                    &self.account,
8913                );
8914                Ok(())
8915            }
8916        }
8917        #[automatically_derived]
8918        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
8919            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8920                From::from(self)
8921            }
8922            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8923                From::from(&self)
8924            }
8925        }
8926        #[automatically_derived]
8927        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
8928            #[inline]
8929            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
8930                alloy_sol_types::SolEvent::encode_log_data(this)
8931            }
8932        }
8933    };
8934    #[derive(serde::Serialize, serde::Deserialize)]
8935    #[derive()]
8936    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
8937```solidity
8938event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
8939```*/
8940    #[allow(
8941        non_camel_case_types,
8942        non_snake_case,
8943        clippy::pub_underscore_fields,
8944        clippy::style
8945    )]
8946    #[derive(Clone)]
8947    pub struct ConsensusKeysUpdatedV2 {
8948        #[allow(missing_docs)]
8949        pub account: alloy::sol_types::private::Address,
8950        #[allow(missing_docs)]
8951        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8952        #[allow(missing_docs)]
8953        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8954        #[allow(missing_docs)]
8955        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8956        #[allow(missing_docs)]
8957        pub schnorrSig: alloy::sol_types::private::Bytes,
8958    }
8959    #[allow(
8960        non_camel_case_types,
8961        non_snake_case,
8962        clippy::pub_underscore_fields,
8963        clippy::style
8964    )]
8965    const _: () = {
8966        use alloy::sol_types as alloy_sol_types;
8967        #[automatically_derived]
8968        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
8969            type DataTuple<'a> = (
8970                BN254::G2Point,
8971                EdOnBN254::EdOnBN254Point,
8972                BN254::G1Point,
8973                alloy::sol_types::sol_data::Bytes,
8974            );
8975            type DataToken<'a> = <Self::DataTuple<
8976                'a,
8977            > as alloy_sol_types::SolType>::Token<'a>;
8978            type TopicList = (
8979                alloy_sol_types::sol_data::FixedBytes<32>,
8980                alloy::sol_types::sol_data::Address,
8981            );
8982            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
8983            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8984                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
8985                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
8986                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
8987            ]);
8988            const ANONYMOUS: bool = false;
8989            #[allow(unused_variables)]
8990            #[inline]
8991            fn new(
8992                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8993                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8994            ) -> Self {
8995                Self {
8996                    account: topics.1,
8997                    blsVK: data.0,
8998                    schnorrVK: data.1,
8999                    blsSig: data.2,
9000                    schnorrSig: data.3,
9001                }
9002            }
9003            #[inline]
9004            fn check_signature(
9005                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9006            ) -> alloy_sol_types::Result<()> {
9007                if topics.0 != Self::SIGNATURE_HASH {
9008                    return Err(
9009                        alloy_sol_types::Error::invalid_event_signature_hash(
9010                            Self::SIGNATURE,
9011                            topics.0,
9012                            Self::SIGNATURE_HASH,
9013                        ),
9014                    );
9015                }
9016                Ok(())
9017            }
9018            #[inline]
9019            fn tokenize_body(&self) -> Self::DataToken<'_> {
9020                (
9021                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
9022                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
9023                        &self.schnorrVK,
9024                    ),
9025                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
9026                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9027                        &self.schnorrSig,
9028                    ),
9029                )
9030            }
9031            #[inline]
9032            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9033                (Self::SIGNATURE_HASH.into(), self.account.clone())
9034            }
9035            #[inline]
9036            fn encode_topics_raw(
9037                &self,
9038                out: &mut [alloy_sol_types::abi::token::WordToken],
9039            ) -> alloy_sol_types::Result<()> {
9040                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9041                    return Err(alloy_sol_types::Error::Overrun);
9042                }
9043                out[0usize] = alloy_sol_types::abi::token::WordToken(
9044                    Self::SIGNATURE_HASH,
9045                );
9046                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9047                    &self.account,
9048                );
9049                Ok(())
9050            }
9051        }
9052        #[automatically_derived]
9053        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
9054            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9055                From::from(self)
9056            }
9057            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9058                From::from(&self)
9059            }
9060        }
9061        #[automatically_derived]
9062        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
9063            #[inline]
9064            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
9065                alloy_sol_types::SolEvent::encode_log_data(this)
9066            }
9067        }
9068    };
9069    #[derive(serde::Serialize, serde::Deserialize)]
9070    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9071    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
9072```solidity
9073event Delegated(address indexed delegator, address indexed validator, uint256 amount);
9074```*/
9075    #[allow(
9076        non_camel_case_types,
9077        non_snake_case,
9078        clippy::pub_underscore_fields,
9079        clippy::style
9080    )]
9081    #[derive(Clone)]
9082    pub struct Delegated {
9083        #[allow(missing_docs)]
9084        pub delegator: alloy::sol_types::private::Address,
9085        #[allow(missing_docs)]
9086        pub validator: alloy::sol_types::private::Address,
9087        #[allow(missing_docs)]
9088        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9089    }
9090    #[allow(
9091        non_camel_case_types,
9092        non_snake_case,
9093        clippy::pub_underscore_fields,
9094        clippy::style
9095    )]
9096    const _: () = {
9097        use alloy::sol_types as alloy_sol_types;
9098        #[automatically_derived]
9099        impl alloy_sol_types::SolEvent for Delegated {
9100            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9101            type DataToken<'a> = <Self::DataTuple<
9102                'a,
9103            > as alloy_sol_types::SolType>::Token<'a>;
9104            type TopicList = (
9105                alloy_sol_types::sol_data::FixedBytes<32>,
9106                alloy::sol_types::sol_data::Address,
9107                alloy::sol_types::sol_data::Address,
9108            );
9109            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
9110            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9111                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
9112                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
9113                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
9114            ]);
9115            const ANONYMOUS: bool = false;
9116            #[allow(unused_variables)]
9117            #[inline]
9118            fn new(
9119                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9120                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9121            ) -> Self {
9122                Self {
9123                    delegator: topics.1,
9124                    validator: topics.2,
9125                    amount: data.0,
9126                }
9127            }
9128            #[inline]
9129            fn check_signature(
9130                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9131            ) -> alloy_sol_types::Result<()> {
9132                if topics.0 != Self::SIGNATURE_HASH {
9133                    return Err(
9134                        alloy_sol_types::Error::invalid_event_signature_hash(
9135                            Self::SIGNATURE,
9136                            topics.0,
9137                            Self::SIGNATURE_HASH,
9138                        ),
9139                    );
9140                }
9141                Ok(())
9142            }
9143            #[inline]
9144            fn tokenize_body(&self) -> Self::DataToken<'_> {
9145                (
9146                    <alloy::sol_types::sol_data::Uint<
9147                        256,
9148                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9149                )
9150            }
9151            #[inline]
9152            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9153                (
9154                    Self::SIGNATURE_HASH.into(),
9155                    self.delegator.clone(),
9156                    self.validator.clone(),
9157                )
9158            }
9159            #[inline]
9160            fn encode_topics_raw(
9161                &self,
9162                out: &mut [alloy_sol_types::abi::token::WordToken],
9163            ) -> alloy_sol_types::Result<()> {
9164                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9165                    return Err(alloy_sol_types::Error::Overrun);
9166                }
9167                out[0usize] = alloy_sol_types::abi::token::WordToken(
9168                    Self::SIGNATURE_HASH,
9169                );
9170                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9171                    &self.delegator,
9172                );
9173                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9174                    &self.validator,
9175                );
9176                Ok(())
9177            }
9178        }
9179        #[automatically_derived]
9180        impl alloy_sol_types::private::IntoLogData for Delegated {
9181            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9182                From::from(self)
9183            }
9184            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9185                From::from(&self)
9186            }
9187        }
9188        #[automatically_derived]
9189        impl From<&Delegated> for alloy_sol_types::private::LogData {
9190            #[inline]
9191            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
9192                alloy_sol_types::SolEvent::encode_log_data(this)
9193            }
9194        }
9195    };
9196    #[derive(serde::Serialize, serde::Deserialize)]
9197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9198    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
9199```solidity
9200event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
9201```*/
9202    #[allow(
9203        non_camel_case_types,
9204        non_snake_case,
9205        clippy::pub_underscore_fields,
9206        clippy::style
9207    )]
9208    #[derive(Clone)]
9209    pub struct ExitEscrowPeriodUpdated {
9210        #[allow(missing_docs)]
9211        pub newExitEscrowPeriod: u64,
9212    }
9213    #[allow(
9214        non_camel_case_types,
9215        non_snake_case,
9216        clippy::pub_underscore_fields,
9217        clippy::style
9218    )]
9219    const _: () = {
9220        use alloy::sol_types as alloy_sol_types;
9221        #[automatically_derived]
9222        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
9223            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9224            type DataToken<'a> = <Self::DataTuple<
9225                'a,
9226            > as alloy_sol_types::SolType>::Token<'a>;
9227            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9228            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
9229            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9230                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
9231                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
9232                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
9233            ]);
9234            const ANONYMOUS: bool = false;
9235            #[allow(unused_variables)]
9236            #[inline]
9237            fn new(
9238                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9239                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9240            ) -> Self {
9241                Self {
9242                    newExitEscrowPeriod: data.0,
9243                }
9244            }
9245            #[inline]
9246            fn check_signature(
9247                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9248            ) -> alloy_sol_types::Result<()> {
9249                if topics.0 != Self::SIGNATURE_HASH {
9250                    return Err(
9251                        alloy_sol_types::Error::invalid_event_signature_hash(
9252                            Self::SIGNATURE,
9253                            topics.0,
9254                            Self::SIGNATURE_HASH,
9255                        ),
9256                    );
9257                }
9258                Ok(())
9259            }
9260            #[inline]
9261            fn tokenize_body(&self) -> Self::DataToken<'_> {
9262                (
9263                    <alloy::sol_types::sol_data::Uint<
9264                        64,
9265                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
9266                )
9267            }
9268            #[inline]
9269            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9270                (Self::SIGNATURE_HASH.into(),)
9271            }
9272            #[inline]
9273            fn encode_topics_raw(
9274                &self,
9275                out: &mut [alloy_sol_types::abi::token::WordToken],
9276            ) -> alloy_sol_types::Result<()> {
9277                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9278                    return Err(alloy_sol_types::Error::Overrun);
9279                }
9280                out[0usize] = alloy_sol_types::abi::token::WordToken(
9281                    Self::SIGNATURE_HASH,
9282                );
9283                Ok(())
9284            }
9285        }
9286        #[automatically_derived]
9287        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
9288            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9289                From::from(self)
9290            }
9291            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9292                From::from(&self)
9293            }
9294        }
9295        #[automatically_derived]
9296        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
9297            #[inline]
9298            fn from(
9299                this: &ExitEscrowPeriodUpdated,
9300            ) -> alloy_sol_types::private::LogData {
9301                alloy_sol_types::SolEvent::encode_log_data(this)
9302            }
9303        }
9304    };
9305    #[derive(serde::Serialize, serde::Deserialize)]
9306    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9307    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
9308```solidity
9309event Initialized(uint64 version);
9310```*/
9311    #[allow(
9312        non_camel_case_types,
9313        non_snake_case,
9314        clippy::pub_underscore_fields,
9315        clippy::style
9316    )]
9317    #[derive(Clone)]
9318    pub struct Initialized {
9319        #[allow(missing_docs)]
9320        pub version: u64,
9321    }
9322    #[allow(
9323        non_camel_case_types,
9324        non_snake_case,
9325        clippy::pub_underscore_fields,
9326        clippy::style
9327    )]
9328    const _: () = {
9329        use alloy::sol_types as alloy_sol_types;
9330        #[automatically_derived]
9331        impl alloy_sol_types::SolEvent for Initialized {
9332            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9333            type DataToken<'a> = <Self::DataTuple<
9334                'a,
9335            > as alloy_sol_types::SolType>::Token<'a>;
9336            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9337            const SIGNATURE: &'static str = "Initialized(uint64)";
9338            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9339                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
9340                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
9341                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
9342            ]);
9343            const ANONYMOUS: bool = false;
9344            #[allow(unused_variables)]
9345            #[inline]
9346            fn new(
9347                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9348                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9349            ) -> Self {
9350                Self { version: data.0 }
9351            }
9352            #[inline]
9353            fn check_signature(
9354                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9355            ) -> alloy_sol_types::Result<()> {
9356                if topics.0 != Self::SIGNATURE_HASH {
9357                    return Err(
9358                        alloy_sol_types::Error::invalid_event_signature_hash(
9359                            Self::SIGNATURE,
9360                            topics.0,
9361                            Self::SIGNATURE_HASH,
9362                        ),
9363                    );
9364                }
9365                Ok(())
9366            }
9367            #[inline]
9368            fn tokenize_body(&self) -> Self::DataToken<'_> {
9369                (
9370                    <alloy::sol_types::sol_data::Uint<
9371                        64,
9372                    > as alloy_sol_types::SolType>::tokenize(&self.version),
9373                )
9374            }
9375            #[inline]
9376            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9377                (Self::SIGNATURE_HASH.into(),)
9378            }
9379            #[inline]
9380            fn encode_topics_raw(
9381                &self,
9382                out: &mut [alloy_sol_types::abi::token::WordToken],
9383            ) -> alloy_sol_types::Result<()> {
9384                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9385                    return Err(alloy_sol_types::Error::Overrun);
9386                }
9387                out[0usize] = alloy_sol_types::abi::token::WordToken(
9388                    Self::SIGNATURE_HASH,
9389                );
9390                Ok(())
9391            }
9392        }
9393        #[automatically_derived]
9394        impl alloy_sol_types::private::IntoLogData for Initialized {
9395            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9396                From::from(self)
9397            }
9398            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9399                From::from(&self)
9400            }
9401        }
9402        #[automatically_derived]
9403        impl From<&Initialized> for alloy_sol_types::private::LogData {
9404            #[inline]
9405            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
9406                alloy_sol_types::SolEvent::encode_log_data(this)
9407            }
9408        }
9409    };
9410    #[derive(serde::Serialize, serde::Deserialize)]
9411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9412    /**Event with signature `MaxCommissionIncreaseUpdated(uint16)` and selector `0xbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd`.
9413```solidity
9414event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
9415```*/
9416    #[allow(
9417        non_camel_case_types,
9418        non_snake_case,
9419        clippy::pub_underscore_fields,
9420        clippy::style
9421    )]
9422    #[derive(Clone)]
9423    pub struct MaxCommissionIncreaseUpdated {
9424        #[allow(missing_docs)]
9425        pub newMaxIncrease: u16,
9426    }
9427    #[allow(
9428        non_camel_case_types,
9429        non_snake_case,
9430        clippy::pub_underscore_fields,
9431        clippy::style
9432    )]
9433    const _: () = {
9434        use alloy::sol_types as alloy_sol_types;
9435        #[automatically_derived]
9436        impl alloy_sol_types::SolEvent for MaxCommissionIncreaseUpdated {
9437            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
9438            type DataToken<'a> = <Self::DataTuple<
9439                'a,
9440            > as alloy_sol_types::SolType>::Token<'a>;
9441            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9442            const SIGNATURE: &'static str = "MaxCommissionIncreaseUpdated(uint16)";
9443            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9444                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
9445                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
9446                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
9447            ]);
9448            const ANONYMOUS: bool = false;
9449            #[allow(unused_variables)]
9450            #[inline]
9451            fn new(
9452                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9453                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9454            ) -> Self {
9455                Self { newMaxIncrease: data.0 }
9456            }
9457            #[inline]
9458            fn check_signature(
9459                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9460            ) -> alloy_sol_types::Result<()> {
9461                if topics.0 != Self::SIGNATURE_HASH {
9462                    return Err(
9463                        alloy_sol_types::Error::invalid_event_signature_hash(
9464                            Self::SIGNATURE,
9465                            topics.0,
9466                            Self::SIGNATURE_HASH,
9467                        ),
9468                    );
9469                }
9470                Ok(())
9471            }
9472            #[inline]
9473            fn tokenize_body(&self) -> Self::DataToken<'_> {
9474                (
9475                    <alloy::sol_types::sol_data::Uint<
9476                        16,
9477                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
9478                )
9479            }
9480            #[inline]
9481            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9482                (Self::SIGNATURE_HASH.into(),)
9483            }
9484            #[inline]
9485            fn encode_topics_raw(
9486                &self,
9487                out: &mut [alloy_sol_types::abi::token::WordToken],
9488            ) -> alloy_sol_types::Result<()> {
9489                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9490                    return Err(alloy_sol_types::Error::Overrun);
9491                }
9492                out[0usize] = alloy_sol_types::abi::token::WordToken(
9493                    Self::SIGNATURE_HASH,
9494                );
9495                Ok(())
9496            }
9497        }
9498        #[automatically_derived]
9499        impl alloy_sol_types::private::IntoLogData for MaxCommissionIncreaseUpdated {
9500            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9501                From::from(self)
9502            }
9503            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9504                From::from(&self)
9505            }
9506        }
9507        #[automatically_derived]
9508        impl From<&MaxCommissionIncreaseUpdated> for alloy_sol_types::private::LogData {
9509            #[inline]
9510            fn from(
9511                this: &MaxCommissionIncreaseUpdated,
9512            ) -> alloy_sol_types::private::LogData {
9513                alloy_sol_types::SolEvent::encode_log_data(this)
9514            }
9515        }
9516    };
9517    #[derive(serde::Serialize, serde::Deserialize)]
9518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9519    /**Event with signature `MetadataUriUpdated(address,string)` and selector `0x20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34`.
9520```solidity
9521event MetadataUriUpdated(address indexed validator, string metadataUri);
9522```*/
9523    #[allow(
9524        non_camel_case_types,
9525        non_snake_case,
9526        clippy::pub_underscore_fields,
9527        clippy::style
9528    )]
9529    #[derive(Clone)]
9530    pub struct MetadataUriUpdated {
9531        #[allow(missing_docs)]
9532        pub validator: alloy::sol_types::private::Address,
9533        #[allow(missing_docs)]
9534        pub metadataUri: alloy::sol_types::private::String,
9535    }
9536    #[allow(
9537        non_camel_case_types,
9538        non_snake_case,
9539        clippy::pub_underscore_fields,
9540        clippy::style
9541    )]
9542    const _: () = {
9543        use alloy::sol_types as alloy_sol_types;
9544        #[automatically_derived]
9545        impl alloy_sol_types::SolEvent for MetadataUriUpdated {
9546            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
9547            type DataToken<'a> = <Self::DataTuple<
9548                'a,
9549            > as alloy_sol_types::SolType>::Token<'a>;
9550            type TopicList = (
9551                alloy_sol_types::sol_data::FixedBytes<32>,
9552                alloy::sol_types::sol_data::Address,
9553            );
9554            const SIGNATURE: &'static str = "MetadataUriUpdated(address,string)";
9555            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9556                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
9557                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
9558                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
9559            ]);
9560            const ANONYMOUS: bool = false;
9561            #[allow(unused_variables)]
9562            #[inline]
9563            fn new(
9564                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9565                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9566            ) -> Self {
9567                Self {
9568                    validator: topics.1,
9569                    metadataUri: data.0,
9570                }
9571            }
9572            #[inline]
9573            fn check_signature(
9574                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9575            ) -> alloy_sol_types::Result<()> {
9576                if topics.0 != Self::SIGNATURE_HASH {
9577                    return Err(
9578                        alloy_sol_types::Error::invalid_event_signature_hash(
9579                            Self::SIGNATURE,
9580                            topics.0,
9581                            Self::SIGNATURE_HASH,
9582                        ),
9583                    );
9584                }
9585                Ok(())
9586            }
9587            #[inline]
9588            fn tokenize_body(&self) -> Self::DataToken<'_> {
9589                (
9590                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
9591                        &self.metadataUri,
9592                    ),
9593                )
9594            }
9595            #[inline]
9596            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9597                (Self::SIGNATURE_HASH.into(), self.validator.clone())
9598            }
9599            #[inline]
9600            fn encode_topics_raw(
9601                &self,
9602                out: &mut [alloy_sol_types::abi::token::WordToken],
9603            ) -> alloy_sol_types::Result<()> {
9604                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9605                    return Err(alloy_sol_types::Error::Overrun);
9606                }
9607                out[0usize] = alloy_sol_types::abi::token::WordToken(
9608                    Self::SIGNATURE_HASH,
9609                );
9610                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9611                    &self.validator,
9612                );
9613                Ok(())
9614            }
9615        }
9616        #[automatically_derived]
9617        impl alloy_sol_types::private::IntoLogData for MetadataUriUpdated {
9618            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9619                From::from(self)
9620            }
9621            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9622                From::from(&self)
9623            }
9624        }
9625        #[automatically_derived]
9626        impl From<&MetadataUriUpdated> for alloy_sol_types::private::LogData {
9627            #[inline]
9628            fn from(this: &MetadataUriUpdated) -> alloy_sol_types::private::LogData {
9629                alloy_sol_types::SolEvent::encode_log_data(this)
9630            }
9631        }
9632    };
9633    #[derive(serde::Serialize, serde::Deserialize)]
9634    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9635    /**Event with signature `MinCommissionUpdateIntervalUpdated(uint256)` and selector `0x51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef259`.
9636```solidity
9637event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
9638```*/
9639    #[allow(
9640        non_camel_case_types,
9641        non_snake_case,
9642        clippy::pub_underscore_fields,
9643        clippy::style
9644    )]
9645    #[derive(Clone)]
9646    pub struct MinCommissionUpdateIntervalUpdated {
9647        #[allow(missing_docs)]
9648        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
9649    }
9650    #[allow(
9651        non_camel_case_types,
9652        non_snake_case,
9653        clippy::pub_underscore_fields,
9654        clippy::style
9655    )]
9656    const _: () = {
9657        use alloy::sol_types as alloy_sol_types;
9658        #[automatically_derived]
9659        impl alloy_sol_types::SolEvent for MinCommissionUpdateIntervalUpdated {
9660            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9661            type DataToken<'a> = <Self::DataTuple<
9662                'a,
9663            > as alloy_sol_types::SolType>::Token<'a>;
9664            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9665            const SIGNATURE: &'static str = "MinCommissionUpdateIntervalUpdated(uint256)";
9666            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9667                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
9668                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
9669                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
9670            ]);
9671            const ANONYMOUS: bool = false;
9672            #[allow(unused_variables)]
9673            #[inline]
9674            fn new(
9675                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9676                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9677            ) -> Self {
9678                Self { newInterval: data.0 }
9679            }
9680            #[inline]
9681            fn check_signature(
9682                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9683            ) -> alloy_sol_types::Result<()> {
9684                if topics.0 != Self::SIGNATURE_HASH {
9685                    return Err(
9686                        alloy_sol_types::Error::invalid_event_signature_hash(
9687                            Self::SIGNATURE,
9688                            topics.0,
9689                            Self::SIGNATURE_HASH,
9690                        ),
9691                    );
9692                }
9693                Ok(())
9694            }
9695            #[inline]
9696            fn tokenize_body(&self) -> Self::DataToken<'_> {
9697                (
9698                    <alloy::sol_types::sol_data::Uint<
9699                        256,
9700                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
9701                )
9702            }
9703            #[inline]
9704            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9705                (Self::SIGNATURE_HASH.into(),)
9706            }
9707            #[inline]
9708            fn encode_topics_raw(
9709                &self,
9710                out: &mut [alloy_sol_types::abi::token::WordToken],
9711            ) -> alloy_sol_types::Result<()> {
9712                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9713                    return Err(alloy_sol_types::Error::Overrun);
9714                }
9715                out[0usize] = alloy_sol_types::abi::token::WordToken(
9716                    Self::SIGNATURE_HASH,
9717                );
9718                Ok(())
9719            }
9720        }
9721        #[automatically_derived]
9722        impl alloy_sol_types::private::IntoLogData
9723        for MinCommissionUpdateIntervalUpdated {
9724            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9725                From::from(self)
9726            }
9727            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9728                From::from(&self)
9729            }
9730        }
9731        #[automatically_derived]
9732        impl From<&MinCommissionUpdateIntervalUpdated>
9733        for alloy_sol_types::private::LogData {
9734            #[inline]
9735            fn from(
9736                this: &MinCommissionUpdateIntervalUpdated,
9737            ) -> alloy_sol_types::private::LogData {
9738                alloy_sol_types::SolEvent::encode_log_data(this)
9739            }
9740        }
9741    };
9742    #[derive(serde::Serialize, serde::Deserialize)]
9743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9744    /**Event with signature `MinDelegateAmountUpdated(uint256)` and selector `0x02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa5`.
9745```solidity
9746event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
9747```*/
9748    #[allow(
9749        non_camel_case_types,
9750        non_snake_case,
9751        clippy::pub_underscore_fields,
9752        clippy::style
9753    )]
9754    #[derive(Clone)]
9755    pub struct MinDelegateAmountUpdated {
9756        #[allow(missing_docs)]
9757        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
9758    }
9759    #[allow(
9760        non_camel_case_types,
9761        non_snake_case,
9762        clippy::pub_underscore_fields,
9763        clippy::style
9764    )]
9765    const _: () = {
9766        use alloy::sol_types as alloy_sol_types;
9767        #[automatically_derived]
9768        impl alloy_sol_types::SolEvent for MinDelegateAmountUpdated {
9769            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9770            type DataToken<'a> = <Self::DataTuple<
9771                'a,
9772            > as alloy_sol_types::SolType>::Token<'a>;
9773            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9774            const SIGNATURE: &'static str = "MinDelegateAmountUpdated(uint256)";
9775            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9776                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
9777                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
9778                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
9779            ]);
9780            const ANONYMOUS: bool = false;
9781            #[allow(unused_variables)]
9782            #[inline]
9783            fn new(
9784                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9785                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9786            ) -> Self {
9787                Self {
9788                    newMinDelegateAmount: data.0,
9789                }
9790            }
9791            #[inline]
9792            fn check_signature(
9793                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9794            ) -> alloy_sol_types::Result<()> {
9795                if topics.0 != Self::SIGNATURE_HASH {
9796                    return Err(
9797                        alloy_sol_types::Error::invalid_event_signature_hash(
9798                            Self::SIGNATURE,
9799                            topics.0,
9800                            Self::SIGNATURE_HASH,
9801                        ),
9802                    );
9803                }
9804                Ok(())
9805            }
9806            #[inline]
9807            fn tokenize_body(&self) -> Self::DataToken<'_> {
9808                (
9809                    <alloy::sol_types::sol_data::Uint<
9810                        256,
9811                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
9812                )
9813            }
9814            #[inline]
9815            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9816                (Self::SIGNATURE_HASH.into(),)
9817            }
9818            #[inline]
9819            fn encode_topics_raw(
9820                &self,
9821                out: &mut [alloy_sol_types::abi::token::WordToken],
9822            ) -> alloy_sol_types::Result<()> {
9823                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9824                    return Err(alloy_sol_types::Error::Overrun);
9825                }
9826                out[0usize] = alloy_sol_types::abi::token::WordToken(
9827                    Self::SIGNATURE_HASH,
9828                );
9829                Ok(())
9830            }
9831        }
9832        #[automatically_derived]
9833        impl alloy_sol_types::private::IntoLogData for MinDelegateAmountUpdated {
9834            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9835                From::from(self)
9836            }
9837            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9838                From::from(&self)
9839            }
9840        }
9841        #[automatically_derived]
9842        impl From<&MinDelegateAmountUpdated> for alloy_sol_types::private::LogData {
9843            #[inline]
9844            fn from(
9845                this: &MinDelegateAmountUpdated,
9846            ) -> alloy_sol_types::private::LogData {
9847                alloy_sol_types::SolEvent::encode_log_data(this)
9848            }
9849        }
9850    };
9851    #[derive(serde::Serialize, serde::Deserialize)]
9852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9853    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
9854```solidity
9855event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
9856```*/
9857    #[allow(
9858        non_camel_case_types,
9859        non_snake_case,
9860        clippy::pub_underscore_fields,
9861        clippy::style
9862    )]
9863    #[derive(Clone)]
9864    pub struct OwnershipTransferred {
9865        #[allow(missing_docs)]
9866        pub previousOwner: alloy::sol_types::private::Address,
9867        #[allow(missing_docs)]
9868        pub newOwner: alloy::sol_types::private::Address,
9869    }
9870    #[allow(
9871        non_camel_case_types,
9872        non_snake_case,
9873        clippy::pub_underscore_fields,
9874        clippy::style
9875    )]
9876    const _: () = {
9877        use alloy::sol_types as alloy_sol_types;
9878        #[automatically_derived]
9879        impl alloy_sol_types::SolEvent for OwnershipTransferred {
9880            type DataTuple<'a> = ();
9881            type DataToken<'a> = <Self::DataTuple<
9882                'a,
9883            > as alloy_sol_types::SolType>::Token<'a>;
9884            type TopicList = (
9885                alloy_sol_types::sol_data::FixedBytes<32>,
9886                alloy::sol_types::sol_data::Address,
9887                alloy::sol_types::sol_data::Address,
9888            );
9889            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
9890            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9891                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
9892                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
9893                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
9894            ]);
9895            const ANONYMOUS: bool = false;
9896            #[allow(unused_variables)]
9897            #[inline]
9898            fn new(
9899                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9900                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9901            ) -> Self {
9902                Self {
9903                    previousOwner: topics.1,
9904                    newOwner: topics.2,
9905                }
9906            }
9907            #[inline]
9908            fn check_signature(
9909                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9910            ) -> alloy_sol_types::Result<()> {
9911                if topics.0 != Self::SIGNATURE_HASH {
9912                    return Err(
9913                        alloy_sol_types::Error::invalid_event_signature_hash(
9914                            Self::SIGNATURE,
9915                            topics.0,
9916                            Self::SIGNATURE_HASH,
9917                        ),
9918                    );
9919                }
9920                Ok(())
9921            }
9922            #[inline]
9923            fn tokenize_body(&self) -> Self::DataToken<'_> {
9924                ()
9925            }
9926            #[inline]
9927            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9928                (
9929                    Self::SIGNATURE_HASH.into(),
9930                    self.previousOwner.clone(),
9931                    self.newOwner.clone(),
9932                )
9933            }
9934            #[inline]
9935            fn encode_topics_raw(
9936                &self,
9937                out: &mut [alloy_sol_types::abi::token::WordToken],
9938            ) -> alloy_sol_types::Result<()> {
9939                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9940                    return Err(alloy_sol_types::Error::Overrun);
9941                }
9942                out[0usize] = alloy_sol_types::abi::token::WordToken(
9943                    Self::SIGNATURE_HASH,
9944                );
9945                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9946                    &self.previousOwner,
9947                );
9948                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9949                    &self.newOwner,
9950                );
9951                Ok(())
9952            }
9953        }
9954        #[automatically_derived]
9955        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
9956            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9957                From::from(self)
9958            }
9959            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9960                From::from(&self)
9961            }
9962        }
9963        #[automatically_derived]
9964        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
9965            #[inline]
9966            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
9967                alloy_sol_types::SolEvent::encode_log_data(this)
9968            }
9969        }
9970    };
9971    #[derive(serde::Serialize, serde::Deserialize)]
9972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9973    /**Event with signature `P2pAddrUpdated(address,string)` and selector `0x43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb22`.
9974```solidity
9975event P2pAddrUpdated(address indexed validator, string p2pAddr);
9976```*/
9977    #[allow(
9978        non_camel_case_types,
9979        non_snake_case,
9980        clippy::pub_underscore_fields,
9981        clippy::style
9982    )]
9983    #[derive(Clone)]
9984    pub struct P2pAddrUpdated {
9985        #[allow(missing_docs)]
9986        pub validator: alloy::sol_types::private::Address,
9987        #[allow(missing_docs)]
9988        pub p2pAddr: alloy::sol_types::private::String,
9989    }
9990    #[allow(
9991        non_camel_case_types,
9992        non_snake_case,
9993        clippy::pub_underscore_fields,
9994        clippy::style
9995    )]
9996    const _: () = {
9997        use alloy::sol_types as alloy_sol_types;
9998        #[automatically_derived]
9999        impl alloy_sol_types::SolEvent for P2pAddrUpdated {
10000            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
10001            type DataToken<'a> = <Self::DataTuple<
10002                'a,
10003            > as alloy_sol_types::SolType>::Token<'a>;
10004            type TopicList = (
10005                alloy_sol_types::sol_data::FixedBytes<32>,
10006                alloy::sol_types::sol_data::Address,
10007            );
10008            const SIGNATURE: &'static str = "P2pAddrUpdated(address,string)";
10009            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10010                67u8, 6u8, 97u8, 130u8, 175u8, 137u8, 242u8, 48u8, 69u8, 34u8, 7u8, 26u8,
10011                87u8, 192u8, 96u8, 99u8, 225u8, 27u8, 38u8, 89u8, 29u8, 109u8, 156u8,
10012                51u8, 241u8, 135u8, 76u8, 45u8, 10u8, 20u8, 187u8, 34u8,
10013            ]);
10014            const ANONYMOUS: bool = false;
10015            #[allow(unused_variables)]
10016            #[inline]
10017            fn new(
10018                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10019                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10020            ) -> Self {
10021                Self {
10022                    validator: topics.1,
10023                    p2pAddr: data.0,
10024                }
10025            }
10026            #[inline]
10027            fn check_signature(
10028                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10029            ) -> alloy_sol_types::Result<()> {
10030                if topics.0 != Self::SIGNATURE_HASH {
10031                    return Err(
10032                        alloy_sol_types::Error::invalid_event_signature_hash(
10033                            Self::SIGNATURE,
10034                            topics.0,
10035                            Self::SIGNATURE_HASH,
10036                        ),
10037                    );
10038                }
10039                Ok(())
10040            }
10041            #[inline]
10042            fn tokenize_body(&self) -> Self::DataToken<'_> {
10043                (
10044                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
10045                        &self.p2pAddr,
10046                    ),
10047                )
10048            }
10049            #[inline]
10050            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10051                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10052            }
10053            #[inline]
10054            fn encode_topics_raw(
10055                &self,
10056                out: &mut [alloy_sol_types::abi::token::WordToken],
10057            ) -> alloy_sol_types::Result<()> {
10058                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10059                    return Err(alloy_sol_types::Error::Overrun);
10060                }
10061                out[0usize] = alloy_sol_types::abi::token::WordToken(
10062                    Self::SIGNATURE_HASH,
10063                );
10064                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10065                    &self.validator,
10066                );
10067                Ok(())
10068            }
10069        }
10070        #[automatically_derived]
10071        impl alloy_sol_types::private::IntoLogData for P2pAddrUpdated {
10072            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10073                From::from(self)
10074            }
10075            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10076                From::from(&self)
10077            }
10078        }
10079        #[automatically_derived]
10080        impl From<&P2pAddrUpdated> for alloy_sol_types::private::LogData {
10081            #[inline]
10082            fn from(this: &P2pAddrUpdated) -> alloy_sol_types::private::LogData {
10083                alloy_sol_types::SolEvent::encode_log_data(this)
10084            }
10085        }
10086    };
10087    #[derive(serde::Serialize, serde::Deserialize)]
10088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10089    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
10090```solidity
10091event Paused(address account);
10092```*/
10093    #[allow(
10094        non_camel_case_types,
10095        non_snake_case,
10096        clippy::pub_underscore_fields,
10097        clippy::style
10098    )]
10099    #[derive(Clone)]
10100    pub struct Paused {
10101        #[allow(missing_docs)]
10102        pub account: alloy::sol_types::private::Address,
10103    }
10104    #[allow(
10105        non_camel_case_types,
10106        non_snake_case,
10107        clippy::pub_underscore_fields,
10108        clippy::style
10109    )]
10110    const _: () = {
10111        use alloy::sol_types as alloy_sol_types;
10112        #[automatically_derived]
10113        impl alloy_sol_types::SolEvent for Paused {
10114            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
10115            type DataToken<'a> = <Self::DataTuple<
10116                'a,
10117            > as alloy_sol_types::SolType>::Token<'a>;
10118            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
10119            const SIGNATURE: &'static str = "Paused(address)";
10120            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10121                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
10122                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
10123                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
10124            ]);
10125            const ANONYMOUS: bool = false;
10126            #[allow(unused_variables)]
10127            #[inline]
10128            fn new(
10129                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10130                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10131            ) -> Self {
10132                Self { account: data.0 }
10133            }
10134            #[inline]
10135            fn check_signature(
10136                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10137            ) -> alloy_sol_types::Result<()> {
10138                if topics.0 != Self::SIGNATURE_HASH {
10139                    return Err(
10140                        alloy_sol_types::Error::invalid_event_signature_hash(
10141                            Self::SIGNATURE,
10142                            topics.0,
10143                            Self::SIGNATURE_HASH,
10144                        ),
10145                    );
10146                }
10147                Ok(())
10148            }
10149            #[inline]
10150            fn tokenize_body(&self) -> Self::DataToken<'_> {
10151                (
10152                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10153                        &self.account,
10154                    ),
10155                )
10156            }
10157            #[inline]
10158            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10159                (Self::SIGNATURE_HASH.into(),)
10160            }
10161            #[inline]
10162            fn encode_topics_raw(
10163                &self,
10164                out: &mut [alloy_sol_types::abi::token::WordToken],
10165            ) -> alloy_sol_types::Result<()> {
10166                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10167                    return Err(alloy_sol_types::Error::Overrun);
10168                }
10169                out[0usize] = alloy_sol_types::abi::token::WordToken(
10170                    Self::SIGNATURE_HASH,
10171                );
10172                Ok(())
10173            }
10174        }
10175        #[automatically_derived]
10176        impl alloy_sol_types::private::IntoLogData for Paused {
10177            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10178                From::from(self)
10179            }
10180            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10181                From::from(&self)
10182            }
10183        }
10184        #[automatically_derived]
10185        impl From<&Paused> for alloy_sol_types::private::LogData {
10186            #[inline]
10187            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
10188                alloy_sol_types::SolEvent::encode_log_data(this)
10189            }
10190        }
10191    };
10192    #[derive(serde::Serialize, serde::Deserialize)]
10193    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10194    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
10195```solidity
10196event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
10197```*/
10198    #[allow(
10199        non_camel_case_types,
10200        non_snake_case,
10201        clippy::pub_underscore_fields,
10202        clippy::style
10203    )]
10204    #[derive(Clone)]
10205    pub struct RoleAdminChanged {
10206        #[allow(missing_docs)]
10207        pub role: alloy::sol_types::private::FixedBytes<32>,
10208        #[allow(missing_docs)]
10209        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
10210        #[allow(missing_docs)]
10211        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
10212    }
10213    #[allow(
10214        non_camel_case_types,
10215        non_snake_case,
10216        clippy::pub_underscore_fields,
10217        clippy::style
10218    )]
10219    const _: () = {
10220        use alloy::sol_types as alloy_sol_types;
10221        #[automatically_derived]
10222        impl alloy_sol_types::SolEvent for RoleAdminChanged {
10223            type DataTuple<'a> = ();
10224            type DataToken<'a> = <Self::DataTuple<
10225                'a,
10226            > as alloy_sol_types::SolType>::Token<'a>;
10227            type TopicList = (
10228                alloy_sol_types::sol_data::FixedBytes<32>,
10229                alloy::sol_types::sol_data::FixedBytes<32>,
10230                alloy::sol_types::sol_data::FixedBytes<32>,
10231                alloy::sol_types::sol_data::FixedBytes<32>,
10232            );
10233            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
10234            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10235                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
10236                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
10237                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
10238            ]);
10239            const ANONYMOUS: bool = false;
10240            #[allow(unused_variables)]
10241            #[inline]
10242            fn new(
10243                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10244                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10245            ) -> Self {
10246                Self {
10247                    role: topics.1,
10248                    previousAdminRole: topics.2,
10249                    newAdminRole: topics.3,
10250                }
10251            }
10252            #[inline]
10253            fn check_signature(
10254                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10255            ) -> alloy_sol_types::Result<()> {
10256                if topics.0 != Self::SIGNATURE_HASH {
10257                    return Err(
10258                        alloy_sol_types::Error::invalid_event_signature_hash(
10259                            Self::SIGNATURE,
10260                            topics.0,
10261                            Self::SIGNATURE_HASH,
10262                        ),
10263                    );
10264                }
10265                Ok(())
10266            }
10267            #[inline]
10268            fn tokenize_body(&self) -> Self::DataToken<'_> {
10269                ()
10270            }
10271            #[inline]
10272            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10273                (
10274                    Self::SIGNATURE_HASH.into(),
10275                    self.role.clone(),
10276                    self.previousAdminRole.clone(),
10277                    self.newAdminRole.clone(),
10278                )
10279            }
10280            #[inline]
10281            fn encode_topics_raw(
10282                &self,
10283                out: &mut [alloy_sol_types::abi::token::WordToken],
10284            ) -> alloy_sol_types::Result<()> {
10285                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10286                    return Err(alloy_sol_types::Error::Overrun);
10287                }
10288                out[0usize] = alloy_sol_types::abi::token::WordToken(
10289                    Self::SIGNATURE_HASH,
10290                );
10291                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10292                    32,
10293                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10294                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
10295                    32,
10296                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
10297                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
10298                    32,
10299                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
10300                Ok(())
10301            }
10302        }
10303        #[automatically_derived]
10304        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
10305            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10306                From::from(self)
10307            }
10308            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10309                From::from(&self)
10310            }
10311        }
10312        #[automatically_derived]
10313        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
10314            #[inline]
10315            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
10316                alloy_sol_types::SolEvent::encode_log_data(this)
10317            }
10318        }
10319    };
10320    #[derive(serde::Serialize, serde::Deserialize)]
10321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10322    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
10323```solidity
10324event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
10325```*/
10326    #[allow(
10327        non_camel_case_types,
10328        non_snake_case,
10329        clippy::pub_underscore_fields,
10330        clippy::style
10331    )]
10332    #[derive(Clone)]
10333    pub struct RoleGranted {
10334        #[allow(missing_docs)]
10335        pub role: alloy::sol_types::private::FixedBytes<32>,
10336        #[allow(missing_docs)]
10337        pub account: alloy::sol_types::private::Address,
10338        #[allow(missing_docs)]
10339        pub sender: alloy::sol_types::private::Address,
10340    }
10341    #[allow(
10342        non_camel_case_types,
10343        non_snake_case,
10344        clippy::pub_underscore_fields,
10345        clippy::style
10346    )]
10347    const _: () = {
10348        use alloy::sol_types as alloy_sol_types;
10349        #[automatically_derived]
10350        impl alloy_sol_types::SolEvent for RoleGranted {
10351            type DataTuple<'a> = ();
10352            type DataToken<'a> = <Self::DataTuple<
10353                'a,
10354            > as alloy_sol_types::SolType>::Token<'a>;
10355            type TopicList = (
10356                alloy_sol_types::sol_data::FixedBytes<32>,
10357                alloy::sol_types::sol_data::FixedBytes<32>,
10358                alloy::sol_types::sol_data::Address,
10359                alloy::sol_types::sol_data::Address,
10360            );
10361            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
10362            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10363                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
10364                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
10365                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
10366            ]);
10367            const ANONYMOUS: bool = false;
10368            #[allow(unused_variables)]
10369            #[inline]
10370            fn new(
10371                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10372                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10373            ) -> Self {
10374                Self {
10375                    role: topics.1,
10376                    account: topics.2,
10377                    sender: topics.3,
10378                }
10379            }
10380            #[inline]
10381            fn check_signature(
10382                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10383            ) -> alloy_sol_types::Result<()> {
10384                if topics.0 != Self::SIGNATURE_HASH {
10385                    return Err(
10386                        alloy_sol_types::Error::invalid_event_signature_hash(
10387                            Self::SIGNATURE,
10388                            topics.0,
10389                            Self::SIGNATURE_HASH,
10390                        ),
10391                    );
10392                }
10393                Ok(())
10394            }
10395            #[inline]
10396            fn tokenize_body(&self) -> Self::DataToken<'_> {
10397                ()
10398            }
10399            #[inline]
10400            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10401                (
10402                    Self::SIGNATURE_HASH.into(),
10403                    self.role.clone(),
10404                    self.account.clone(),
10405                    self.sender.clone(),
10406                )
10407            }
10408            #[inline]
10409            fn encode_topics_raw(
10410                &self,
10411                out: &mut [alloy_sol_types::abi::token::WordToken],
10412            ) -> alloy_sol_types::Result<()> {
10413                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10414                    return Err(alloy_sol_types::Error::Overrun);
10415                }
10416                out[0usize] = alloy_sol_types::abi::token::WordToken(
10417                    Self::SIGNATURE_HASH,
10418                );
10419                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10420                    32,
10421                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10422                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10423                    &self.account,
10424                );
10425                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10426                    &self.sender,
10427                );
10428                Ok(())
10429            }
10430        }
10431        #[automatically_derived]
10432        impl alloy_sol_types::private::IntoLogData for RoleGranted {
10433            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10434                From::from(self)
10435            }
10436            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10437                From::from(&self)
10438            }
10439        }
10440        #[automatically_derived]
10441        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
10442            #[inline]
10443            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
10444                alloy_sol_types::SolEvent::encode_log_data(this)
10445            }
10446        }
10447    };
10448    #[derive(serde::Serialize, serde::Deserialize)]
10449    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10450    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
10451```solidity
10452event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
10453```*/
10454    #[allow(
10455        non_camel_case_types,
10456        non_snake_case,
10457        clippy::pub_underscore_fields,
10458        clippy::style
10459    )]
10460    #[derive(Clone)]
10461    pub struct RoleRevoked {
10462        #[allow(missing_docs)]
10463        pub role: alloy::sol_types::private::FixedBytes<32>,
10464        #[allow(missing_docs)]
10465        pub account: alloy::sol_types::private::Address,
10466        #[allow(missing_docs)]
10467        pub sender: alloy::sol_types::private::Address,
10468    }
10469    #[allow(
10470        non_camel_case_types,
10471        non_snake_case,
10472        clippy::pub_underscore_fields,
10473        clippy::style
10474    )]
10475    const _: () = {
10476        use alloy::sol_types as alloy_sol_types;
10477        #[automatically_derived]
10478        impl alloy_sol_types::SolEvent for RoleRevoked {
10479            type DataTuple<'a> = ();
10480            type DataToken<'a> = <Self::DataTuple<
10481                'a,
10482            > as alloy_sol_types::SolType>::Token<'a>;
10483            type TopicList = (
10484                alloy_sol_types::sol_data::FixedBytes<32>,
10485                alloy::sol_types::sol_data::FixedBytes<32>,
10486                alloy::sol_types::sol_data::Address,
10487                alloy::sol_types::sol_data::Address,
10488            );
10489            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
10490            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10491                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
10492                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
10493                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
10494            ]);
10495            const ANONYMOUS: bool = false;
10496            #[allow(unused_variables)]
10497            #[inline]
10498            fn new(
10499                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10500                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10501            ) -> Self {
10502                Self {
10503                    role: topics.1,
10504                    account: topics.2,
10505                    sender: topics.3,
10506                }
10507            }
10508            #[inline]
10509            fn check_signature(
10510                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10511            ) -> alloy_sol_types::Result<()> {
10512                if topics.0 != Self::SIGNATURE_HASH {
10513                    return Err(
10514                        alloy_sol_types::Error::invalid_event_signature_hash(
10515                            Self::SIGNATURE,
10516                            topics.0,
10517                            Self::SIGNATURE_HASH,
10518                        ),
10519                    );
10520                }
10521                Ok(())
10522            }
10523            #[inline]
10524            fn tokenize_body(&self) -> Self::DataToken<'_> {
10525                ()
10526            }
10527            #[inline]
10528            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10529                (
10530                    Self::SIGNATURE_HASH.into(),
10531                    self.role.clone(),
10532                    self.account.clone(),
10533                    self.sender.clone(),
10534                )
10535            }
10536            #[inline]
10537            fn encode_topics_raw(
10538                &self,
10539                out: &mut [alloy_sol_types::abi::token::WordToken],
10540            ) -> alloy_sol_types::Result<()> {
10541                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10542                    return Err(alloy_sol_types::Error::Overrun);
10543                }
10544                out[0usize] = alloy_sol_types::abi::token::WordToken(
10545                    Self::SIGNATURE_HASH,
10546                );
10547                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10548                    32,
10549                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10550                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10551                    &self.account,
10552                );
10553                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10554                    &self.sender,
10555                );
10556                Ok(())
10557            }
10558        }
10559        #[automatically_derived]
10560        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
10561            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10562                From::from(self)
10563            }
10564            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10565                From::from(&self)
10566            }
10567        }
10568        #[automatically_derived]
10569        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
10570            #[inline]
10571            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
10572                alloy_sol_types::SolEvent::encode_log_data(this)
10573            }
10574        }
10575    };
10576    #[derive(serde::Serialize, serde::Deserialize)]
10577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10578    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
10579```solidity
10580event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
10581```*/
10582    #[allow(
10583        non_camel_case_types,
10584        non_snake_case,
10585        clippy::pub_underscore_fields,
10586        clippy::style
10587    )]
10588    #[derive(Clone)]
10589    pub struct Undelegated {
10590        #[allow(missing_docs)]
10591        pub delegator: alloy::sol_types::private::Address,
10592        #[allow(missing_docs)]
10593        pub validator: alloy::sol_types::private::Address,
10594        #[allow(missing_docs)]
10595        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10596    }
10597    #[allow(
10598        non_camel_case_types,
10599        non_snake_case,
10600        clippy::pub_underscore_fields,
10601        clippy::style
10602    )]
10603    const _: () = {
10604        use alloy::sol_types as alloy_sol_types;
10605        #[automatically_derived]
10606        impl alloy_sol_types::SolEvent for Undelegated {
10607            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10608            type DataToken<'a> = <Self::DataTuple<
10609                'a,
10610            > as alloy_sol_types::SolType>::Token<'a>;
10611            type TopicList = (
10612                alloy_sol_types::sol_data::FixedBytes<32>,
10613                alloy::sol_types::sol_data::Address,
10614                alloy::sol_types::sol_data::Address,
10615            );
10616            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
10617            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10618                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
10619                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
10620                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
10621            ]);
10622            const ANONYMOUS: bool = false;
10623            #[allow(unused_variables)]
10624            #[inline]
10625            fn new(
10626                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10627                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10628            ) -> Self {
10629                Self {
10630                    delegator: topics.1,
10631                    validator: topics.2,
10632                    amount: data.0,
10633                }
10634            }
10635            #[inline]
10636            fn check_signature(
10637                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10638            ) -> alloy_sol_types::Result<()> {
10639                if topics.0 != Self::SIGNATURE_HASH {
10640                    return Err(
10641                        alloy_sol_types::Error::invalid_event_signature_hash(
10642                            Self::SIGNATURE,
10643                            topics.0,
10644                            Self::SIGNATURE_HASH,
10645                        ),
10646                    );
10647                }
10648                Ok(())
10649            }
10650            #[inline]
10651            fn tokenize_body(&self) -> Self::DataToken<'_> {
10652                (
10653                    <alloy::sol_types::sol_data::Uint<
10654                        256,
10655                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10656                )
10657            }
10658            #[inline]
10659            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10660                (
10661                    Self::SIGNATURE_HASH.into(),
10662                    self.delegator.clone(),
10663                    self.validator.clone(),
10664                )
10665            }
10666            #[inline]
10667            fn encode_topics_raw(
10668                &self,
10669                out: &mut [alloy_sol_types::abi::token::WordToken],
10670            ) -> alloy_sol_types::Result<()> {
10671                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10672                    return Err(alloy_sol_types::Error::Overrun);
10673                }
10674                out[0usize] = alloy_sol_types::abi::token::WordToken(
10675                    Self::SIGNATURE_HASH,
10676                );
10677                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10678                    &self.delegator,
10679                );
10680                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10681                    &self.validator,
10682                );
10683                Ok(())
10684            }
10685        }
10686        #[automatically_derived]
10687        impl alloy_sol_types::private::IntoLogData for Undelegated {
10688            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10689                From::from(self)
10690            }
10691            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10692                From::from(&self)
10693            }
10694        }
10695        #[automatically_derived]
10696        impl From<&Undelegated> for alloy_sol_types::private::LogData {
10697            #[inline]
10698            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
10699                alloy_sol_types::SolEvent::encode_log_data(this)
10700            }
10701        }
10702    };
10703    #[derive(serde::Serialize, serde::Deserialize)]
10704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10705    /**Event with signature `UndelegatedV2(address,address,uint64,uint256,uint256)` and selector `0x708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da`.
10706```solidity
10707event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
10708```*/
10709    #[allow(
10710        non_camel_case_types,
10711        non_snake_case,
10712        clippy::pub_underscore_fields,
10713        clippy::style
10714    )]
10715    #[derive(Clone)]
10716    pub struct UndelegatedV2 {
10717        #[allow(missing_docs)]
10718        pub delegator: alloy::sol_types::private::Address,
10719        #[allow(missing_docs)]
10720        pub validator: alloy::sol_types::private::Address,
10721        #[allow(missing_docs)]
10722        pub undelegationId: u64,
10723        #[allow(missing_docs)]
10724        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10725        #[allow(missing_docs)]
10726        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
10727    }
10728    #[allow(
10729        non_camel_case_types,
10730        non_snake_case,
10731        clippy::pub_underscore_fields,
10732        clippy::style
10733    )]
10734    const _: () = {
10735        use alloy::sol_types as alloy_sol_types;
10736        #[automatically_derived]
10737        impl alloy_sol_types::SolEvent for UndelegatedV2 {
10738            type DataTuple<'a> = (
10739                alloy::sol_types::sol_data::Uint<256>,
10740                alloy::sol_types::sol_data::Uint<256>,
10741            );
10742            type DataToken<'a> = <Self::DataTuple<
10743                'a,
10744            > as alloy_sol_types::SolType>::Token<'a>;
10745            type TopicList = (
10746                alloy_sol_types::sol_data::FixedBytes<32>,
10747                alloy::sol_types::sol_data::Address,
10748                alloy::sol_types::sol_data::Address,
10749                alloy::sol_types::sol_data::Uint<64>,
10750            );
10751            const SIGNATURE: &'static str = "UndelegatedV2(address,address,uint64,uint256,uint256)";
10752            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10753                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
10754                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
10755                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
10756            ]);
10757            const ANONYMOUS: bool = false;
10758            #[allow(unused_variables)]
10759            #[inline]
10760            fn new(
10761                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10762                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10763            ) -> Self {
10764                Self {
10765                    delegator: topics.1,
10766                    validator: topics.2,
10767                    undelegationId: topics.3,
10768                    amount: data.0,
10769                    unlocksAt: data.1,
10770                }
10771            }
10772            #[inline]
10773            fn check_signature(
10774                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10775            ) -> alloy_sol_types::Result<()> {
10776                if topics.0 != Self::SIGNATURE_HASH {
10777                    return Err(
10778                        alloy_sol_types::Error::invalid_event_signature_hash(
10779                            Self::SIGNATURE,
10780                            topics.0,
10781                            Self::SIGNATURE_HASH,
10782                        ),
10783                    );
10784                }
10785                Ok(())
10786            }
10787            #[inline]
10788            fn tokenize_body(&self) -> Self::DataToken<'_> {
10789                (
10790                    <alloy::sol_types::sol_data::Uint<
10791                        256,
10792                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10793                    <alloy::sol_types::sol_data::Uint<
10794                        256,
10795                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
10796                )
10797            }
10798            #[inline]
10799            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10800                (
10801                    Self::SIGNATURE_HASH.into(),
10802                    self.delegator.clone(),
10803                    self.validator.clone(),
10804                    self.undelegationId.clone(),
10805                )
10806            }
10807            #[inline]
10808            fn encode_topics_raw(
10809                &self,
10810                out: &mut [alloy_sol_types::abi::token::WordToken],
10811            ) -> alloy_sol_types::Result<()> {
10812                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10813                    return Err(alloy_sol_types::Error::Overrun);
10814                }
10815                out[0usize] = alloy_sol_types::abi::token::WordToken(
10816                    Self::SIGNATURE_HASH,
10817                );
10818                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10819                    &self.delegator,
10820                );
10821                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10822                    &self.validator,
10823                );
10824                out[3usize] = <alloy::sol_types::sol_data::Uint<
10825                    64,
10826                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
10827                Ok(())
10828            }
10829        }
10830        #[automatically_derived]
10831        impl alloy_sol_types::private::IntoLogData for UndelegatedV2 {
10832            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10833                From::from(self)
10834            }
10835            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10836                From::from(&self)
10837            }
10838        }
10839        #[automatically_derived]
10840        impl From<&UndelegatedV2> for alloy_sol_types::private::LogData {
10841            #[inline]
10842            fn from(this: &UndelegatedV2) -> alloy_sol_types::private::LogData {
10843                alloy_sol_types::SolEvent::encode_log_data(this)
10844            }
10845        }
10846    };
10847    #[derive(serde::Serialize, serde::Deserialize)]
10848    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10849    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
10850```solidity
10851event Unpaused(address account);
10852```*/
10853    #[allow(
10854        non_camel_case_types,
10855        non_snake_case,
10856        clippy::pub_underscore_fields,
10857        clippy::style
10858    )]
10859    #[derive(Clone)]
10860    pub struct Unpaused {
10861        #[allow(missing_docs)]
10862        pub account: alloy::sol_types::private::Address,
10863    }
10864    #[allow(
10865        non_camel_case_types,
10866        non_snake_case,
10867        clippy::pub_underscore_fields,
10868        clippy::style
10869    )]
10870    const _: () = {
10871        use alloy::sol_types as alloy_sol_types;
10872        #[automatically_derived]
10873        impl alloy_sol_types::SolEvent for Unpaused {
10874            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
10875            type DataToken<'a> = <Self::DataTuple<
10876                'a,
10877            > as alloy_sol_types::SolType>::Token<'a>;
10878            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
10879            const SIGNATURE: &'static str = "Unpaused(address)";
10880            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10881                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
10882                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
10883                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
10884            ]);
10885            const ANONYMOUS: bool = false;
10886            #[allow(unused_variables)]
10887            #[inline]
10888            fn new(
10889                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10890                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10891            ) -> Self {
10892                Self { account: data.0 }
10893            }
10894            #[inline]
10895            fn check_signature(
10896                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10897            ) -> alloy_sol_types::Result<()> {
10898                if topics.0 != Self::SIGNATURE_HASH {
10899                    return Err(
10900                        alloy_sol_types::Error::invalid_event_signature_hash(
10901                            Self::SIGNATURE,
10902                            topics.0,
10903                            Self::SIGNATURE_HASH,
10904                        ),
10905                    );
10906                }
10907                Ok(())
10908            }
10909            #[inline]
10910            fn tokenize_body(&self) -> Self::DataToken<'_> {
10911                (
10912                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10913                        &self.account,
10914                    ),
10915                )
10916            }
10917            #[inline]
10918            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10919                (Self::SIGNATURE_HASH.into(),)
10920            }
10921            #[inline]
10922            fn encode_topics_raw(
10923                &self,
10924                out: &mut [alloy_sol_types::abi::token::WordToken],
10925            ) -> alloy_sol_types::Result<()> {
10926                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10927                    return Err(alloy_sol_types::Error::Overrun);
10928                }
10929                out[0usize] = alloy_sol_types::abi::token::WordToken(
10930                    Self::SIGNATURE_HASH,
10931                );
10932                Ok(())
10933            }
10934        }
10935        #[automatically_derived]
10936        impl alloy_sol_types::private::IntoLogData for Unpaused {
10937            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10938                From::from(self)
10939            }
10940            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10941                From::from(&self)
10942            }
10943        }
10944        #[automatically_derived]
10945        impl From<&Unpaused> for alloy_sol_types::private::LogData {
10946            #[inline]
10947            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
10948                alloy_sol_types::SolEvent::encode_log_data(this)
10949            }
10950        }
10951    };
10952    #[derive(serde::Serialize, serde::Deserialize)]
10953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10954    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
10955```solidity
10956event Upgraded(address indexed implementation);
10957```*/
10958    #[allow(
10959        non_camel_case_types,
10960        non_snake_case,
10961        clippy::pub_underscore_fields,
10962        clippy::style
10963    )]
10964    #[derive(Clone)]
10965    pub struct Upgraded {
10966        #[allow(missing_docs)]
10967        pub implementation: alloy::sol_types::private::Address,
10968    }
10969    #[allow(
10970        non_camel_case_types,
10971        non_snake_case,
10972        clippy::pub_underscore_fields,
10973        clippy::style
10974    )]
10975    const _: () = {
10976        use alloy::sol_types as alloy_sol_types;
10977        #[automatically_derived]
10978        impl alloy_sol_types::SolEvent for Upgraded {
10979            type DataTuple<'a> = ();
10980            type DataToken<'a> = <Self::DataTuple<
10981                'a,
10982            > as alloy_sol_types::SolType>::Token<'a>;
10983            type TopicList = (
10984                alloy_sol_types::sol_data::FixedBytes<32>,
10985                alloy::sol_types::sol_data::Address,
10986            );
10987            const SIGNATURE: &'static str = "Upgraded(address)";
10988            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10989                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
10990                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
10991                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10992            ]);
10993            const ANONYMOUS: bool = false;
10994            #[allow(unused_variables)]
10995            #[inline]
10996            fn new(
10997                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10998                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10999            ) -> Self {
11000                Self { implementation: topics.1 }
11001            }
11002            #[inline]
11003            fn check_signature(
11004                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11005            ) -> alloy_sol_types::Result<()> {
11006                if topics.0 != Self::SIGNATURE_HASH {
11007                    return Err(
11008                        alloy_sol_types::Error::invalid_event_signature_hash(
11009                            Self::SIGNATURE,
11010                            topics.0,
11011                            Self::SIGNATURE_HASH,
11012                        ),
11013                    );
11014                }
11015                Ok(())
11016            }
11017            #[inline]
11018            fn tokenize_body(&self) -> Self::DataToken<'_> {
11019                ()
11020            }
11021            #[inline]
11022            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11023                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
11024            }
11025            #[inline]
11026            fn encode_topics_raw(
11027                &self,
11028                out: &mut [alloy_sol_types::abi::token::WordToken],
11029            ) -> alloy_sol_types::Result<()> {
11030                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11031                    return Err(alloy_sol_types::Error::Overrun);
11032                }
11033                out[0usize] = alloy_sol_types::abi::token::WordToken(
11034                    Self::SIGNATURE_HASH,
11035                );
11036                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11037                    &self.implementation,
11038                );
11039                Ok(())
11040            }
11041        }
11042        #[automatically_derived]
11043        impl alloy_sol_types::private::IntoLogData for Upgraded {
11044            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11045                From::from(self)
11046            }
11047            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11048                From::from(&self)
11049            }
11050        }
11051        #[automatically_derived]
11052        impl From<&Upgraded> for alloy_sol_types::private::LogData {
11053            #[inline]
11054            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
11055                alloy_sol_types::SolEvent::encode_log_data(this)
11056            }
11057        }
11058    };
11059    #[derive(serde::Serialize, serde::Deserialize)]
11060    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11061    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
11062```solidity
11063event ValidatorExit(address indexed validator);
11064```*/
11065    #[allow(
11066        non_camel_case_types,
11067        non_snake_case,
11068        clippy::pub_underscore_fields,
11069        clippy::style
11070    )]
11071    #[derive(Clone)]
11072    pub struct ValidatorExit {
11073        #[allow(missing_docs)]
11074        pub validator: alloy::sol_types::private::Address,
11075    }
11076    #[allow(
11077        non_camel_case_types,
11078        non_snake_case,
11079        clippy::pub_underscore_fields,
11080        clippy::style
11081    )]
11082    const _: () = {
11083        use alloy::sol_types as alloy_sol_types;
11084        #[automatically_derived]
11085        impl alloy_sol_types::SolEvent for ValidatorExit {
11086            type DataTuple<'a> = ();
11087            type DataToken<'a> = <Self::DataTuple<
11088                'a,
11089            > as alloy_sol_types::SolType>::Token<'a>;
11090            type TopicList = (
11091                alloy_sol_types::sol_data::FixedBytes<32>,
11092                alloy::sol_types::sol_data::Address,
11093            );
11094            const SIGNATURE: &'static str = "ValidatorExit(address)";
11095            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11096                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
11097                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
11098                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
11099            ]);
11100            const ANONYMOUS: bool = false;
11101            #[allow(unused_variables)]
11102            #[inline]
11103            fn new(
11104                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11105                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11106            ) -> Self {
11107                Self { validator: topics.1 }
11108            }
11109            #[inline]
11110            fn check_signature(
11111                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11112            ) -> alloy_sol_types::Result<()> {
11113                if topics.0 != Self::SIGNATURE_HASH {
11114                    return Err(
11115                        alloy_sol_types::Error::invalid_event_signature_hash(
11116                            Self::SIGNATURE,
11117                            topics.0,
11118                            Self::SIGNATURE_HASH,
11119                        ),
11120                    );
11121                }
11122                Ok(())
11123            }
11124            #[inline]
11125            fn tokenize_body(&self) -> Self::DataToken<'_> {
11126                ()
11127            }
11128            #[inline]
11129            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11130                (Self::SIGNATURE_HASH.into(), self.validator.clone())
11131            }
11132            #[inline]
11133            fn encode_topics_raw(
11134                &self,
11135                out: &mut [alloy_sol_types::abi::token::WordToken],
11136            ) -> alloy_sol_types::Result<()> {
11137                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11138                    return Err(alloy_sol_types::Error::Overrun);
11139                }
11140                out[0usize] = alloy_sol_types::abi::token::WordToken(
11141                    Self::SIGNATURE_HASH,
11142                );
11143                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11144                    &self.validator,
11145                );
11146                Ok(())
11147            }
11148        }
11149        #[automatically_derived]
11150        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
11151            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11152                From::from(self)
11153            }
11154            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11155                From::from(&self)
11156            }
11157        }
11158        #[automatically_derived]
11159        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
11160            #[inline]
11161            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
11162                alloy_sol_types::SolEvent::encode_log_data(this)
11163            }
11164        }
11165    };
11166    #[derive(serde::Serialize, serde::Deserialize)]
11167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11168    /**Event with signature `ValidatorExitClaimed(address,address,uint256)` and selector `0x8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad844`.
11169```solidity
11170event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
11171```*/
11172    #[allow(
11173        non_camel_case_types,
11174        non_snake_case,
11175        clippy::pub_underscore_fields,
11176        clippy::style
11177    )]
11178    #[derive(Clone)]
11179    pub struct ValidatorExitClaimed {
11180        #[allow(missing_docs)]
11181        pub delegator: alloy::sol_types::private::Address,
11182        #[allow(missing_docs)]
11183        pub validator: alloy::sol_types::private::Address,
11184        #[allow(missing_docs)]
11185        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11186    }
11187    #[allow(
11188        non_camel_case_types,
11189        non_snake_case,
11190        clippy::pub_underscore_fields,
11191        clippy::style
11192    )]
11193    const _: () = {
11194        use alloy::sol_types as alloy_sol_types;
11195        #[automatically_derived]
11196        impl alloy_sol_types::SolEvent for ValidatorExitClaimed {
11197            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11198            type DataToken<'a> = <Self::DataTuple<
11199                'a,
11200            > as alloy_sol_types::SolType>::Token<'a>;
11201            type TopicList = (
11202                alloy_sol_types::sol_data::FixedBytes<32>,
11203                alloy::sol_types::sol_data::Address,
11204                alloy::sol_types::sol_data::Address,
11205            );
11206            const SIGNATURE: &'static str = "ValidatorExitClaimed(address,address,uint256)";
11207            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11208                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
11209                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
11210                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
11211            ]);
11212            const ANONYMOUS: bool = false;
11213            #[allow(unused_variables)]
11214            #[inline]
11215            fn new(
11216                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11217                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11218            ) -> Self {
11219                Self {
11220                    delegator: topics.1,
11221                    validator: topics.2,
11222                    amount: data.0,
11223                }
11224            }
11225            #[inline]
11226            fn check_signature(
11227                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11228            ) -> alloy_sol_types::Result<()> {
11229                if topics.0 != Self::SIGNATURE_HASH {
11230                    return Err(
11231                        alloy_sol_types::Error::invalid_event_signature_hash(
11232                            Self::SIGNATURE,
11233                            topics.0,
11234                            Self::SIGNATURE_HASH,
11235                        ),
11236                    );
11237                }
11238                Ok(())
11239            }
11240            #[inline]
11241            fn tokenize_body(&self) -> Self::DataToken<'_> {
11242                (
11243                    <alloy::sol_types::sol_data::Uint<
11244                        256,
11245                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11246                )
11247            }
11248            #[inline]
11249            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11250                (
11251                    Self::SIGNATURE_HASH.into(),
11252                    self.delegator.clone(),
11253                    self.validator.clone(),
11254                )
11255            }
11256            #[inline]
11257            fn encode_topics_raw(
11258                &self,
11259                out: &mut [alloy_sol_types::abi::token::WordToken],
11260            ) -> alloy_sol_types::Result<()> {
11261                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11262                    return Err(alloy_sol_types::Error::Overrun);
11263                }
11264                out[0usize] = alloy_sol_types::abi::token::WordToken(
11265                    Self::SIGNATURE_HASH,
11266                );
11267                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11268                    &self.delegator,
11269                );
11270                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11271                    &self.validator,
11272                );
11273                Ok(())
11274            }
11275        }
11276        #[automatically_derived]
11277        impl alloy_sol_types::private::IntoLogData for ValidatorExitClaimed {
11278            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11279                From::from(self)
11280            }
11281            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11282                From::from(&self)
11283            }
11284        }
11285        #[automatically_derived]
11286        impl From<&ValidatorExitClaimed> for alloy_sol_types::private::LogData {
11287            #[inline]
11288            fn from(this: &ValidatorExitClaimed) -> alloy_sol_types::private::LogData {
11289                alloy_sol_types::SolEvent::encode_log_data(this)
11290            }
11291        }
11292    };
11293    #[derive(serde::Serialize, serde::Deserialize)]
11294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11295    /**Event with signature `ValidatorExitV2(address,uint256)` and selector `0x4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab`.
11296```solidity
11297event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
11298```*/
11299    #[allow(
11300        non_camel_case_types,
11301        non_snake_case,
11302        clippy::pub_underscore_fields,
11303        clippy::style
11304    )]
11305    #[derive(Clone)]
11306    pub struct ValidatorExitV2 {
11307        #[allow(missing_docs)]
11308        pub validator: alloy::sol_types::private::Address,
11309        #[allow(missing_docs)]
11310        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
11311    }
11312    #[allow(
11313        non_camel_case_types,
11314        non_snake_case,
11315        clippy::pub_underscore_fields,
11316        clippy::style
11317    )]
11318    const _: () = {
11319        use alloy::sol_types as alloy_sol_types;
11320        #[automatically_derived]
11321        impl alloy_sol_types::SolEvent for ValidatorExitV2 {
11322            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11323            type DataToken<'a> = <Self::DataTuple<
11324                'a,
11325            > as alloy_sol_types::SolType>::Token<'a>;
11326            type TopicList = (
11327                alloy_sol_types::sol_data::FixedBytes<32>,
11328                alloy::sol_types::sol_data::Address,
11329            );
11330            const SIGNATURE: &'static str = "ValidatorExitV2(address,uint256)";
11331            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11332                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
11333                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
11334                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
11335            ]);
11336            const ANONYMOUS: bool = false;
11337            #[allow(unused_variables)]
11338            #[inline]
11339            fn new(
11340                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11341                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11342            ) -> Self {
11343                Self {
11344                    validator: topics.1,
11345                    unlocksAt: data.0,
11346                }
11347            }
11348            #[inline]
11349            fn check_signature(
11350                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11351            ) -> alloy_sol_types::Result<()> {
11352                if topics.0 != Self::SIGNATURE_HASH {
11353                    return Err(
11354                        alloy_sol_types::Error::invalid_event_signature_hash(
11355                            Self::SIGNATURE,
11356                            topics.0,
11357                            Self::SIGNATURE_HASH,
11358                        ),
11359                    );
11360                }
11361                Ok(())
11362            }
11363            #[inline]
11364            fn tokenize_body(&self) -> Self::DataToken<'_> {
11365                (
11366                    <alloy::sol_types::sol_data::Uint<
11367                        256,
11368                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
11369                )
11370            }
11371            #[inline]
11372            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11373                (Self::SIGNATURE_HASH.into(), self.validator.clone())
11374            }
11375            #[inline]
11376            fn encode_topics_raw(
11377                &self,
11378                out: &mut [alloy_sol_types::abi::token::WordToken],
11379            ) -> alloy_sol_types::Result<()> {
11380                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11381                    return Err(alloy_sol_types::Error::Overrun);
11382                }
11383                out[0usize] = alloy_sol_types::abi::token::WordToken(
11384                    Self::SIGNATURE_HASH,
11385                );
11386                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11387                    &self.validator,
11388                );
11389                Ok(())
11390            }
11391        }
11392        #[automatically_derived]
11393        impl alloy_sol_types::private::IntoLogData for ValidatorExitV2 {
11394            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11395                From::from(self)
11396            }
11397            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11398                From::from(&self)
11399            }
11400        }
11401        #[automatically_derived]
11402        impl From<&ValidatorExitV2> for alloy_sol_types::private::LogData {
11403            #[inline]
11404            fn from(this: &ValidatorExitV2) -> alloy_sol_types::private::LogData {
11405                alloy_sol_types::SolEvent::encode_log_data(this)
11406            }
11407        }
11408    };
11409    #[derive(serde::Serialize, serde::Deserialize)]
11410    #[derive()]
11411    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
11412```solidity
11413event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
11414```*/
11415    #[allow(
11416        non_camel_case_types,
11417        non_snake_case,
11418        clippy::pub_underscore_fields,
11419        clippy::style
11420    )]
11421    #[derive(Clone)]
11422    pub struct ValidatorRegistered {
11423        #[allow(missing_docs)]
11424        pub account: alloy::sol_types::private::Address,
11425        #[allow(missing_docs)]
11426        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11427        #[allow(missing_docs)]
11428        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11429        #[allow(missing_docs)]
11430        pub commission: u16,
11431    }
11432    #[allow(
11433        non_camel_case_types,
11434        non_snake_case,
11435        clippy::pub_underscore_fields,
11436        clippy::style
11437    )]
11438    const _: () = {
11439        use alloy::sol_types as alloy_sol_types;
11440        #[automatically_derived]
11441        impl alloy_sol_types::SolEvent for ValidatorRegistered {
11442            type DataTuple<'a> = (
11443                BN254::G2Point,
11444                EdOnBN254::EdOnBN254Point,
11445                alloy::sol_types::sol_data::Uint<16>,
11446            );
11447            type DataToken<'a> = <Self::DataTuple<
11448                'a,
11449            > as alloy_sol_types::SolType>::Token<'a>;
11450            type TopicList = (
11451                alloy_sol_types::sol_data::FixedBytes<32>,
11452                alloy::sol_types::sol_data::Address,
11453            );
11454            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
11455            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11456                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
11457                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
11458                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
11459            ]);
11460            const ANONYMOUS: bool = false;
11461            #[allow(unused_variables)]
11462            #[inline]
11463            fn new(
11464                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11465                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11466            ) -> Self {
11467                Self {
11468                    account: topics.1,
11469                    blsVk: data.0,
11470                    schnorrVk: data.1,
11471                    commission: data.2,
11472                }
11473            }
11474            #[inline]
11475            fn check_signature(
11476                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11477            ) -> alloy_sol_types::Result<()> {
11478                if topics.0 != Self::SIGNATURE_HASH {
11479                    return Err(
11480                        alloy_sol_types::Error::invalid_event_signature_hash(
11481                            Self::SIGNATURE,
11482                            topics.0,
11483                            Self::SIGNATURE_HASH,
11484                        ),
11485                    );
11486                }
11487                Ok(())
11488            }
11489            #[inline]
11490            fn tokenize_body(&self) -> Self::DataToken<'_> {
11491                (
11492                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
11493                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11494                        &self.schnorrVk,
11495                    ),
11496                    <alloy::sol_types::sol_data::Uint<
11497                        16,
11498                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11499                )
11500            }
11501            #[inline]
11502            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11503                (Self::SIGNATURE_HASH.into(), self.account.clone())
11504            }
11505            #[inline]
11506            fn encode_topics_raw(
11507                &self,
11508                out: &mut [alloy_sol_types::abi::token::WordToken],
11509            ) -> alloy_sol_types::Result<()> {
11510                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11511                    return Err(alloy_sol_types::Error::Overrun);
11512                }
11513                out[0usize] = alloy_sol_types::abi::token::WordToken(
11514                    Self::SIGNATURE_HASH,
11515                );
11516                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11517                    &self.account,
11518                );
11519                Ok(())
11520            }
11521        }
11522        #[automatically_derived]
11523        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
11524            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11525                From::from(self)
11526            }
11527            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11528                From::from(&self)
11529            }
11530        }
11531        #[automatically_derived]
11532        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
11533            #[inline]
11534            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
11535                alloy_sol_types::SolEvent::encode_log_data(this)
11536            }
11537        }
11538    };
11539    #[derive(serde::Serialize, serde::Deserialize)]
11540    #[derive()]
11541    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)` and selector `0x26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b268489`.
11542```solidity
11543event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
11544```*/
11545    #[allow(
11546        non_camel_case_types,
11547        non_snake_case,
11548        clippy::pub_underscore_fields,
11549        clippy::style
11550    )]
11551    #[derive(Clone)]
11552    pub struct ValidatorRegisteredV2 {
11553        #[allow(missing_docs)]
11554        pub account: alloy::sol_types::private::Address,
11555        #[allow(missing_docs)]
11556        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11557        #[allow(missing_docs)]
11558        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11559        #[allow(missing_docs)]
11560        pub commission: u16,
11561        #[allow(missing_docs)]
11562        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11563        #[allow(missing_docs)]
11564        pub schnorrSig: alloy::sol_types::private::Bytes,
11565        #[allow(missing_docs)]
11566        pub metadataUri: alloy::sol_types::private::String,
11567    }
11568    #[allow(
11569        non_camel_case_types,
11570        non_snake_case,
11571        clippy::pub_underscore_fields,
11572        clippy::style
11573    )]
11574    const _: () = {
11575        use alloy::sol_types as alloy_sol_types;
11576        #[automatically_derived]
11577        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
11578            type DataTuple<'a> = (
11579                BN254::G2Point,
11580                EdOnBN254::EdOnBN254Point,
11581                alloy::sol_types::sol_data::Uint<16>,
11582                BN254::G1Point,
11583                alloy::sol_types::sol_data::Bytes,
11584                alloy::sol_types::sol_data::String,
11585            );
11586            type DataToken<'a> = <Self::DataTuple<
11587                'a,
11588            > as alloy_sol_types::SolType>::Token<'a>;
11589            type TopicList = (
11590                alloy_sol_types::sol_data::FixedBytes<32>,
11591                alloy::sol_types::sol_data::Address,
11592            );
11593            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)";
11594            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11595                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
11596                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
11597                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
11598            ]);
11599            const ANONYMOUS: bool = false;
11600            #[allow(unused_variables)]
11601            #[inline]
11602            fn new(
11603                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11604                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11605            ) -> Self {
11606                Self {
11607                    account: topics.1,
11608                    blsVK: data.0,
11609                    schnorrVK: data.1,
11610                    commission: data.2,
11611                    blsSig: data.3,
11612                    schnorrSig: data.4,
11613                    metadataUri: data.5,
11614                }
11615            }
11616            #[inline]
11617            fn check_signature(
11618                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11619            ) -> alloy_sol_types::Result<()> {
11620                if topics.0 != Self::SIGNATURE_HASH {
11621                    return Err(
11622                        alloy_sol_types::Error::invalid_event_signature_hash(
11623                            Self::SIGNATURE,
11624                            topics.0,
11625                            Self::SIGNATURE_HASH,
11626                        ),
11627                    );
11628                }
11629                Ok(())
11630            }
11631            #[inline]
11632            fn tokenize_body(&self) -> Self::DataToken<'_> {
11633                (
11634                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
11635                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11636                        &self.schnorrVK,
11637                    ),
11638                    <alloy::sol_types::sol_data::Uint<
11639                        16,
11640                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11641                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
11642                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11643                        &self.schnorrSig,
11644                    ),
11645                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11646                        &self.metadataUri,
11647                    ),
11648                )
11649            }
11650            #[inline]
11651            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11652                (Self::SIGNATURE_HASH.into(), self.account.clone())
11653            }
11654            #[inline]
11655            fn encode_topics_raw(
11656                &self,
11657                out: &mut [alloy_sol_types::abi::token::WordToken],
11658            ) -> alloy_sol_types::Result<()> {
11659                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11660                    return Err(alloy_sol_types::Error::Overrun);
11661                }
11662                out[0usize] = alloy_sol_types::abi::token::WordToken(
11663                    Self::SIGNATURE_HASH,
11664                );
11665                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11666                    &self.account,
11667                );
11668                Ok(())
11669            }
11670        }
11671        #[automatically_derived]
11672        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
11673            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11674                From::from(self)
11675            }
11676            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11677                From::from(&self)
11678            }
11679        }
11680        #[automatically_derived]
11681        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
11682            #[inline]
11683            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
11684                alloy_sol_types::SolEvent::encode_log_data(this)
11685            }
11686        }
11687    };
11688    #[derive(serde::Serialize, serde::Deserialize)]
11689    #[derive()]
11690    /**Event with signature `ValidatorRegisteredV3(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string,bytes32,string)` and selector `0xbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec14`.
11691```solidity
11692event ValidatorRegisteredV3(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri, bytes32 x25519Key, string p2pAddr);
11693```*/
11694    #[allow(
11695        non_camel_case_types,
11696        non_snake_case,
11697        clippy::pub_underscore_fields,
11698        clippy::style
11699    )]
11700    #[derive(Clone)]
11701    pub struct ValidatorRegisteredV3 {
11702        #[allow(missing_docs)]
11703        pub account: alloy::sol_types::private::Address,
11704        #[allow(missing_docs)]
11705        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11706        #[allow(missing_docs)]
11707        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11708        #[allow(missing_docs)]
11709        pub commission: u16,
11710        #[allow(missing_docs)]
11711        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11712        #[allow(missing_docs)]
11713        pub schnorrSig: alloy::sol_types::private::Bytes,
11714        #[allow(missing_docs)]
11715        pub metadataUri: alloy::sol_types::private::String,
11716        #[allow(missing_docs)]
11717        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
11718        #[allow(missing_docs)]
11719        pub p2pAddr: alloy::sol_types::private::String,
11720    }
11721    #[allow(
11722        non_camel_case_types,
11723        non_snake_case,
11724        clippy::pub_underscore_fields,
11725        clippy::style
11726    )]
11727    const _: () = {
11728        use alloy::sol_types as alloy_sol_types;
11729        #[automatically_derived]
11730        impl alloy_sol_types::SolEvent for ValidatorRegisteredV3 {
11731            type DataTuple<'a> = (
11732                BN254::G2Point,
11733                EdOnBN254::EdOnBN254Point,
11734                alloy::sol_types::sol_data::Uint<16>,
11735                BN254::G1Point,
11736                alloy::sol_types::sol_data::Bytes,
11737                alloy::sol_types::sol_data::String,
11738                alloy::sol_types::sol_data::FixedBytes<32>,
11739                alloy::sol_types::sol_data::String,
11740            );
11741            type DataToken<'a> = <Self::DataTuple<
11742                'a,
11743            > as alloy_sol_types::SolType>::Token<'a>;
11744            type TopicList = (
11745                alloy_sol_types::sol_data::FixedBytes<32>,
11746                alloy::sol_types::sol_data::Address,
11747            );
11748            const SIGNATURE: &'static str = "ValidatorRegisteredV3(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string,bytes32,string)";
11749            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11750                191u8, 20u8, 205u8, 127u8, 234u8, 112u8, 67u8, 93u8, 66u8, 79u8, 146u8,
11751                247u8, 163u8, 208u8, 17u8, 9u8, 165u8, 131u8, 68u8, 157u8, 113u8, 136u8,
11752                152u8, 166u8, 169u8, 105u8, 135u8, 156u8, 84u8, 118u8, 236u8, 20u8,
11753            ]);
11754            const ANONYMOUS: bool = false;
11755            #[allow(unused_variables)]
11756            #[inline]
11757            fn new(
11758                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11759                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11760            ) -> Self {
11761                Self {
11762                    account: topics.1,
11763                    blsVK: data.0,
11764                    schnorrVK: data.1,
11765                    commission: data.2,
11766                    blsSig: data.3,
11767                    schnorrSig: data.4,
11768                    metadataUri: data.5,
11769                    x25519Key: data.6,
11770                    p2pAddr: data.7,
11771                }
11772            }
11773            #[inline]
11774            fn check_signature(
11775                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11776            ) -> alloy_sol_types::Result<()> {
11777                if topics.0 != Self::SIGNATURE_HASH {
11778                    return Err(
11779                        alloy_sol_types::Error::invalid_event_signature_hash(
11780                            Self::SIGNATURE,
11781                            topics.0,
11782                            Self::SIGNATURE_HASH,
11783                        ),
11784                    );
11785                }
11786                Ok(())
11787            }
11788            #[inline]
11789            fn tokenize_body(&self) -> Self::DataToken<'_> {
11790                (
11791                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
11792                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11793                        &self.schnorrVK,
11794                    ),
11795                    <alloy::sol_types::sol_data::Uint<
11796                        16,
11797                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11798                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
11799                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11800                        &self.schnorrSig,
11801                    ),
11802                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11803                        &self.metadataUri,
11804                    ),
11805                    <alloy::sol_types::sol_data::FixedBytes<
11806                        32,
11807                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
11808                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11809                        &self.p2pAddr,
11810                    ),
11811                )
11812            }
11813            #[inline]
11814            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11815                (Self::SIGNATURE_HASH.into(), self.account.clone())
11816            }
11817            #[inline]
11818            fn encode_topics_raw(
11819                &self,
11820                out: &mut [alloy_sol_types::abi::token::WordToken],
11821            ) -> alloy_sol_types::Result<()> {
11822                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11823                    return Err(alloy_sol_types::Error::Overrun);
11824                }
11825                out[0usize] = alloy_sol_types::abi::token::WordToken(
11826                    Self::SIGNATURE_HASH,
11827                );
11828                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11829                    &self.account,
11830                );
11831                Ok(())
11832            }
11833        }
11834        #[automatically_derived]
11835        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV3 {
11836            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11837                From::from(self)
11838            }
11839            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11840                From::from(&self)
11841            }
11842        }
11843        #[automatically_derived]
11844        impl From<&ValidatorRegisteredV3> for alloy_sol_types::private::LogData {
11845            #[inline]
11846            fn from(this: &ValidatorRegisteredV3) -> alloy_sol_types::private::LogData {
11847                alloy_sol_types::SolEvent::encode_log_data(this)
11848            }
11849        }
11850    };
11851    #[derive(serde::Serialize, serde::Deserialize)]
11852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11853    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
11854```solidity
11855event Withdrawal(address indexed account, uint256 amount);
11856```*/
11857    #[allow(
11858        non_camel_case_types,
11859        non_snake_case,
11860        clippy::pub_underscore_fields,
11861        clippy::style
11862    )]
11863    #[derive(Clone)]
11864    pub struct Withdrawal {
11865        #[allow(missing_docs)]
11866        pub account: alloy::sol_types::private::Address,
11867        #[allow(missing_docs)]
11868        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11869    }
11870    #[allow(
11871        non_camel_case_types,
11872        non_snake_case,
11873        clippy::pub_underscore_fields,
11874        clippy::style
11875    )]
11876    const _: () = {
11877        use alloy::sol_types as alloy_sol_types;
11878        #[automatically_derived]
11879        impl alloy_sol_types::SolEvent for Withdrawal {
11880            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11881            type DataToken<'a> = <Self::DataTuple<
11882                'a,
11883            > as alloy_sol_types::SolType>::Token<'a>;
11884            type TopicList = (
11885                alloy_sol_types::sol_data::FixedBytes<32>,
11886                alloy::sol_types::sol_data::Address,
11887            );
11888            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
11889            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11890                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
11891                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
11892                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
11893            ]);
11894            const ANONYMOUS: bool = false;
11895            #[allow(unused_variables)]
11896            #[inline]
11897            fn new(
11898                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11899                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11900            ) -> Self {
11901                Self {
11902                    account: topics.1,
11903                    amount: data.0,
11904                }
11905            }
11906            #[inline]
11907            fn check_signature(
11908                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11909            ) -> alloy_sol_types::Result<()> {
11910                if topics.0 != Self::SIGNATURE_HASH {
11911                    return Err(
11912                        alloy_sol_types::Error::invalid_event_signature_hash(
11913                            Self::SIGNATURE,
11914                            topics.0,
11915                            Self::SIGNATURE_HASH,
11916                        ),
11917                    );
11918                }
11919                Ok(())
11920            }
11921            #[inline]
11922            fn tokenize_body(&self) -> Self::DataToken<'_> {
11923                (
11924                    <alloy::sol_types::sol_data::Uint<
11925                        256,
11926                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11927                )
11928            }
11929            #[inline]
11930            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11931                (Self::SIGNATURE_HASH.into(), self.account.clone())
11932            }
11933            #[inline]
11934            fn encode_topics_raw(
11935                &self,
11936                out: &mut [alloy_sol_types::abi::token::WordToken],
11937            ) -> alloy_sol_types::Result<()> {
11938                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11939                    return Err(alloy_sol_types::Error::Overrun);
11940                }
11941                out[0usize] = alloy_sol_types::abi::token::WordToken(
11942                    Self::SIGNATURE_HASH,
11943                );
11944                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11945                    &self.account,
11946                );
11947                Ok(())
11948            }
11949        }
11950        #[automatically_derived]
11951        impl alloy_sol_types::private::IntoLogData for Withdrawal {
11952            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11953                From::from(self)
11954            }
11955            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11956                From::from(&self)
11957            }
11958        }
11959        #[automatically_derived]
11960        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
11961            #[inline]
11962            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
11963                alloy_sol_types::SolEvent::encode_log_data(this)
11964            }
11965        }
11966    };
11967    #[derive(serde::Serialize, serde::Deserialize)]
11968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11969    /**Event with signature `WithdrawalClaimed(address,address,uint64,uint256)` and selector `0xb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522`.
11970```solidity
11971event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
11972```*/
11973    #[allow(
11974        non_camel_case_types,
11975        non_snake_case,
11976        clippy::pub_underscore_fields,
11977        clippy::style
11978    )]
11979    #[derive(Clone)]
11980    pub struct WithdrawalClaimed {
11981        #[allow(missing_docs)]
11982        pub delegator: alloy::sol_types::private::Address,
11983        #[allow(missing_docs)]
11984        pub validator: alloy::sol_types::private::Address,
11985        #[allow(missing_docs)]
11986        pub undelegationId: u64,
11987        #[allow(missing_docs)]
11988        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11989    }
11990    #[allow(
11991        non_camel_case_types,
11992        non_snake_case,
11993        clippy::pub_underscore_fields,
11994        clippy::style
11995    )]
11996    const _: () = {
11997        use alloy::sol_types as alloy_sol_types;
11998        #[automatically_derived]
11999        impl alloy_sol_types::SolEvent for WithdrawalClaimed {
12000            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12001            type DataToken<'a> = <Self::DataTuple<
12002                'a,
12003            > as alloy_sol_types::SolType>::Token<'a>;
12004            type TopicList = (
12005                alloy_sol_types::sol_data::FixedBytes<32>,
12006                alloy::sol_types::sol_data::Address,
12007                alloy::sol_types::sol_data::Address,
12008                alloy::sol_types::sol_data::Uint<64>,
12009            );
12010            const SIGNATURE: &'static str = "WithdrawalClaimed(address,address,uint64,uint256)";
12011            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
12012                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
12013                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
12014                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
12015            ]);
12016            const ANONYMOUS: bool = false;
12017            #[allow(unused_variables)]
12018            #[inline]
12019            fn new(
12020                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
12021                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
12022            ) -> Self {
12023                Self {
12024                    delegator: topics.1,
12025                    validator: topics.2,
12026                    undelegationId: topics.3,
12027                    amount: data.0,
12028                }
12029            }
12030            #[inline]
12031            fn check_signature(
12032                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
12033            ) -> alloy_sol_types::Result<()> {
12034                if topics.0 != Self::SIGNATURE_HASH {
12035                    return Err(
12036                        alloy_sol_types::Error::invalid_event_signature_hash(
12037                            Self::SIGNATURE,
12038                            topics.0,
12039                            Self::SIGNATURE_HASH,
12040                        ),
12041                    );
12042                }
12043                Ok(())
12044            }
12045            #[inline]
12046            fn tokenize_body(&self) -> Self::DataToken<'_> {
12047                (
12048                    <alloy::sol_types::sol_data::Uint<
12049                        256,
12050                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
12051                )
12052            }
12053            #[inline]
12054            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
12055                (
12056                    Self::SIGNATURE_HASH.into(),
12057                    self.delegator.clone(),
12058                    self.validator.clone(),
12059                    self.undelegationId.clone(),
12060                )
12061            }
12062            #[inline]
12063            fn encode_topics_raw(
12064                &self,
12065                out: &mut [alloy_sol_types::abi::token::WordToken],
12066            ) -> alloy_sol_types::Result<()> {
12067                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
12068                    return Err(alloy_sol_types::Error::Overrun);
12069                }
12070                out[0usize] = alloy_sol_types::abi::token::WordToken(
12071                    Self::SIGNATURE_HASH,
12072                );
12073                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
12074                    &self.delegator,
12075                );
12076                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
12077                    &self.validator,
12078                );
12079                out[3usize] = <alloy::sol_types::sol_data::Uint<
12080                    64,
12081                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
12082                Ok(())
12083            }
12084        }
12085        #[automatically_derived]
12086        impl alloy_sol_types::private::IntoLogData for WithdrawalClaimed {
12087            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12088                From::from(self)
12089            }
12090            fn into_log_data(self) -> alloy_sol_types::private::LogData {
12091                From::from(&self)
12092            }
12093        }
12094        #[automatically_derived]
12095        impl From<&WithdrawalClaimed> for alloy_sol_types::private::LogData {
12096            #[inline]
12097            fn from(this: &WithdrawalClaimed) -> alloy_sol_types::private::LogData {
12098                alloy_sol_types::SolEvent::encode_log_data(this)
12099            }
12100        }
12101    };
12102    #[derive(serde::Serialize, serde::Deserialize)]
12103    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12104    /**Event with signature `X25519KeyUpdated(address,bytes32)` and selector `0x3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df`.
12105```solidity
12106event X25519KeyUpdated(address indexed validator, bytes32 x25519Key);
12107```*/
12108    #[allow(
12109        non_camel_case_types,
12110        non_snake_case,
12111        clippy::pub_underscore_fields,
12112        clippy::style
12113    )]
12114    #[derive(Clone)]
12115    pub struct X25519KeyUpdated {
12116        #[allow(missing_docs)]
12117        pub validator: alloy::sol_types::private::Address,
12118        #[allow(missing_docs)]
12119        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
12120    }
12121    #[allow(
12122        non_camel_case_types,
12123        non_snake_case,
12124        clippy::pub_underscore_fields,
12125        clippy::style
12126    )]
12127    const _: () = {
12128        use alloy::sol_types as alloy_sol_types;
12129        #[automatically_derived]
12130        impl alloy_sol_types::SolEvent for X25519KeyUpdated {
12131            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12132            type DataToken<'a> = <Self::DataTuple<
12133                'a,
12134            > as alloy_sol_types::SolType>::Token<'a>;
12135            type TopicList = (
12136                alloy_sol_types::sol_data::FixedBytes<32>,
12137                alloy::sol_types::sol_data::Address,
12138            );
12139            const SIGNATURE: &'static str = "X25519KeyUpdated(address,bytes32)";
12140            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
12141                59u8, 76u8, 200u8, 138u8, 254u8, 62u8, 92u8, 230u8, 190u8, 234u8, 121u8,
12142                9u8, 222u8, 32u8, 11u8, 242u8, 24u8, 158u8, 238u8, 204u8, 179u8, 150u8,
12143                87u8, 31u8, 31u8, 148u8, 213u8, 24u8, 53u8, 242u8, 71u8, 223u8,
12144            ]);
12145            const ANONYMOUS: bool = false;
12146            #[allow(unused_variables)]
12147            #[inline]
12148            fn new(
12149                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
12150                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
12151            ) -> Self {
12152                Self {
12153                    validator: topics.1,
12154                    x25519Key: data.0,
12155                }
12156            }
12157            #[inline]
12158            fn check_signature(
12159                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
12160            ) -> alloy_sol_types::Result<()> {
12161                if topics.0 != Self::SIGNATURE_HASH {
12162                    return Err(
12163                        alloy_sol_types::Error::invalid_event_signature_hash(
12164                            Self::SIGNATURE,
12165                            topics.0,
12166                            Self::SIGNATURE_HASH,
12167                        ),
12168                    );
12169                }
12170                Ok(())
12171            }
12172            #[inline]
12173            fn tokenize_body(&self) -> Self::DataToken<'_> {
12174                (
12175                    <alloy::sol_types::sol_data::FixedBytes<
12176                        32,
12177                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
12178                )
12179            }
12180            #[inline]
12181            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
12182                (Self::SIGNATURE_HASH.into(), self.validator.clone())
12183            }
12184            #[inline]
12185            fn encode_topics_raw(
12186                &self,
12187                out: &mut [alloy_sol_types::abi::token::WordToken],
12188            ) -> alloy_sol_types::Result<()> {
12189                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
12190                    return Err(alloy_sol_types::Error::Overrun);
12191                }
12192                out[0usize] = alloy_sol_types::abi::token::WordToken(
12193                    Self::SIGNATURE_HASH,
12194                );
12195                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
12196                    &self.validator,
12197                );
12198                Ok(())
12199            }
12200        }
12201        #[automatically_derived]
12202        impl alloy_sol_types::private::IntoLogData for X25519KeyUpdated {
12203            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12204                From::from(self)
12205            }
12206            fn into_log_data(self) -> alloy_sol_types::private::LogData {
12207                From::from(&self)
12208            }
12209        }
12210        #[automatically_derived]
12211        impl From<&X25519KeyUpdated> for alloy_sol_types::private::LogData {
12212            #[inline]
12213            fn from(this: &X25519KeyUpdated) -> alloy_sol_types::private::LogData {
12214                alloy_sol_types::SolEvent::encode_log_data(this)
12215            }
12216        }
12217    };
12218    /**Constructor`.
12219```solidity
12220constructor();
12221```*/
12222    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12223    #[derive(Clone)]
12224    pub struct constructorCall {}
12225    const _: () = {
12226        use alloy::sol_types as alloy_sol_types;
12227        {
12228            #[doc(hidden)]
12229            #[allow(dead_code)]
12230            type UnderlyingSolTuple<'a> = ();
12231            #[doc(hidden)]
12232            type UnderlyingRustTuple<'a> = ();
12233            #[cfg(test)]
12234            #[allow(dead_code, unreachable_patterns)]
12235            fn _type_assertion(
12236                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12237            ) {
12238                match _t {
12239                    alloy_sol_types::private::AssertTypeEq::<
12240                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12241                    >(_) => {}
12242                }
12243            }
12244            #[automatically_derived]
12245            #[doc(hidden)]
12246            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
12247                fn from(value: constructorCall) -> Self {
12248                    ()
12249                }
12250            }
12251            #[automatically_derived]
12252            #[doc(hidden)]
12253            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
12254                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12255                    Self {}
12256                }
12257            }
12258        }
12259        #[automatically_derived]
12260        impl alloy_sol_types::SolConstructor for constructorCall {
12261            type Parameters<'a> = ();
12262            type Token<'a> = <Self::Parameters<
12263                'a,
12264            > as alloy_sol_types::SolType>::Token<'a>;
12265            #[inline]
12266            fn new<'a>(
12267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12268            ) -> Self {
12269                tuple.into()
12270            }
12271            #[inline]
12272            fn tokenize(&self) -> Self::Token<'_> {
12273                ()
12274            }
12275        }
12276    };
12277    #[derive(serde::Serialize, serde::Deserialize)]
12278    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12279    /**Function with signature `CURVE25519_P()` and selector `0xf6777a10`.
12280```solidity
12281function CURVE25519_P() external view returns (uint256);
12282```*/
12283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12284    #[derive(Clone)]
12285    pub struct CURVE25519_PCall;
12286    #[derive(serde::Serialize, serde::Deserialize)]
12287    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12288    ///Container type for the return parameters of the [`CURVE25519_P()`](CURVE25519_PCall) function.
12289    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12290    #[derive(Clone)]
12291    pub struct CURVE25519_PReturn {
12292        #[allow(missing_docs)]
12293        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12294    }
12295    #[allow(
12296        non_camel_case_types,
12297        non_snake_case,
12298        clippy::pub_underscore_fields,
12299        clippy::style
12300    )]
12301    const _: () = {
12302        use alloy::sol_types as alloy_sol_types;
12303        {
12304            #[doc(hidden)]
12305            #[allow(dead_code)]
12306            type UnderlyingSolTuple<'a> = ();
12307            #[doc(hidden)]
12308            type UnderlyingRustTuple<'a> = ();
12309            #[cfg(test)]
12310            #[allow(dead_code, unreachable_patterns)]
12311            fn _type_assertion(
12312                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12313            ) {
12314                match _t {
12315                    alloy_sol_types::private::AssertTypeEq::<
12316                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12317                    >(_) => {}
12318                }
12319            }
12320            #[automatically_derived]
12321            #[doc(hidden)]
12322            impl ::core::convert::From<CURVE25519_PCall> for UnderlyingRustTuple<'_> {
12323                fn from(value: CURVE25519_PCall) -> Self {
12324                    ()
12325                }
12326            }
12327            #[automatically_derived]
12328            #[doc(hidden)]
12329            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CURVE25519_PCall {
12330                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12331                    Self
12332                }
12333            }
12334        }
12335        {
12336            #[doc(hidden)]
12337            #[allow(dead_code)]
12338            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12339            #[doc(hidden)]
12340            type UnderlyingRustTuple<'a> = (
12341                alloy::sol_types::private::primitives::aliases::U256,
12342            );
12343            #[cfg(test)]
12344            #[allow(dead_code, unreachable_patterns)]
12345            fn _type_assertion(
12346                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12347            ) {
12348                match _t {
12349                    alloy_sol_types::private::AssertTypeEq::<
12350                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12351                    >(_) => {}
12352                }
12353            }
12354            #[automatically_derived]
12355            #[doc(hidden)]
12356            impl ::core::convert::From<CURVE25519_PReturn> for UnderlyingRustTuple<'_> {
12357                fn from(value: CURVE25519_PReturn) -> Self {
12358                    (value._0,)
12359                }
12360            }
12361            #[automatically_derived]
12362            #[doc(hidden)]
12363            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CURVE25519_PReturn {
12364                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12365                    Self { _0: tuple.0 }
12366                }
12367            }
12368        }
12369        #[automatically_derived]
12370        impl alloy_sol_types::SolCall for CURVE25519_PCall {
12371            type Parameters<'a> = ();
12372            type Token<'a> = <Self::Parameters<
12373                'a,
12374            > as alloy_sol_types::SolType>::Token<'a>;
12375            type Return = alloy::sol_types::private::primitives::aliases::U256;
12376            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12377            type ReturnToken<'a> = <Self::ReturnTuple<
12378                'a,
12379            > as alloy_sol_types::SolType>::Token<'a>;
12380            const SIGNATURE: &'static str = "CURVE25519_P()";
12381            const SELECTOR: [u8; 4] = [246u8, 119u8, 122u8, 16u8];
12382            #[inline]
12383            fn new<'a>(
12384                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12385            ) -> Self {
12386                tuple.into()
12387            }
12388            #[inline]
12389            fn tokenize(&self) -> Self::Token<'_> {
12390                ()
12391            }
12392            #[inline]
12393            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12394                (
12395                    <alloy::sol_types::sol_data::Uint<
12396                        256,
12397                    > as alloy_sol_types::SolType>::tokenize(ret),
12398                )
12399            }
12400            #[inline]
12401            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12402                <Self::ReturnTuple<
12403                    '_,
12404                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12405                    .map(|r| {
12406                        let r: CURVE25519_PReturn = r.into();
12407                        r._0
12408                    })
12409            }
12410            #[inline]
12411            fn abi_decode_returns_validate(
12412                data: &[u8],
12413            ) -> alloy_sol_types::Result<Self::Return> {
12414                <Self::ReturnTuple<
12415                    '_,
12416                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12417                    .map(|r| {
12418                        let r: CURVE25519_PReturn = r.into();
12419                        r._0
12420                    })
12421            }
12422        }
12423    };
12424    #[derive(serde::Serialize, serde::Deserialize)]
12425    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12426    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
12427```solidity
12428function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
12429```*/
12430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12431    #[derive(Clone)]
12432    pub struct DEFAULT_ADMIN_ROLECall;
12433    #[derive(serde::Serialize, serde::Deserialize)]
12434    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12435    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
12436    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12437    #[derive(Clone)]
12438    pub struct DEFAULT_ADMIN_ROLEReturn {
12439        #[allow(missing_docs)]
12440        pub _0: alloy::sol_types::private::FixedBytes<32>,
12441    }
12442    #[allow(
12443        non_camel_case_types,
12444        non_snake_case,
12445        clippy::pub_underscore_fields,
12446        clippy::style
12447    )]
12448    const _: () = {
12449        use alloy::sol_types as alloy_sol_types;
12450        {
12451            #[doc(hidden)]
12452            #[allow(dead_code)]
12453            type UnderlyingSolTuple<'a> = ();
12454            #[doc(hidden)]
12455            type UnderlyingRustTuple<'a> = ();
12456            #[cfg(test)]
12457            #[allow(dead_code, unreachable_patterns)]
12458            fn _type_assertion(
12459                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12460            ) {
12461                match _t {
12462                    alloy_sol_types::private::AssertTypeEq::<
12463                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12464                    >(_) => {}
12465                }
12466            }
12467            #[automatically_derived]
12468            #[doc(hidden)]
12469            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
12470            for UnderlyingRustTuple<'_> {
12471                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
12472                    ()
12473                }
12474            }
12475            #[automatically_derived]
12476            #[doc(hidden)]
12477            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12478            for DEFAULT_ADMIN_ROLECall {
12479                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12480                    Self
12481                }
12482            }
12483        }
12484        {
12485            #[doc(hidden)]
12486            #[allow(dead_code)]
12487            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12488            #[doc(hidden)]
12489            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12490            #[cfg(test)]
12491            #[allow(dead_code, unreachable_patterns)]
12492            fn _type_assertion(
12493                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12494            ) {
12495                match _t {
12496                    alloy_sol_types::private::AssertTypeEq::<
12497                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12498                    >(_) => {}
12499                }
12500            }
12501            #[automatically_derived]
12502            #[doc(hidden)]
12503            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
12504            for UnderlyingRustTuple<'_> {
12505                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
12506                    (value._0,)
12507                }
12508            }
12509            #[automatically_derived]
12510            #[doc(hidden)]
12511            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12512            for DEFAULT_ADMIN_ROLEReturn {
12513                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12514                    Self { _0: tuple.0 }
12515                }
12516            }
12517        }
12518        #[automatically_derived]
12519        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
12520            type Parameters<'a> = ();
12521            type Token<'a> = <Self::Parameters<
12522                'a,
12523            > as alloy_sol_types::SolType>::Token<'a>;
12524            type Return = alloy::sol_types::private::FixedBytes<32>;
12525            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12526            type ReturnToken<'a> = <Self::ReturnTuple<
12527                'a,
12528            > as alloy_sol_types::SolType>::Token<'a>;
12529            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
12530            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
12531            #[inline]
12532            fn new<'a>(
12533                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12534            ) -> Self {
12535                tuple.into()
12536            }
12537            #[inline]
12538            fn tokenize(&self) -> Self::Token<'_> {
12539                ()
12540            }
12541            #[inline]
12542            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12543                (
12544                    <alloy::sol_types::sol_data::FixedBytes<
12545                        32,
12546                    > as alloy_sol_types::SolType>::tokenize(ret),
12547                )
12548            }
12549            #[inline]
12550            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12551                <Self::ReturnTuple<
12552                    '_,
12553                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12554                    .map(|r| {
12555                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
12556                        r._0
12557                    })
12558            }
12559            #[inline]
12560            fn abi_decode_returns_validate(
12561                data: &[u8],
12562            ) -> alloy_sol_types::Result<Self::Return> {
12563                <Self::ReturnTuple<
12564                    '_,
12565                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12566                    .map(|r| {
12567                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
12568                        r._0
12569                    })
12570            }
12571        }
12572    };
12573    #[derive(serde::Serialize, serde::Deserialize)]
12574    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12575    /**Function with signature `MAX_COMMISSION_BPS()` and selector `0xe62977f8`.
12576```solidity
12577function MAX_COMMISSION_BPS() external view returns (uint16);
12578```*/
12579    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12580    #[derive(Clone)]
12581    pub struct MAX_COMMISSION_BPSCall;
12582    #[derive(serde::Serialize, serde::Deserialize)]
12583    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12584    ///Container type for the return parameters of the [`MAX_COMMISSION_BPS()`](MAX_COMMISSION_BPSCall) function.
12585    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12586    #[derive(Clone)]
12587    pub struct MAX_COMMISSION_BPSReturn {
12588        #[allow(missing_docs)]
12589        pub _0: u16,
12590    }
12591    #[allow(
12592        non_camel_case_types,
12593        non_snake_case,
12594        clippy::pub_underscore_fields,
12595        clippy::style
12596    )]
12597    const _: () = {
12598        use alloy::sol_types as alloy_sol_types;
12599        {
12600            #[doc(hidden)]
12601            #[allow(dead_code)]
12602            type UnderlyingSolTuple<'a> = ();
12603            #[doc(hidden)]
12604            type UnderlyingRustTuple<'a> = ();
12605            #[cfg(test)]
12606            #[allow(dead_code, unreachable_patterns)]
12607            fn _type_assertion(
12608                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12609            ) {
12610                match _t {
12611                    alloy_sol_types::private::AssertTypeEq::<
12612                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12613                    >(_) => {}
12614                }
12615            }
12616            #[automatically_derived]
12617            #[doc(hidden)]
12618            impl ::core::convert::From<MAX_COMMISSION_BPSCall>
12619            for UnderlyingRustTuple<'_> {
12620                fn from(value: MAX_COMMISSION_BPSCall) -> Self {
12621                    ()
12622                }
12623            }
12624            #[automatically_derived]
12625            #[doc(hidden)]
12626            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12627            for MAX_COMMISSION_BPSCall {
12628                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12629                    Self
12630                }
12631            }
12632        }
12633        {
12634            #[doc(hidden)]
12635            #[allow(dead_code)]
12636            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
12637            #[doc(hidden)]
12638            type UnderlyingRustTuple<'a> = (u16,);
12639            #[cfg(test)]
12640            #[allow(dead_code, unreachable_patterns)]
12641            fn _type_assertion(
12642                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12643            ) {
12644                match _t {
12645                    alloy_sol_types::private::AssertTypeEq::<
12646                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12647                    >(_) => {}
12648                }
12649            }
12650            #[automatically_derived]
12651            #[doc(hidden)]
12652            impl ::core::convert::From<MAX_COMMISSION_BPSReturn>
12653            for UnderlyingRustTuple<'_> {
12654                fn from(value: MAX_COMMISSION_BPSReturn) -> Self {
12655                    (value._0,)
12656                }
12657            }
12658            #[automatically_derived]
12659            #[doc(hidden)]
12660            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12661            for MAX_COMMISSION_BPSReturn {
12662                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12663                    Self { _0: tuple.0 }
12664                }
12665            }
12666        }
12667        #[automatically_derived]
12668        impl alloy_sol_types::SolCall for MAX_COMMISSION_BPSCall {
12669            type Parameters<'a> = ();
12670            type Token<'a> = <Self::Parameters<
12671                'a,
12672            > as alloy_sol_types::SolType>::Token<'a>;
12673            type Return = u16;
12674            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
12675            type ReturnToken<'a> = <Self::ReturnTuple<
12676                'a,
12677            > as alloy_sol_types::SolType>::Token<'a>;
12678            const SIGNATURE: &'static str = "MAX_COMMISSION_BPS()";
12679            const SELECTOR: [u8; 4] = [230u8, 41u8, 119u8, 248u8];
12680            #[inline]
12681            fn new<'a>(
12682                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12683            ) -> Self {
12684                tuple.into()
12685            }
12686            #[inline]
12687            fn tokenize(&self) -> Self::Token<'_> {
12688                ()
12689            }
12690            #[inline]
12691            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12692                (
12693                    <alloy::sol_types::sol_data::Uint<
12694                        16,
12695                    > as alloy_sol_types::SolType>::tokenize(ret),
12696                )
12697            }
12698            #[inline]
12699            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12700                <Self::ReturnTuple<
12701                    '_,
12702                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12703                    .map(|r| {
12704                        let r: MAX_COMMISSION_BPSReturn = r.into();
12705                        r._0
12706                    })
12707            }
12708            #[inline]
12709            fn abi_decode_returns_validate(
12710                data: &[u8],
12711            ) -> alloy_sol_types::Result<Self::Return> {
12712                <Self::ReturnTuple<
12713                    '_,
12714                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12715                    .map(|r| {
12716                        let r: MAX_COMMISSION_BPSReturn = r.into();
12717                        r._0
12718                    })
12719            }
12720        }
12721    };
12722    #[derive(serde::Serialize, serde::Deserialize)]
12723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12724    /**Function with signature `MAX_EXIT_ESCROW_PERIOD()` and selector `0xe4d1fb94`.
12725```solidity
12726function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
12727```*/
12728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12729    #[derive(Clone)]
12730    pub struct MAX_EXIT_ESCROW_PERIODCall;
12731    #[derive(serde::Serialize, serde::Deserialize)]
12732    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12733    ///Container type for the return parameters of the [`MAX_EXIT_ESCROW_PERIOD()`](MAX_EXIT_ESCROW_PERIODCall) function.
12734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12735    #[derive(Clone)]
12736    pub struct MAX_EXIT_ESCROW_PERIODReturn {
12737        #[allow(missing_docs)]
12738        pub _0: u64,
12739    }
12740    #[allow(
12741        non_camel_case_types,
12742        non_snake_case,
12743        clippy::pub_underscore_fields,
12744        clippy::style
12745    )]
12746    const _: () = {
12747        use alloy::sol_types as alloy_sol_types;
12748        {
12749            #[doc(hidden)]
12750            #[allow(dead_code)]
12751            type UnderlyingSolTuple<'a> = ();
12752            #[doc(hidden)]
12753            type UnderlyingRustTuple<'a> = ();
12754            #[cfg(test)]
12755            #[allow(dead_code, unreachable_patterns)]
12756            fn _type_assertion(
12757                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12758            ) {
12759                match _t {
12760                    alloy_sol_types::private::AssertTypeEq::<
12761                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12762                    >(_) => {}
12763                }
12764            }
12765            #[automatically_derived]
12766            #[doc(hidden)]
12767            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODCall>
12768            for UnderlyingRustTuple<'_> {
12769                fn from(value: MAX_EXIT_ESCROW_PERIODCall) -> Self {
12770                    ()
12771                }
12772            }
12773            #[automatically_derived]
12774            #[doc(hidden)]
12775            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12776            for MAX_EXIT_ESCROW_PERIODCall {
12777                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12778                    Self
12779                }
12780            }
12781        }
12782        {
12783            #[doc(hidden)]
12784            #[allow(dead_code)]
12785            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12786            #[doc(hidden)]
12787            type UnderlyingRustTuple<'a> = (u64,);
12788            #[cfg(test)]
12789            #[allow(dead_code, unreachable_patterns)]
12790            fn _type_assertion(
12791                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12792            ) {
12793                match _t {
12794                    alloy_sol_types::private::AssertTypeEq::<
12795                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12796                    >(_) => {}
12797                }
12798            }
12799            #[automatically_derived]
12800            #[doc(hidden)]
12801            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODReturn>
12802            for UnderlyingRustTuple<'_> {
12803                fn from(value: MAX_EXIT_ESCROW_PERIODReturn) -> Self {
12804                    (value._0,)
12805                }
12806            }
12807            #[automatically_derived]
12808            #[doc(hidden)]
12809            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12810            for MAX_EXIT_ESCROW_PERIODReturn {
12811                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12812                    Self { _0: tuple.0 }
12813                }
12814            }
12815        }
12816        #[automatically_derived]
12817        impl alloy_sol_types::SolCall for MAX_EXIT_ESCROW_PERIODCall {
12818            type Parameters<'a> = ();
12819            type Token<'a> = <Self::Parameters<
12820                'a,
12821            > as alloy_sol_types::SolType>::Token<'a>;
12822            type Return = u64;
12823            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12824            type ReturnToken<'a> = <Self::ReturnTuple<
12825                'a,
12826            > as alloy_sol_types::SolType>::Token<'a>;
12827            const SIGNATURE: &'static str = "MAX_EXIT_ESCROW_PERIOD()";
12828            const SELECTOR: [u8; 4] = [228u8, 209u8, 251u8, 148u8];
12829            #[inline]
12830            fn new<'a>(
12831                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12832            ) -> Self {
12833                tuple.into()
12834            }
12835            #[inline]
12836            fn tokenize(&self) -> Self::Token<'_> {
12837                ()
12838            }
12839            #[inline]
12840            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12841                (
12842                    <alloy::sol_types::sol_data::Uint<
12843                        64,
12844                    > as alloy_sol_types::SolType>::tokenize(ret),
12845                )
12846            }
12847            #[inline]
12848            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12849                <Self::ReturnTuple<
12850                    '_,
12851                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12852                    .map(|r| {
12853                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
12854                        r._0
12855                    })
12856            }
12857            #[inline]
12858            fn abi_decode_returns_validate(
12859                data: &[u8],
12860            ) -> alloy_sol_types::Result<Self::Return> {
12861                <Self::ReturnTuple<
12862                    '_,
12863                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12864                    .map(|r| {
12865                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
12866                        r._0
12867                    })
12868            }
12869        }
12870    };
12871    #[derive(serde::Serialize, serde::Deserialize)]
12872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12873    /**Function with signature `MAX_METADATA_URI_LENGTH()` and selector `0x2fe28759`.
12874```solidity
12875function MAX_METADATA_URI_LENGTH() external view returns (uint256);
12876```*/
12877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12878    #[derive(Clone)]
12879    pub struct MAX_METADATA_URI_LENGTHCall;
12880    #[derive(serde::Serialize, serde::Deserialize)]
12881    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12882    ///Container type for the return parameters of the [`MAX_METADATA_URI_LENGTH()`](MAX_METADATA_URI_LENGTHCall) function.
12883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12884    #[derive(Clone)]
12885    pub struct MAX_METADATA_URI_LENGTHReturn {
12886        #[allow(missing_docs)]
12887        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12888    }
12889    #[allow(
12890        non_camel_case_types,
12891        non_snake_case,
12892        clippy::pub_underscore_fields,
12893        clippy::style
12894    )]
12895    const _: () = {
12896        use alloy::sol_types as alloy_sol_types;
12897        {
12898            #[doc(hidden)]
12899            #[allow(dead_code)]
12900            type UnderlyingSolTuple<'a> = ();
12901            #[doc(hidden)]
12902            type UnderlyingRustTuple<'a> = ();
12903            #[cfg(test)]
12904            #[allow(dead_code, unreachable_patterns)]
12905            fn _type_assertion(
12906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12907            ) {
12908                match _t {
12909                    alloy_sol_types::private::AssertTypeEq::<
12910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12911                    >(_) => {}
12912                }
12913            }
12914            #[automatically_derived]
12915            #[doc(hidden)]
12916            impl ::core::convert::From<MAX_METADATA_URI_LENGTHCall>
12917            for UnderlyingRustTuple<'_> {
12918                fn from(value: MAX_METADATA_URI_LENGTHCall) -> Self {
12919                    ()
12920                }
12921            }
12922            #[automatically_derived]
12923            #[doc(hidden)]
12924            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12925            for MAX_METADATA_URI_LENGTHCall {
12926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12927                    Self
12928                }
12929            }
12930        }
12931        {
12932            #[doc(hidden)]
12933            #[allow(dead_code)]
12934            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12935            #[doc(hidden)]
12936            type UnderlyingRustTuple<'a> = (
12937                alloy::sol_types::private::primitives::aliases::U256,
12938            );
12939            #[cfg(test)]
12940            #[allow(dead_code, unreachable_patterns)]
12941            fn _type_assertion(
12942                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12943            ) {
12944                match _t {
12945                    alloy_sol_types::private::AssertTypeEq::<
12946                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12947                    >(_) => {}
12948                }
12949            }
12950            #[automatically_derived]
12951            #[doc(hidden)]
12952            impl ::core::convert::From<MAX_METADATA_URI_LENGTHReturn>
12953            for UnderlyingRustTuple<'_> {
12954                fn from(value: MAX_METADATA_URI_LENGTHReturn) -> Self {
12955                    (value._0,)
12956                }
12957            }
12958            #[automatically_derived]
12959            #[doc(hidden)]
12960            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12961            for MAX_METADATA_URI_LENGTHReturn {
12962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12963                    Self { _0: tuple.0 }
12964                }
12965            }
12966        }
12967        #[automatically_derived]
12968        impl alloy_sol_types::SolCall for MAX_METADATA_URI_LENGTHCall {
12969            type Parameters<'a> = ();
12970            type Token<'a> = <Self::Parameters<
12971                'a,
12972            > as alloy_sol_types::SolType>::Token<'a>;
12973            type Return = alloy::sol_types::private::primitives::aliases::U256;
12974            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12975            type ReturnToken<'a> = <Self::ReturnTuple<
12976                'a,
12977            > as alloy_sol_types::SolType>::Token<'a>;
12978            const SIGNATURE: &'static str = "MAX_METADATA_URI_LENGTH()";
12979            const SELECTOR: [u8; 4] = [47u8, 226u8, 135u8, 89u8];
12980            #[inline]
12981            fn new<'a>(
12982                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12983            ) -> Self {
12984                tuple.into()
12985            }
12986            #[inline]
12987            fn tokenize(&self) -> Self::Token<'_> {
12988                ()
12989            }
12990            #[inline]
12991            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12992                (
12993                    <alloy::sol_types::sol_data::Uint<
12994                        256,
12995                    > as alloy_sol_types::SolType>::tokenize(ret),
12996                )
12997            }
12998            #[inline]
12999            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13000                <Self::ReturnTuple<
13001                    '_,
13002                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13003                    .map(|r| {
13004                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
13005                        r._0
13006                    })
13007            }
13008            #[inline]
13009            fn abi_decode_returns_validate(
13010                data: &[u8],
13011            ) -> alloy_sol_types::Result<Self::Return> {
13012                <Self::ReturnTuple<
13013                    '_,
13014                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13015                    .map(|r| {
13016                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
13017                        r._0
13018                    })
13019            }
13020        }
13021    };
13022    #[derive(serde::Serialize, serde::Deserialize)]
13023    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13024    /**Function with signature `MAX_P2P_ADDR_LENGTH()` and selector `0x617066e5`.
13025```solidity
13026function MAX_P2P_ADDR_LENGTH() external view returns (uint256);
13027```*/
13028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13029    #[derive(Clone)]
13030    pub struct MAX_P2P_ADDR_LENGTHCall;
13031    #[derive(serde::Serialize, serde::Deserialize)]
13032    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13033    ///Container type for the return parameters of the [`MAX_P2P_ADDR_LENGTH()`](MAX_P2P_ADDR_LENGTHCall) function.
13034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13035    #[derive(Clone)]
13036    pub struct MAX_P2P_ADDR_LENGTHReturn {
13037        #[allow(missing_docs)]
13038        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13039    }
13040    #[allow(
13041        non_camel_case_types,
13042        non_snake_case,
13043        clippy::pub_underscore_fields,
13044        clippy::style
13045    )]
13046    const _: () = {
13047        use alloy::sol_types as alloy_sol_types;
13048        {
13049            #[doc(hidden)]
13050            #[allow(dead_code)]
13051            type UnderlyingSolTuple<'a> = ();
13052            #[doc(hidden)]
13053            type UnderlyingRustTuple<'a> = ();
13054            #[cfg(test)]
13055            #[allow(dead_code, unreachable_patterns)]
13056            fn _type_assertion(
13057                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13058            ) {
13059                match _t {
13060                    alloy_sol_types::private::AssertTypeEq::<
13061                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13062                    >(_) => {}
13063                }
13064            }
13065            #[automatically_derived]
13066            #[doc(hidden)]
13067            impl ::core::convert::From<MAX_P2P_ADDR_LENGTHCall>
13068            for UnderlyingRustTuple<'_> {
13069                fn from(value: MAX_P2P_ADDR_LENGTHCall) -> Self {
13070                    ()
13071                }
13072            }
13073            #[automatically_derived]
13074            #[doc(hidden)]
13075            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13076            for MAX_P2P_ADDR_LENGTHCall {
13077                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13078                    Self
13079                }
13080            }
13081        }
13082        {
13083            #[doc(hidden)]
13084            #[allow(dead_code)]
13085            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13086            #[doc(hidden)]
13087            type UnderlyingRustTuple<'a> = (
13088                alloy::sol_types::private::primitives::aliases::U256,
13089            );
13090            #[cfg(test)]
13091            #[allow(dead_code, unreachable_patterns)]
13092            fn _type_assertion(
13093                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13094            ) {
13095                match _t {
13096                    alloy_sol_types::private::AssertTypeEq::<
13097                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13098                    >(_) => {}
13099                }
13100            }
13101            #[automatically_derived]
13102            #[doc(hidden)]
13103            impl ::core::convert::From<MAX_P2P_ADDR_LENGTHReturn>
13104            for UnderlyingRustTuple<'_> {
13105                fn from(value: MAX_P2P_ADDR_LENGTHReturn) -> Self {
13106                    (value._0,)
13107                }
13108            }
13109            #[automatically_derived]
13110            #[doc(hidden)]
13111            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13112            for MAX_P2P_ADDR_LENGTHReturn {
13113                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13114                    Self { _0: tuple.0 }
13115                }
13116            }
13117        }
13118        #[automatically_derived]
13119        impl alloy_sol_types::SolCall for MAX_P2P_ADDR_LENGTHCall {
13120            type Parameters<'a> = ();
13121            type Token<'a> = <Self::Parameters<
13122                'a,
13123            > as alloy_sol_types::SolType>::Token<'a>;
13124            type Return = alloy::sol_types::private::primitives::aliases::U256;
13125            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13126            type ReturnToken<'a> = <Self::ReturnTuple<
13127                'a,
13128            > as alloy_sol_types::SolType>::Token<'a>;
13129            const SIGNATURE: &'static str = "MAX_P2P_ADDR_LENGTH()";
13130            const SELECTOR: [u8; 4] = [97u8, 112u8, 102u8, 229u8];
13131            #[inline]
13132            fn new<'a>(
13133                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13134            ) -> Self {
13135                tuple.into()
13136            }
13137            #[inline]
13138            fn tokenize(&self) -> Self::Token<'_> {
13139                ()
13140            }
13141            #[inline]
13142            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13143                (
13144                    <alloy::sol_types::sol_data::Uint<
13145                        256,
13146                    > as alloy_sol_types::SolType>::tokenize(ret),
13147                )
13148            }
13149            #[inline]
13150            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13151                <Self::ReturnTuple<
13152                    '_,
13153                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13154                    .map(|r| {
13155                        let r: MAX_P2P_ADDR_LENGTHReturn = r.into();
13156                        r._0
13157                    })
13158            }
13159            #[inline]
13160            fn abi_decode_returns_validate(
13161                data: &[u8],
13162            ) -> alloy_sol_types::Result<Self::Return> {
13163                <Self::ReturnTuple<
13164                    '_,
13165                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13166                    .map(|r| {
13167                        let r: MAX_P2P_ADDR_LENGTHReturn = r.into();
13168                        r._0
13169                    })
13170            }
13171        }
13172    };
13173    #[derive(serde::Serialize, serde::Deserialize)]
13174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13175    /**Function with signature `MIN_EXIT_ESCROW_PERIOD()` and selector `0x6ad28e9f`.
13176```solidity
13177function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
13178```*/
13179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13180    #[derive(Clone)]
13181    pub struct MIN_EXIT_ESCROW_PERIODCall;
13182    #[derive(serde::Serialize, serde::Deserialize)]
13183    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13184    ///Container type for the return parameters of the [`MIN_EXIT_ESCROW_PERIOD()`](MIN_EXIT_ESCROW_PERIODCall) function.
13185    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13186    #[derive(Clone)]
13187    pub struct MIN_EXIT_ESCROW_PERIODReturn {
13188        #[allow(missing_docs)]
13189        pub _0: u64,
13190    }
13191    #[allow(
13192        non_camel_case_types,
13193        non_snake_case,
13194        clippy::pub_underscore_fields,
13195        clippy::style
13196    )]
13197    const _: () = {
13198        use alloy::sol_types as alloy_sol_types;
13199        {
13200            #[doc(hidden)]
13201            #[allow(dead_code)]
13202            type UnderlyingSolTuple<'a> = ();
13203            #[doc(hidden)]
13204            type UnderlyingRustTuple<'a> = ();
13205            #[cfg(test)]
13206            #[allow(dead_code, unreachable_patterns)]
13207            fn _type_assertion(
13208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13209            ) {
13210                match _t {
13211                    alloy_sol_types::private::AssertTypeEq::<
13212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13213                    >(_) => {}
13214                }
13215            }
13216            #[automatically_derived]
13217            #[doc(hidden)]
13218            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODCall>
13219            for UnderlyingRustTuple<'_> {
13220                fn from(value: MIN_EXIT_ESCROW_PERIODCall) -> Self {
13221                    ()
13222                }
13223            }
13224            #[automatically_derived]
13225            #[doc(hidden)]
13226            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13227            for MIN_EXIT_ESCROW_PERIODCall {
13228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13229                    Self
13230                }
13231            }
13232        }
13233        {
13234            #[doc(hidden)]
13235            #[allow(dead_code)]
13236            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13237            #[doc(hidden)]
13238            type UnderlyingRustTuple<'a> = (u64,);
13239            #[cfg(test)]
13240            #[allow(dead_code, unreachable_patterns)]
13241            fn _type_assertion(
13242                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13243            ) {
13244                match _t {
13245                    alloy_sol_types::private::AssertTypeEq::<
13246                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13247                    >(_) => {}
13248                }
13249            }
13250            #[automatically_derived]
13251            #[doc(hidden)]
13252            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODReturn>
13253            for UnderlyingRustTuple<'_> {
13254                fn from(value: MIN_EXIT_ESCROW_PERIODReturn) -> Self {
13255                    (value._0,)
13256                }
13257            }
13258            #[automatically_derived]
13259            #[doc(hidden)]
13260            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13261            for MIN_EXIT_ESCROW_PERIODReturn {
13262                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13263                    Self { _0: tuple.0 }
13264                }
13265            }
13266        }
13267        #[automatically_derived]
13268        impl alloy_sol_types::SolCall for MIN_EXIT_ESCROW_PERIODCall {
13269            type Parameters<'a> = ();
13270            type Token<'a> = <Self::Parameters<
13271                'a,
13272            > as alloy_sol_types::SolType>::Token<'a>;
13273            type Return = u64;
13274            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13275            type ReturnToken<'a> = <Self::ReturnTuple<
13276                'a,
13277            > as alloy_sol_types::SolType>::Token<'a>;
13278            const SIGNATURE: &'static str = "MIN_EXIT_ESCROW_PERIOD()";
13279            const SELECTOR: [u8; 4] = [106u8, 210u8, 142u8, 159u8];
13280            #[inline]
13281            fn new<'a>(
13282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13283            ) -> Self {
13284                tuple.into()
13285            }
13286            #[inline]
13287            fn tokenize(&self) -> Self::Token<'_> {
13288                ()
13289            }
13290            #[inline]
13291            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13292                (
13293                    <alloy::sol_types::sol_data::Uint<
13294                        64,
13295                    > as alloy_sol_types::SolType>::tokenize(ret),
13296                )
13297            }
13298            #[inline]
13299            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13300                <Self::ReturnTuple<
13301                    '_,
13302                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13303                    .map(|r| {
13304                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
13305                        r._0
13306                    })
13307            }
13308            #[inline]
13309            fn abi_decode_returns_validate(
13310                data: &[u8],
13311            ) -> alloy_sol_types::Result<Self::Return> {
13312                <Self::ReturnTuple<
13313                    '_,
13314                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13315                    .map(|r| {
13316                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
13317                        r._0
13318                    })
13319            }
13320        }
13321    };
13322    #[derive(serde::Serialize, serde::Deserialize)]
13323    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13324    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
13325```solidity
13326function PAUSER_ROLE() external view returns (bytes32);
13327```*/
13328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13329    #[derive(Clone)]
13330    pub struct PAUSER_ROLECall;
13331    #[derive(serde::Serialize, serde::Deserialize)]
13332    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13333    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
13334    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13335    #[derive(Clone)]
13336    pub struct PAUSER_ROLEReturn {
13337        #[allow(missing_docs)]
13338        pub _0: alloy::sol_types::private::FixedBytes<32>,
13339    }
13340    #[allow(
13341        non_camel_case_types,
13342        non_snake_case,
13343        clippy::pub_underscore_fields,
13344        clippy::style
13345    )]
13346    const _: () = {
13347        use alloy::sol_types as alloy_sol_types;
13348        {
13349            #[doc(hidden)]
13350            #[allow(dead_code)]
13351            type UnderlyingSolTuple<'a> = ();
13352            #[doc(hidden)]
13353            type UnderlyingRustTuple<'a> = ();
13354            #[cfg(test)]
13355            #[allow(dead_code, unreachable_patterns)]
13356            fn _type_assertion(
13357                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13358            ) {
13359                match _t {
13360                    alloy_sol_types::private::AssertTypeEq::<
13361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13362                    >(_) => {}
13363                }
13364            }
13365            #[automatically_derived]
13366            #[doc(hidden)]
13367            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
13368                fn from(value: PAUSER_ROLECall) -> Self {
13369                    ()
13370                }
13371            }
13372            #[automatically_derived]
13373            #[doc(hidden)]
13374            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
13375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13376                    Self
13377                }
13378            }
13379        }
13380        {
13381            #[doc(hidden)]
13382            #[allow(dead_code)]
13383            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13384            #[doc(hidden)]
13385            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13386            #[cfg(test)]
13387            #[allow(dead_code, unreachable_patterns)]
13388            fn _type_assertion(
13389                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13390            ) {
13391                match _t {
13392                    alloy_sol_types::private::AssertTypeEq::<
13393                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13394                    >(_) => {}
13395                }
13396            }
13397            #[automatically_derived]
13398            #[doc(hidden)]
13399            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
13400                fn from(value: PAUSER_ROLEReturn) -> Self {
13401                    (value._0,)
13402                }
13403            }
13404            #[automatically_derived]
13405            #[doc(hidden)]
13406            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
13407                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13408                    Self { _0: tuple.0 }
13409                }
13410            }
13411        }
13412        #[automatically_derived]
13413        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
13414            type Parameters<'a> = ();
13415            type Token<'a> = <Self::Parameters<
13416                'a,
13417            > as alloy_sol_types::SolType>::Token<'a>;
13418            type Return = alloy::sol_types::private::FixedBytes<32>;
13419            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13420            type ReturnToken<'a> = <Self::ReturnTuple<
13421                'a,
13422            > as alloy_sol_types::SolType>::Token<'a>;
13423            const SIGNATURE: &'static str = "PAUSER_ROLE()";
13424            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
13425            #[inline]
13426            fn new<'a>(
13427                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13428            ) -> Self {
13429                tuple.into()
13430            }
13431            #[inline]
13432            fn tokenize(&self) -> Self::Token<'_> {
13433                ()
13434            }
13435            #[inline]
13436            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13437                (
13438                    <alloy::sol_types::sol_data::FixedBytes<
13439                        32,
13440                    > as alloy_sol_types::SolType>::tokenize(ret),
13441                )
13442            }
13443            #[inline]
13444            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13445                <Self::ReturnTuple<
13446                    '_,
13447                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13448                    .map(|r| {
13449                        let r: PAUSER_ROLEReturn = r.into();
13450                        r._0
13451                    })
13452            }
13453            #[inline]
13454            fn abi_decode_returns_validate(
13455                data: &[u8],
13456            ) -> alloy_sol_types::Result<Self::Return> {
13457                <Self::ReturnTuple<
13458                    '_,
13459                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13460                    .map(|r| {
13461                        let r: PAUSER_ROLEReturn = r.into();
13462                        r._0
13463                    })
13464            }
13465        }
13466    };
13467    #[derive(serde::Serialize, serde::Deserialize)]
13468    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13469    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
13470```solidity
13471function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
13472```*/
13473    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13474    #[derive(Clone)]
13475    pub struct UPGRADE_INTERFACE_VERSIONCall;
13476    #[derive(serde::Serialize, serde::Deserialize)]
13477    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13478    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
13479    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13480    #[derive(Clone)]
13481    pub struct UPGRADE_INTERFACE_VERSIONReturn {
13482        #[allow(missing_docs)]
13483        pub _0: alloy::sol_types::private::String,
13484    }
13485    #[allow(
13486        non_camel_case_types,
13487        non_snake_case,
13488        clippy::pub_underscore_fields,
13489        clippy::style
13490    )]
13491    const _: () = {
13492        use alloy::sol_types as alloy_sol_types;
13493        {
13494            #[doc(hidden)]
13495            #[allow(dead_code)]
13496            type UnderlyingSolTuple<'a> = ();
13497            #[doc(hidden)]
13498            type UnderlyingRustTuple<'a> = ();
13499            #[cfg(test)]
13500            #[allow(dead_code, unreachable_patterns)]
13501            fn _type_assertion(
13502                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13503            ) {
13504                match _t {
13505                    alloy_sol_types::private::AssertTypeEq::<
13506                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13507                    >(_) => {}
13508                }
13509            }
13510            #[automatically_derived]
13511            #[doc(hidden)]
13512            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
13513            for UnderlyingRustTuple<'_> {
13514                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
13515                    ()
13516                }
13517            }
13518            #[automatically_derived]
13519            #[doc(hidden)]
13520            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13521            for UPGRADE_INTERFACE_VERSIONCall {
13522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13523                    Self
13524                }
13525            }
13526        }
13527        {
13528            #[doc(hidden)]
13529            #[allow(dead_code)]
13530            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
13531            #[doc(hidden)]
13532            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
13533            #[cfg(test)]
13534            #[allow(dead_code, unreachable_patterns)]
13535            fn _type_assertion(
13536                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13537            ) {
13538                match _t {
13539                    alloy_sol_types::private::AssertTypeEq::<
13540                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13541                    >(_) => {}
13542                }
13543            }
13544            #[automatically_derived]
13545            #[doc(hidden)]
13546            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
13547            for UnderlyingRustTuple<'_> {
13548                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
13549                    (value._0,)
13550                }
13551            }
13552            #[automatically_derived]
13553            #[doc(hidden)]
13554            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13555            for UPGRADE_INTERFACE_VERSIONReturn {
13556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13557                    Self { _0: tuple.0 }
13558                }
13559            }
13560        }
13561        #[automatically_derived]
13562        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
13563            type Parameters<'a> = ();
13564            type Token<'a> = <Self::Parameters<
13565                'a,
13566            > as alloy_sol_types::SolType>::Token<'a>;
13567            type Return = alloy::sol_types::private::String;
13568            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
13569            type ReturnToken<'a> = <Self::ReturnTuple<
13570                'a,
13571            > as alloy_sol_types::SolType>::Token<'a>;
13572            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
13573            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
13574            #[inline]
13575            fn new<'a>(
13576                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13577            ) -> Self {
13578                tuple.into()
13579            }
13580            #[inline]
13581            fn tokenize(&self) -> Self::Token<'_> {
13582                ()
13583            }
13584            #[inline]
13585            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13586                (
13587                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
13588                        ret,
13589                    ),
13590                )
13591            }
13592            #[inline]
13593            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13594                <Self::ReturnTuple<
13595                    '_,
13596                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13597                    .map(|r| {
13598                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
13599                        r._0
13600                    })
13601            }
13602            #[inline]
13603            fn abi_decode_returns_validate(
13604                data: &[u8],
13605            ) -> alloy_sol_types::Result<Self::Return> {
13606                <Self::ReturnTuple<
13607                    '_,
13608                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13609                    .map(|r| {
13610                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
13611                        r._0
13612                    })
13613            }
13614        }
13615    };
13616    #[derive(serde::Serialize, serde::Deserialize)]
13617    #[derive()]
13618    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
13619```solidity
13620function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
13621```*/
13622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13623    #[derive(Clone)]
13624    pub struct _hashBlsKeyCall {
13625        #[allow(missing_docs)]
13626        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13627    }
13628    #[derive(serde::Serialize, serde::Deserialize)]
13629    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13630    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
13631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13632    #[derive(Clone)]
13633    pub struct _hashBlsKeyReturn {
13634        #[allow(missing_docs)]
13635        pub _0: alloy::sol_types::private::FixedBytes<32>,
13636    }
13637    #[allow(
13638        non_camel_case_types,
13639        non_snake_case,
13640        clippy::pub_underscore_fields,
13641        clippy::style
13642    )]
13643    const _: () = {
13644        use alloy::sol_types as alloy_sol_types;
13645        {
13646            #[doc(hidden)]
13647            #[allow(dead_code)]
13648            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
13649            #[doc(hidden)]
13650            type UnderlyingRustTuple<'a> = (
13651                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13652            );
13653            #[cfg(test)]
13654            #[allow(dead_code, unreachable_patterns)]
13655            fn _type_assertion(
13656                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13657            ) {
13658                match _t {
13659                    alloy_sol_types::private::AssertTypeEq::<
13660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13661                    >(_) => {}
13662                }
13663            }
13664            #[automatically_derived]
13665            #[doc(hidden)]
13666            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
13667                fn from(value: _hashBlsKeyCall) -> Self {
13668                    (value.blsVK,)
13669                }
13670            }
13671            #[automatically_derived]
13672            #[doc(hidden)]
13673            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
13674                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13675                    Self { blsVK: tuple.0 }
13676                }
13677            }
13678        }
13679        {
13680            #[doc(hidden)]
13681            #[allow(dead_code)]
13682            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13683            #[doc(hidden)]
13684            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13685            #[cfg(test)]
13686            #[allow(dead_code, unreachable_patterns)]
13687            fn _type_assertion(
13688                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13689            ) {
13690                match _t {
13691                    alloy_sol_types::private::AssertTypeEq::<
13692                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13693                    >(_) => {}
13694                }
13695            }
13696            #[automatically_derived]
13697            #[doc(hidden)]
13698            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
13699                fn from(value: _hashBlsKeyReturn) -> Self {
13700                    (value._0,)
13701                }
13702            }
13703            #[automatically_derived]
13704            #[doc(hidden)]
13705            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
13706                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13707                    Self { _0: tuple.0 }
13708                }
13709            }
13710        }
13711        #[automatically_derived]
13712        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
13713            type Parameters<'a> = (BN254::G2Point,);
13714            type Token<'a> = <Self::Parameters<
13715                'a,
13716            > as alloy_sol_types::SolType>::Token<'a>;
13717            type Return = alloy::sol_types::private::FixedBytes<32>;
13718            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13719            type ReturnToken<'a> = <Self::ReturnTuple<
13720                'a,
13721            > as alloy_sol_types::SolType>::Token<'a>;
13722            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
13723            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
13724            #[inline]
13725            fn new<'a>(
13726                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13727            ) -> Self {
13728                tuple.into()
13729            }
13730            #[inline]
13731            fn tokenize(&self) -> Self::Token<'_> {
13732                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
13733            }
13734            #[inline]
13735            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13736                (
13737                    <alloy::sol_types::sol_data::FixedBytes<
13738                        32,
13739                    > as alloy_sol_types::SolType>::tokenize(ret),
13740                )
13741            }
13742            #[inline]
13743            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13744                <Self::ReturnTuple<
13745                    '_,
13746                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13747                    .map(|r| {
13748                        let r: _hashBlsKeyReturn = r.into();
13749                        r._0
13750                    })
13751            }
13752            #[inline]
13753            fn abi_decode_returns_validate(
13754                data: &[u8],
13755            ) -> alloy_sol_types::Result<Self::Return> {
13756                <Self::ReturnTuple<
13757                    '_,
13758                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13759                    .map(|r| {
13760                        let r: _hashBlsKeyReturn = r.into();
13761                        r._0
13762                    })
13763            }
13764        }
13765    };
13766    #[derive(serde::Serialize, serde::Deserialize)]
13767    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13768    /**Function with signature `activeStake()` and selector `0xbd49c35f`.
13769```solidity
13770function activeStake() external view returns (uint256);
13771```*/
13772    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13773    #[derive(Clone)]
13774    pub struct activeStakeCall;
13775    #[derive(serde::Serialize, serde::Deserialize)]
13776    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13777    ///Container type for the return parameters of the [`activeStake()`](activeStakeCall) function.
13778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13779    #[derive(Clone)]
13780    pub struct activeStakeReturn {
13781        #[allow(missing_docs)]
13782        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13783    }
13784    #[allow(
13785        non_camel_case_types,
13786        non_snake_case,
13787        clippy::pub_underscore_fields,
13788        clippy::style
13789    )]
13790    const _: () = {
13791        use alloy::sol_types as alloy_sol_types;
13792        {
13793            #[doc(hidden)]
13794            #[allow(dead_code)]
13795            type UnderlyingSolTuple<'a> = ();
13796            #[doc(hidden)]
13797            type UnderlyingRustTuple<'a> = ();
13798            #[cfg(test)]
13799            #[allow(dead_code, unreachable_patterns)]
13800            fn _type_assertion(
13801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13802            ) {
13803                match _t {
13804                    alloy_sol_types::private::AssertTypeEq::<
13805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13806                    >(_) => {}
13807                }
13808            }
13809            #[automatically_derived]
13810            #[doc(hidden)]
13811            impl ::core::convert::From<activeStakeCall> for UnderlyingRustTuple<'_> {
13812                fn from(value: activeStakeCall) -> Self {
13813                    ()
13814                }
13815            }
13816            #[automatically_derived]
13817            #[doc(hidden)]
13818            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeCall {
13819                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13820                    Self
13821                }
13822            }
13823        }
13824        {
13825            #[doc(hidden)]
13826            #[allow(dead_code)]
13827            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13828            #[doc(hidden)]
13829            type UnderlyingRustTuple<'a> = (
13830                alloy::sol_types::private::primitives::aliases::U256,
13831            );
13832            #[cfg(test)]
13833            #[allow(dead_code, unreachable_patterns)]
13834            fn _type_assertion(
13835                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13836            ) {
13837                match _t {
13838                    alloy_sol_types::private::AssertTypeEq::<
13839                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13840                    >(_) => {}
13841                }
13842            }
13843            #[automatically_derived]
13844            #[doc(hidden)]
13845            impl ::core::convert::From<activeStakeReturn> for UnderlyingRustTuple<'_> {
13846                fn from(value: activeStakeReturn) -> Self {
13847                    (value._0,)
13848                }
13849            }
13850            #[automatically_derived]
13851            #[doc(hidden)]
13852            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeReturn {
13853                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13854                    Self { _0: tuple.0 }
13855                }
13856            }
13857        }
13858        #[automatically_derived]
13859        impl alloy_sol_types::SolCall for activeStakeCall {
13860            type Parameters<'a> = ();
13861            type Token<'a> = <Self::Parameters<
13862                'a,
13863            > as alloy_sol_types::SolType>::Token<'a>;
13864            type Return = alloy::sol_types::private::primitives::aliases::U256;
13865            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13866            type ReturnToken<'a> = <Self::ReturnTuple<
13867                'a,
13868            > as alloy_sol_types::SolType>::Token<'a>;
13869            const SIGNATURE: &'static str = "activeStake()";
13870            const SELECTOR: [u8; 4] = [189u8, 73u8, 195u8, 95u8];
13871            #[inline]
13872            fn new<'a>(
13873                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13874            ) -> Self {
13875                tuple.into()
13876            }
13877            #[inline]
13878            fn tokenize(&self) -> Self::Token<'_> {
13879                ()
13880            }
13881            #[inline]
13882            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13883                (
13884                    <alloy::sol_types::sol_data::Uint<
13885                        256,
13886                    > as alloy_sol_types::SolType>::tokenize(ret),
13887                )
13888            }
13889            #[inline]
13890            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13891                <Self::ReturnTuple<
13892                    '_,
13893                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13894                    .map(|r| {
13895                        let r: activeStakeReturn = r.into();
13896                        r._0
13897                    })
13898            }
13899            #[inline]
13900            fn abi_decode_returns_validate(
13901                data: &[u8],
13902            ) -> alloy_sol_types::Result<Self::Return> {
13903                <Self::ReturnTuple<
13904                    '_,
13905                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13906                    .map(|r| {
13907                        let r: activeStakeReturn = r.into();
13908                        r._0
13909                    })
13910            }
13911        }
13912    };
13913    #[derive(serde::Serialize, serde::Deserialize)]
13914    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13915    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
13916```solidity
13917function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
13918```*/
13919    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13920    #[derive(Clone)]
13921    pub struct blsKeysCall {
13922        #[allow(missing_docs)]
13923        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
13924    }
13925    #[derive(serde::Serialize, serde::Deserialize)]
13926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13927    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
13928    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13929    #[derive(Clone)]
13930    pub struct blsKeysReturn {
13931        #[allow(missing_docs)]
13932        pub used: bool,
13933    }
13934    #[allow(
13935        non_camel_case_types,
13936        non_snake_case,
13937        clippy::pub_underscore_fields,
13938        clippy::style
13939    )]
13940    const _: () = {
13941        use alloy::sol_types as alloy_sol_types;
13942        {
13943            #[doc(hidden)]
13944            #[allow(dead_code)]
13945            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13946            #[doc(hidden)]
13947            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13948            #[cfg(test)]
13949            #[allow(dead_code, unreachable_patterns)]
13950            fn _type_assertion(
13951                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13952            ) {
13953                match _t {
13954                    alloy_sol_types::private::AssertTypeEq::<
13955                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13956                    >(_) => {}
13957                }
13958            }
13959            #[automatically_derived]
13960            #[doc(hidden)]
13961            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
13962                fn from(value: blsKeysCall) -> Self {
13963                    (value.blsKeyHash,)
13964                }
13965            }
13966            #[automatically_derived]
13967            #[doc(hidden)]
13968            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
13969                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13970                    Self { blsKeyHash: tuple.0 }
13971                }
13972            }
13973        }
13974        {
13975            #[doc(hidden)]
13976            #[allow(dead_code)]
13977            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
13978            #[doc(hidden)]
13979            type UnderlyingRustTuple<'a> = (bool,);
13980            #[cfg(test)]
13981            #[allow(dead_code, unreachable_patterns)]
13982            fn _type_assertion(
13983                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13984            ) {
13985                match _t {
13986                    alloy_sol_types::private::AssertTypeEq::<
13987                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13988                    >(_) => {}
13989                }
13990            }
13991            #[automatically_derived]
13992            #[doc(hidden)]
13993            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
13994                fn from(value: blsKeysReturn) -> Self {
13995                    (value.used,)
13996                }
13997            }
13998            #[automatically_derived]
13999            #[doc(hidden)]
14000            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
14001                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14002                    Self { used: tuple.0 }
14003                }
14004            }
14005        }
14006        #[automatically_derived]
14007        impl alloy_sol_types::SolCall for blsKeysCall {
14008            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14009            type Token<'a> = <Self::Parameters<
14010                'a,
14011            > as alloy_sol_types::SolType>::Token<'a>;
14012            type Return = bool;
14013            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14014            type ReturnToken<'a> = <Self::ReturnTuple<
14015                'a,
14016            > as alloy_sol_types::SolType>::Token<'a>;
14017            const SIGNATURE: &'static str = "blsKeys(bytes32)";
14018            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
14019            #[inline]
14020            fn new<'a>(
14021                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14022            ) -> Self {
14023                tuple.into()
14024            }
14025            #[inline]
14026            fn tokenize(&self) -> Self::Token<'_> {
14027                (
14028                    <alloy::sol_types::sol_data::FixedBytes<
14029                        32,
14030                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
14031                )
14032            }
14033            #[inline]
14034            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14035                (
14036                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
14037                        ret,
14038                    ),
14039                )
14040            }
14041            #[inline]
14042            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14043                <Self::ReturnTuple<
14044                    '_,
14045                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14046                    .map(|r| {
14047                        let r: blsKeysReturn = r.into();
14048                        r.used
14049                    })
14050            }
14051            #[inline]
14052            fn abi_decode_returns_validate(
14053                data: &[u8],
14054            ) -> alloy_sol_types::Result<Self::Return> {
14055                <Self::ReturnTuple<
14056                    '_,
14057                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14058                    .map(|r| {
14059                        let r: blsKeysReturn = r.into();
14060                        r.used
14061                    })
14062            }
14063        }
14064    };
14065    #[derive(serde::Serialize, serde::Deserialize)]
14066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14067    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
14068```solidity
14069function claimValidatorExit(address validator) external;
14070```*/
14071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14072    #[derive(Clone)]
14073    pub struct claimValidatorExitCall {
14074        #[allow(missing_docs)]
14075        pub validator: alloy::sol_types::private::Address,
14076    }
14077    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
14078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14079    #[derive(Clone)]
14080    pub struct claimValidatorExitReturn {}
14081    #[allow(
14082        non_camel_case_types,
14083        non_snake_case,
14084        clippy::pub_underscore_fields,
14085        clippy::style
14086    )]
14087    const _: () = {
14088        use alloy::sol_types as alloy_sol_types;
14089        {
14090            #[doc(hidden)]
14091            #[allow(dead_code)]
14092            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14093            #[doc(hidden)]
14094            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14095            #[cfg(test)]
14096            #[allow(dead_code, unreachable_patterns)]
14097            fn _type_assertion(
14098                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14099            ) {
14100                match _t {
14101                    alloy_sol_types::private::AssertTypeEq::<
14102                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14103                    >(_) => {}
14104                }
14105            }
14106            #[automatically_derived]
14107            #[doc(hidden)]
14108            impl ::core::convert::From<claimValidatorExitCall>
14109            for UnderlyingRustTuple<'_> {
14110                fn from(value: claimValidatorExitCall) -> Self {
14111                    (value.validator,)
14112                }
14113            }
14114            #[automatically_derived]
14115            #[doc(hidden)]
14116            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14117            for claimValidatorExitCall {
14118                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14119                    Self { validator: tuple.0 }
14120                }
14121            }
14122        }
14123        {
14124            #[doc(hidden)]
14125            #[allow(dead_code)]
14126            type UnderlyingSolTuple<'a> = ();
14127            #[doc(hidden)]
14128            type UnderlyingRustTuple<'a> = ();
14129            #[cfg(test)]
14130            #[allow(dead_code, unreachable_patterns)]
14131            fn _type_assertion(
14132                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14133            ) {
14134                match _t {
14135                    alloy_sol_types::private::AssertTypeEq::<
14136                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14137                    >(_) => {}
14138                }
14139            }
14140            #[automatically_derived]
14141            #[doc(hidden)]
14142            impl ::core::convert::From<claimValidatorExitReturn>
14143            for UnderlyingRustTuple<'_> {
14144                fn from(value: claimValidatorExitReturn) -> Self {
14145                    ()
14146                }
14147            }
14148            #[automatically_derived]
14149            #[doc(hidden)]
14150            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14151            for claimValidatorExitReturn {
14152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14153                    Self {}
14154                }
14155            }
14156        }
14157        impl claimValidatorExitReturn {
14158            fn _tokenize(
14159                &self,
14160            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14161                ()
14162            }
14163        }
14164        #[automatically_derived]
14165        impl alloy_sol_types::SolCall for claimValidatorExitCall {
14166            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14167            type Token<'a> = <Self::Parameters<
14168                'a,
14169            > as alloy_sol_types::SolType>::Token<'a>;
14170            type Return = claimValidatorExitReturn;
14171            type ReturnTuple<'a> = ();
14172            type ReturnToken<'a> = <Self::ReturnTuple<
14173                'a,
14174            > as alloy_sol_types::SolType>::Token<'a>;
14175            const SIGNATURE: &'static str = "claimValidatorExit(address)";
14176            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
14177            #[inline]
14178            fn new<'a>(
14179                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14180            ) -> Self {
14181                tuple.into()
14182            }
14183            #[inline]
14184            fn tokenize(&self) -> Self::Token<'_> {
14185                (
14186                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14187                        &self.validator,
14188                    ),
14189                )
14190            }
14191            #[inline]
14192            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14193                claimValidatorExitReturn::_tokenize(ret)
14194            }
14195            #[inline]
14196            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14197                <Self::ReturnTuple<
14198                    '_,
14199                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14200                    .map(Into::into)
14201            }
14202            #[inline]
14203            fn abi_decode_returns_validate(
14204                data: &[u8],
14205            ) -> alloy_sol_types::Result<Self::Return> {
14206                <Self::ReturnTuple<
14207                    '_,
14208                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14209                    .map(Into::into)
14210            }
14211        }
14212    };
14213    #[derive(serde::Serialize, serde::Deserialize)]
14214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14215    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
14216```solidity
14217function claimWithdrawal(address validator) external;
14218```*/
14219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14220    #[derive(Clone)]
14221    pub struct claimWithdrawalCall {
14222        #[allow(missing_docs)]
14223        pub validator: alloy::sol_types::private::Address,
14224    }
14225    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
14226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14227    #[derive(Clone)]
14228    pub struct claimWithdrawalReturn {}
14229    #[allow(
14230        non_camel_case_types,
14231        non_snake_case,
14232        clippy::pub_underscore_fields,
14233        clippy::style
14234    )]
14235    const _: () = {
14236        use alloy::sol_types as alloy_sol_types;
14237        {
14238            #[doc(hidden)]
14239            #[allow(dead_code)]
14240            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14241            #[doc(hidden)]
14242            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14243            #[cfg(test)]
14244            #[allow(dead_code, unreachable_patterns)]
14245            fn _type_assertion(
14246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14247            ) {
14248                match _t {
14249                    alloy_sol_types::private::AssertTypeEq::<
14250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14251                    >(_) => {}
14252                }
14253            }
14254            #[automatically_derived]
14255            #[doc(hidden)]
14256            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
14257                fn from(value: claimWithdrawalCall) -> Self {
14258                    (value.validator,)
14259                }
14260            }
14261            #[automatically_derived]
14262            #[doc(hidden)]
14263            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
14264                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14265                    Self { validator: tuple.0 }
14266                }
14267            }
14268        }
14269        {
14270            #[doc(hidden)]
14271            #[allow(dead_code)]
14272            type UnderlyingSolTuple<'a> = ();
14273            #[doc(hidden)]
14274            type UnderlyingRustTuple<'a> = ();
14275            #[cfg(test)]
14276            #[allow(dead_code, unreachable_patterns)]
14277            fn _type_assertion(
14278                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14279            ) {
14280                match _t {
14281                    alloy_sol_types::private::AssertTypeEq::<
14282                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14283                    >(_) => {}
14284                }
14285            }
14286            #[automatically_derived]
14287            #[doc(hidden)]
14288            impl ::core::convert::From<claimWithdrawalReturn>
14289            for UnderlyingRustTuple<'_> {
14290                fn from(value: claimWithdrawalReturn) -> Self {
14291                    ()
14292                }
14293            }
14294            #[automatically_derived]
14295            #[doc(hidden)]
14296            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14297            for claimWithdrawalReturn {
14298                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14299                    Self {}
14300                }
14301            }
14302        }
14303        impl claimWithdrawalReturn {
14304            fn _tokenize(
14305                &self,
14306            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14307                ()
14308            }
14309        }
14310        #[automatically_derived]
14311        impl alloy_sol_types::SolCall for claimWithdrawalCall {
14312            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14313            type Token<'a> = <Self::Parameters<
14314                'a,
14315            > as alloy_sol_types::SolType>::Token<'a>;
14316            type Return = claimWithdrawalReturn;
14317            type ReturnTuple<'a> = ();
14318            type ReturnToken<'a> = <Self::ReturnTuple<
14319                'a,
14320            > as alloy_sol_types::SolType>::Token<'a>;
14321            const SIGNATURE: &'static str = "claimWithdrawal(address)";
14322            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
14323            #[inline]
14324            fn new<'a>(
14325                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14326            ) -> Self {
14327                tuple.into()
14328            }
14329            #[inline]
14330            fn tokenize(&self) -> Self::Token<'_> {
14331                (
14332                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14333                        &self.validator,
14334                    ),
14335                )
14336            }
14337            #[inline]
14338            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14339                claimWithdrawalReturn::_tokenize(ret)
14340            }
14341            #[inline]
14342            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14343                <Self::ReturnTuple<
14344                    '_,
14345                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14346                    .map(Into::into)
14347            }
14348            #[inline]
14349            fn abi_decode_returns_validate(
14350                data: &[u8],
14351            ) -> alloy_sol_types::Result<Self::Return> {
14352                <Self::ReturnTuple<
14353                    '_,
14354                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14355                    .map(Into::into)
14356            }
14357        }
14358    };
14359    #[derive(serde::Serialize, serde::Deserialize)]
14360    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14361    /**Function with signature `commissionTracking(address)` and selector `0x9ffb6b43`.
14362```solidity
14363function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
14364```*/
14365    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14366    #[derive(Clone)]
14367    pub struct commissionTrackingCall {
14368        #[allow(missing_docs)]
14369        pub validator: alloy::sol_types::private::Address,
14370    }
14371    #[derive(serde::Serialize, serde::Deserialize)]
14372    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14373    ///Container type for the return parameters of the [`commissionTracking(address)`](commissionTrackingCall) function.
14374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14375    #[derive(Clone)]
14376    pub struct commissionTrackingReturn {
14377        #[allow(missing_docs)]
14378        pub commission: u16,
14379        #[allow(missing_docs)]
14380        pub lastIncreaseTime: alloy::sol_types::private::primitives::aliases::U256,
14381    }
14382    #[allow(
14383        non_camel_case_types,
14384        non_snake_case,
14385        clippy::pub_underscore_fields,
14386        clippy::style
14387    )]
14388    const _: () = {
14389        use alloy::sol_types as alloy_sol_types;
14390        {
14391            #[doc(hidden)]
14392            #[allow(dead_code)]
14393            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14394            #[doc(hidden)]
14395            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14396            #[cfg(test)]
14397            #[allow(dead_code, unreachable_patterns)]
14398            fn _type_assertion(
14399                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14400            ) {
14401                match _t {
14402                    alloy_sol_types::private::AssertTypeEq::<
14403                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14404                    >(_) => {}
14405                }
14406            }
14407            #[automatically_derived]
14408            #[doc(hidden)]
14409            impl ::core::convert::From<commissionTrackingCall>
14410            for UnderlyingRustTuple<'_> {
14411                fn from(value: commissionTrackingCall) -> Self {
14412                    (value.validator,)
14413                }
14414            }
14415            #[automatically_derived]
14416            #[doc(hidden)]
14417            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14418            for commissionTrackingCall {
14419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14420                    Self { validator: tuple.0 }
14421                }
14422            }
14423        }
14424        {
14425            #[doc(hidden)]
14426            #[allow(dead_code)]
14427            type UnderlyingSolTuple<'a> = (
14428                alloy::sol_types::sol_data::Uint<16>,
14429                alloy::sol_types::sol_data::Uint<256>,
14430            );
14431            #[doc(hidden)]
14432            type UnderlyingRustTuple<'a> = (
14433                u16,
14434                alloy::sol_types::private::primitives::aliases::U256,
14435            );
14436            #[cfg(test)]
14437            #[allow(dead_code, unreachable_patterns)]
14438            fn _type_assertion(
14439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14440            ) {
14441                match _t {
14442                    alloy_sol_types::private::AssertTypeEq::<
14443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14444                    >(_) => {}
14445                }
14446            }
14447            #[automatically_derived]
14448            #[doc(hidden)]
14449            impl ::core::convert::From<commissionTrackingReturn>
14450            for UnderlyingRustTuple<'_> {
14451                fn from(value: commissionTrackingReturn) -> Self {
14452                    (value.commission, value.lastIncreaseTime)
14453                }
14454            }
14455            #[automatically_derived]
14456            #[doc(hidden)]
14457            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14458            for commissionTrackingReturn {
14459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14460                    Self {
14461                        commission: tuple.0,
14462                        lastIncreaseTime: tuple.1,
14463                    }
14464                }
14465            }
14466        }
14467        impl commissionTrackingReturn {
14468            fn _tokenize(
14469                &self,
14470            ) -> <commissionTrackingCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14471                (
14472                    <alloy::sol_types::sol_data::Uint<
14473                        16,
14474                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
14475                    <alloy::sol_types::sol_data::Uint<
14476                        256,
14477                    > as alloy_sol_types::SolType>::tokenize(&self.lastIncreaseTime),
14478                )
14479            }
14480        }
14481        #[automatically_derived]
14482        impl alloy_sol_types::SolCall for commissionTrackingCall {
14483            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14484            type Token<'a> = <Self::Parameters<
14485                'a,
14486            > as alloy_sol_types::SolType>::Token<'a>;
14487            type Return = commissionTrackingReturn;
14488            type ReturnTuple<'a> = (
14489                alloy::sol_types::sol_data::Uint<16>,
14490                alloy::sol_types::sol_data::Uint<256>,
14491            );
14492            type ReturnToken<'a> = <Self::ReturnTuple<
14493                'a,
14494            > as alloy_sol_types::SolType>::Token<'a>;
14495            const SIGNATURE: &'static str = "commissionTracking(address)";
14496            const SELECTOR: [u8; 4] = [159u8, 251u8, 107u8, 67u8];
14497            #[inline]
14498            fn new<'a>(
14499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14500            ) -> Self {
14501                tuple.into()
14502            }
14503            #[inline]
14504            fn tokenize(&self) -> Self::Token<'_> {
14505                (
14506                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14507                        &self.validator,
14508                    ),
14509                )
14510            }
14511            #[inline]
14512            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14513                commissionTrackingReturn::_tokenize(ret)
14514            }
14515            #[inline]
14516            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14517                <Self::ReturnTuple<
14518                    '_,
14519                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14520                    .map(Into::into)
14521            }
14522            #[inline]
14523            fn abi_decode_returns_validate(
14524                data: &[u8],
14525            ) -> alloy_sol_types::Result<Self::Return> {
14526                <Self::ReturnTuple<
14527                    '_,
14528                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14529                    .map(Into::into)
14530            }
14531        }
14532    };
14533    #[derive(serde::Serialize, serde::Deserialize)]
14534    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14535    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
14536```solidity
14537function delegate(address validator, uint256 amount) external;
14538```*/
14539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14540    #[derive(Clone)]
14541    pub struct delegateCall {
14542        #[allow(missing_docs)]
14543        pub validator: alloy::sol_types::private::Address,
14544        #[allow(missing_docs)]
14545        pub amount: alloy::sol_types::private::primitives::aliases::U256,
14546    }
14547    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
14548    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14549    #[derive(Clone)]
14550    pub struct delegateReturn {}
14551    #[allow(
14552        non_camel_case_types,
14553        non_snake_case,
14554        clippy::pub_underscore_fields,
14555        clippy::style
14556    )]
14557    const _: () = {
14558        use alloy::sol_types as alloy_sol_types;
14559        {
14560            #[doc(hidden)]
14561            #[allow(dead_code)]
14562            type UnderlyingSolTuple<'a> = (
14563                alloy::sol_types::sol_data::Address,
14564                alloy::sol_types::sol_data::Uint<256>,
14565            );
14566            #[doc(hidden)]
14567            type UnderlyingRustTuple<'a> = (
14568                alloy::sol_types::private::Address,
14569                alloy::sol_types::private::primitives::aliases::U256,
14570            );
14571            #[cfg(test)]
14572            #[allow(dead_code, unreachable_patterns)]
14573            fn _type_assertion(
14574                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14575            ) {
14576                match _t {
14577                    alloy_sol_types::private::AssertTypeEq::<
14578                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14579                    >(_) => {}
14580                }
14581            }
14582            #[automatically_derived]
14583            #[doc(hidden)]
14584            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
14585                fn from(value: delegateCall) -> Self {
14586                    (value.validator, value.amount)
14587                }
14588            }
14589            #[automatically_derived]
14590            #[doc(hidden)]
14591            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
14592                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14593                    Self {
14594                        validator: tuple.0,
14595                        amount: tuple.1,
14596                    }
14597                }
14598            }
14599        }
14600        {
14601            #[doc(hidden)]
14602            #[allow(dead_code)]
14603            type UnderlyingSolTuple<'a> = ();
14604            #[doc(hidden)]
14605            type UnderlyingRustTuple<'a> = ();
14606            #[cfg(test)]
14607            #[allow(dead_code, unreachable_patterns)]
14608            fn _type_assertion(
14609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14610            ) {
14611                match _t {
14612                    alloy_sol_types::private::AssertTypeEq::<
14613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14614                    >(_) => {}
14615                }
14616            }
14617            #[automatically_derived]
14618            #[doc(hidden)]
14619            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
14620                fn from(value: delegateReturn) -> Self {
14621                    ()
14622                }
14623            }
14624            #[automatically_derived]
14625            #[doc(hidden)]
14626            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
14627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14628                    Self {}
14629                }
14630            }
14631        }
14632        impl delegateReturn {
14633            fn _tokenize(
14634                &self,
14635            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14636                ()
14637            }
14638        }
14639        #[automatically_derived]
14640        impl alloy_sol_types::SolCall for delegateCall {
14641            type Parameters<'a> = (
14642                alloy::sol_types::sol_data::Address,
14643                alloy::sol_types::sol_data::Uint<256>,
14644            );
14645            type Token<'a> = <Self::Parameters<
14646                'a,
14647            > as alloy_sol_types::SolType>::Token<'a>;
14648            type Return = delegateReturn;
14649            type ReturnTuple<'a> = ();
14650            type ReturnToken<'a> = <Self::ReturnTuple<
14651                'a,
14652            > as alloy_sol_types::SolType>::Token<'a>;
14653            const SIGNATURE: &'static str = "delegate(address,uint256)";
14654            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
14655            #[inline]
14656            fn new<'a>(
14657                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14658            ) -> Self {
14659                tuple.into()
14660            }
14661            #[inline]
14662            fn tokenize(&self) -> Self::Token<'_> {
14663                (
14664                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14665                        &self.validator,
14666                    ),
14667                    <alloy::sol_types::sol_data::Uint<
14668                        256,
14669                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
14670                )
14671            }
14672            #[inline]
14673            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14674                delegateReturn::_tokenize(ret)
14675            }
14676            #[inline]
14677            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14678                <Self::ReturnTuple<
14679                    '_,
14680                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14681                    .map(Into::into)
14682            }
14683            #[inline]
14684            fn abi_decode_returns_validate(
14685                data: &[u8],
14686            ) -> alloy_sol_types::Result<Self::Return> {
14687                <Self::ReturnTuple<
14688                    '_,
14689                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14690                    .map(Into::into)
14691            }
14692        }
14693    };
14694    #[derive(serde::Serialize, serde::Deserialize)]
14695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14696    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
14697```solidity
14698function delegations(address validator, address delegator) external view returns (uint256 amount);
14699```*/
14700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14701    #[derive(Clone)]
14702    pub struct delegationsCall {
14703        #[allow(missing_docs)]
14704        pub validator: alloy::sol_types::private::Address,
14705        #[allow(missing_docs)]
14706        pub delegator: alloy::sol_types::private::Address,
14707    }
14708    #[derive(serde::Serialize, serde::Deserialize)]
14709    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14710    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
14711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14712    #[derive(Clone)]
14713    pub struct delegationsReturn {
14714        #[allow(missing_docs)]
14715        pub amount: alloy::sol_types::private::primitives::aliases::U256,
14716    }
14717    #[allow(
14718        non_camel_case_types,
14719        non_snake_case,
14720        clippy::pub_underscore_fields,
14721        clippy::style
14722    )]
14723    const _: () = {
14724        use alloy::sol_types as alloy_sol_types;
14725        {
14726            #[doc(hidden)]
14727            #[allow(dead_code)]
14728            type UnderlyingSolTuple<'a> = (
14729                alloy::sol_types::sol_data::Address,
14730                alloy::sol_types::sol_data::Address,
14731            );
14732            #[doc(hidden)]
14733            type UnderlyingRustTuple<'a> = (
14734                alloy::sol_types::private::Address,
14735                alloy::sol_types::private::Address,
14736            );
14737            #[cfg(test)]
14738            #[allow(dead_code, unreachable_patterns)]
14739            fn _type_assertion(
14740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14741            ) {
14742                match _t {
14743                    alloy_sol_types::private::AssertTypeEq::<
14744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14745                    >(_) => {}
14746                }
14747            }
14748            #[automatically_derived]
14749            #[doc(hidden)]
14750            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
14751                fn from(value: delegationsCall) -> Self {
14752                    (value.validator, value.delegator)
14753                }
14754            }
14755            #[automatically_derived]
14756            #[doc(hidden)]
14757            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
14758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14759                    Self {
14760                        validator: tuple.0,
14761                        delegator: tuple.1,
14762                    }
14763                }
14764            }
14765        }
14766        {
14767            #[doc(hidden)]
14768            #[allow(dead_code)]
14769            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14770            #[doc(hidden)]
14771            type UnderlyingRustTuple<'a> = (
14772                alloy::sol_types::private::primitives::aliases::U256,
14773            );
14774            #[cfg(test)]
14775            #[allow(dead_code, unreachable_patterns)]
14776            fn _type_assertion(
14777                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14778            ) {
14779                match _t {
14780                    alloy_sol_types::private::AssertTypeEq::<
14781                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14782                    >(_) => {}
14783                }
14784            }
14785            #[automatically_derived]
14786            #[doc(hidden)]
14787            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
14788                fn from(value: delegationsReturn) -> Self {
14789                    (value.amount,)
14790                }
14791            }
14792            #[automatically_derived]
14793            #[doc(hidden)]
14794            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
14795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14796                    Self { amount: tuple.0 }
14797                }
14798            }
14799        }
14800        #[automatically_derived]
14801        impl alloy_sol_types::SolCall for delegationsCall {
14802            type Parameters<'a> = (
14803                alloy::sol_types::sol_data::Address,
14804                alloy::sol_types::sol_data::Address,
14805            );
14806            type Token<'a> = <Self::Parameters<
14807                'a,
14808            > as alloy_sol_types::SolType>::Token<'a>;
14809            type Return = alloy::sol_types::private::primitives::aliases::U256;
14810            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14811            type ReturnToken<'a> = <Self::ReturnTuple<
14812                'a,
14813            > as alloy_sol_types::SolType>::Token<'a>;
14814            const SIGNATURE: &'static str = "delegations(address,address)";
14815            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
14816            #[inline]
14817            fn new<'a>(
14818                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14819            ) -> Self {
14820                tuple.into()
14821            }
14822            #[inline]
14823            fn tokenize(&self) -> Self::Token<'_> {
14824                (
14825                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14826                        &self.validator,
14827                    ),
14828                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14829                        &self.delegator,
14830                    ),
14831                )
14832            }
14833            #[inline]
14834            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14835                (
14836                    <alloy::sol_types::sol_data::Uint<
14837                        256,
14838                    > as alloy_sol_types::SolType>::tokenize(ret),
14839                )
14840            }
14841            #[inline]
14842            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14843                <Self::ReturnTuple<
14844                    '_,
14845                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14846                    .map(|r| {
14847                        let r: delegationsReturn = r.into();
14848                        r.amount
14849                    })
14850            }
14851            #[inline]
14852            fn abi_decode_returns_validate(
14853                data: &[u8],
14854            ) -> alloy_sol_types::Result<Self::Return> {
14855                <Self::ReturnTuple<
14856                    '_,
14857                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14858                    .map(|r| {
14859                        let r: delegationsReturn = r.into();
14860                        r.amount
14861                    })
14862            }
14863        }
14864    };
14865    #[derive(serde::Serialize, serde::Deserialize)]
14866    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14867    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
14868```solidity
14869function deregisterValidator() external;
14870```*/
14871    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14872    #[derive(Clone)]
14873    pub struct deregisterValidatorCall;
14874    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
14875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14876    #[derive(Clone)]
14877    pub struct deregisterValidatorReturn {}
14878    #[allow(
14879        non_camel_case_types,
14880        non_snake_case,
14881        clippy::pub_underscore_fields,
14882        clippy::style
14883    )]
14884    const _: () = {
14885        use alloy::sol_types as alloy_sol_types;
14886        {
14887            #[doc(hidden)]
14888            #[allow(dead_code)]
14889            type UnderlyingSolTuple<'a> = ();
14890            #[doc(hidden)]
14891            type UnderlyingRustTuple<'a> = ();
14892            #[cfg(test)]
14893            #[allow(dead_code, unreachable_patterns)]
14894            fn _type_assertion(
14895                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14896            ) {
14897                match _t {
14898                    alloy_sol_types::private::AssertTypeEq::<
14899                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14900                    >(_) => {}
14901                }
14902            }
14903            #[automatically_derived]
14904            #[doc(hidden)]
14905            impl ::core::convert::From<deregisterValidatorCall>
14906            for UnderlyingRustTuple<'_> {
14907                fn from(value: deregisterValidatorCall) -> Self {
14908                    ()
14909                }
14910            }
14911            #[automatically_derived]
14912            #[doc(hidden)]
14913            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14914            for deregisterValidatorCall {
14915                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14916                    Self
14917                }
14918            }
14919        }
14920        {
14921            #[doc(hidden)]
14922            #[allow(dead_code)]
14923            type UnderlyingSolTuple<'a> = ();
14924            #[doc(hidden)]
14925            type UnderlyingRustTuple<'a> = ();
14926            #[cfg(test)]
14927            #[allow(dead_code, unreachable_patterns)]
14928            fn _type_assertion(
14929                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14930            ) {
14931                match _t {
14932                    alloy_sol_types::private::AssertTypeEq::<
14933                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14934                    >(_) => {}
14935                }
14936            }
14937            #[automatically_derived]
14938            #[doc(hidden)]
14939            impl ::core::convert::From<deregisterValidatorReturn>
14940            for UnderlyingRustTuple<'_> {
14941                fn from(value: deregisterValidatorReturn) -> Self {
14942                    ()
14943                }
14944            }
14945            #[automatically_derived]
14946            #[doc(hidden)]
14947            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14948            for deregisterValidatorReturn {
14949                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14950                    Self {}
14951                }
14952            }
14953        }
14954        impl deregisterValidatorReturn {
14955            fn _tokenize(
14956                &self,
14957            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14958                ()
14959            }
14960        }
14961        #[automatically_derived]
14962        impl alloy_sol_types::SolCall for deregisterValidatorCall {
14963            type Parameters<'a> = ();
14964            type Token<'a> = <Self::Parameters<
14965                'a,
14966            > as alloy_sol_types::SolType>::Token<'a>;
14967            type Return = deregisterValidatorReturn;
14968            type ReturnTuple<'a> = ();
14969            type ReturnToken<'a> = <Self::ReturnTuple<
14970                'a,
14971            > as alloy_sol_types::SolType>::Token<'a>;
14972            const SIGNATURE: &'static str = "deregisterValidator()";
14973            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
14974            #[inline]
14975            fn new<'a>(
14976                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14977            ) -> Self {
14978                tuple.into()
14979            }
14980            #[inline]
14981            fn tokenize(&self) -> Self::Token<'_> {
14982                ()
14983            }
14984            #[inline]
14985            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14986                deregisterValidatorReturn::_tokenize(ret)
14987            }
14988            #[inline]
14989            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14990                <Self::ReturnTuple<
14991                    '_,
14992                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14993                    .map(Into::into)
14994            }
14995            #[inline]
14996            fn abi_decode_returns_validate(
14997                data: &[u8],
14998            ) -> alloy_sol_types::Result<Self::Return> {
14999                <Self::ReturnTuple<
15000                    '_,
15001                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15002                    .map(Into::into)
15003            }
15004        }
15005    };
15006    #[derive(serde::Serialize, serde::Deserialize)]
15007    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15008    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
15009```solidity
15010function exitEscrowPeriod() external view returns (uint256);
15011```*/
15012    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15013    #[derive(Clone)]
15014    pub struct exitEscrowPeriodCall;
15015    #[derive(serde::Serialize, serde::Deserialize)]
15016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15017    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
15018    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15019    #[derive(Clone)]
15020    pub struct exitEscrowPeriodReturn {
15021        #[allow(missing_docs)]
15022        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15023    }
15024    #[allow(
15025        non_camel_case_types,
15026        non_snake_case,
15027        clippy::pub_underscore_fields,
15028        clippy::style
15029    )]
15030    const _: () = {
15031        use alloy::sol_types as alloy_sol_types;
15032        {
15033            #[doc(hidden)]
15034            #[allow(dead_code)]
15035            type UnderlyingSolTuple<'a> = ();
15036            #[doc(hidden)]
15037            type UnderlyingRustTuple<'a> = ();
15038            #[cfg(test)]
15039            #[allow(dead_code, unreachable_patterns)]
15040            fn _type_assertion(
15041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15042            ) {
15043                match _t {
15044                    alloy_sol_types::private::AssertTypeEq::<
15045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15046                    >(_) => {}
15047                }
15048            }
15049            #[automatically_derived]
15050            #[doc(hidden)]
15051            impl ::core::convert::From<exitEscrowPeriodCall>
15052            for UnderlyingRustTuple<'_> {
15053                fn from(value: exitEscrowPeriodCall) -> Self {
15054                    ()
15055                }
15056            }
15057            #[automatically_derived]
15058            #[doc(hidden)]
15059            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15060            for exitEscrowPeriodCall {
15061                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15062                    Self
15063                }
15064            }
15065        }
15066        {
15067            #[doc(hidden)]
15068            #[allow(dead_code)]
15069            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15070            #[doc(hidden)]
15071            type UnderlyingRustTuple<'a> = (
15072                alloy::sol_types::private::primitives::aliases::U256,
15073            );
15074            #[cfg(test)]
15075            #[allow(dead_code, unreachable_patterns)]
15076            fn _type_assertion(
15077                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15078            ) {
15079                match _t {
15080                    alloy_sol_types::private::AssertTypeEq::<
15081                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15082                    >(_) => {}
15083                }
15084            }
15085            #[automatically_derived]
15086            #[doc(hidden)]
15087            impl ::core::convert::From<exitEscrowPeriodReturn>
15088            for UnderlyingRustTuple<'_> {
15089                fn from(value: exitEscrowPeriodReturn) -> Self {
15090                    (value._0,)
15091                }
15092            }
15093            #[automatically_derived]
15094            #[doc(hidden)]
15095            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15096            for exitEscrowPeriodReturn {
15097                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15098                    Self { _0: tuple.0 }
15099                }
15100            }
15101        }
15102        #[automatically_derived]
15103        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
15104            type Parameters<'a> = ();
15105            type Token<'a> = <Self::Parameters<
15106                'a,
15107            > as alloy_sol_types::SolType>::Token<'a>;
15108            type Return = alloy::sol_types::private::primitives::aliases::U256;
15109            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15110            type ReturnToken<'a> = <Self::ReturnTuple<
15111                'a,
15112            > as alloy_sol_types::SolType>::Token<'a>;
15113            const SIGNATURE: &'static str = "exitEscrowPeriod()";
15114            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
15115            #[inline]
15116            fn new<'a>(
15117                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15118            ) -> Self {
15119                tuple.into()
15120            }
15121            #[inline]
15122            fn tokenize(&self) -> Self::Token<'_> {
15123                ()
15124            }
15125            #[inline]
15126            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15127                (
15128                    <alloy::sol_types::sol_data::Uint<
15129                        256,
15130                    > as alloy_sol_types::SolType>::tokenize(ret),
15131                )
15132            }
15133            #[inline]
15134            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15135                <Self::ReturnTuple<
15136                    '_,
15137                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15138                    .map(|r| {
15139                        let r: exitEscrowPeriodReturn = r.into();
15140                        r._0
15141                    })
15142            }
15143            #[inline]
15144            fn abi_decode_returns_validate(
15145                data: &[u8],
15146            ) -> alloy_sol_types::Result<Self::Return> {
15147                <Self::ReturnTuple<
15148                    '_,
15149                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15150                    .map(|r| {
15151                        let r: exitEscrowPeriodReturn = r.into();
15152                        r._0
15153                    })
15154            }
15155        }
15156    };
15157    #[derive(serde::Serialize, serde::Deserialize)]
15158    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15159    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
15160```solidity
15161function getRoleAdmin(bytes32 role) external view returns (bytes32);
15162```*/
15163    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15164    #[derive(Clone)]
15165    pub struct getRoleAdminCall {
15166        #[allow(missing_docs)]
15167        pub role: alloy::sol_types::private::FixedBytes<32>,
15168    }
15169    #[derive(serde::Serialize, serde::Deserialize)]
15170    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15171    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
15172    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15173    #[derive(Clone)]
15174    pub struct getRoleAdminReturn {
15175        #[allow(missing_docs)]
15176        pub _0: alloy::sol_types::private::FixedBytes<32>,
15177    }
15178    #[allow(
15179        non_camel_case_types,
15180        non_snake_case,
15181        clippy::pub_underscore_fields,
15182        clippy::style
15183    )]
15184    const _: () = {
15185        use alloy::sol_types as alloy_sol_types;
15186        {
15187            #[doc(hidden)]
15188            #[allow(dead_code)]
15189            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15190            #[doc(hidden)]
15191            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
15192            #[cfg(test)]
15193            #[allow(dead_code, unreachable_patterns)]
15194            fn _type_assertion(
15195                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15196            ) {
15197                match _t {
15198                    alloy_sol_types::private::AssertTypeEq::<
15199                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15200                    >(_) => {}
15201                }
15202            }
15203            #[automatically_derived]
15204            #[doc(hidden)]
15205            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
15206                fn from(value: getRoleAdminCall) -> Self {
15207                    (value.role,)
15208                }
15209            }
15210            #[automatically_derived]
15211            #[doc(hidden)]
15212            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
15213                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15214                    Self { role: tuple.0 }
15215                }
15216            }
15217        }
15218        {
15219            #[doc(hidden)]
15220            #[allow(dead_code)]
15221            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15222            #[doc(hidden)]
15223            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
15224            #[cfg(test)]
15225            #[allow(dead_code, unreachable_patterns)]
15226            fn _type_assertion(
15227                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15228            ) {
15229                match _t {
15230                    alloy_sol_types::private::AssertTypeEq::<
15231                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15232                    >(_) => {}
15233                }
15234            }
15235            #[automatically_derived]
15236            #[doc(hidden)]
15237            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
15238                fn from(value: getRoleAdminReturn) -> Self {
15239                    (value._0,)
15240                }
15241            }
15242            #[automatically_derived]
15243            #[doc(hidden)]
15244            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
15245                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15246                    Self { _0: tuple.0 }
15247                }
15248            }
15249        }
15250        #[automatically_derived]
15251        impl alloy_sol_types::SolCall for getRoleAdminCall {
15252            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15253            type Token<'a> = <Self::Parameters<
15254                'a,
15255            > as alloy_sol_types::SolType>::Token<'a>;
15256            type Return = alloy::sol_types::private::FixedBytes<32>;
15257            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15258            type ReturnToken<'a> = <Self::ReturnTuple<
15259                'a,
15260            > as alloy_sol_types::SolType>::Token<'a>;
15261            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
15262            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
15263            #[inline]
15264            fn new<'a>(
15265                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15266            ) -> Self {
15267                tuple.into()
15268            }
15269            #[inline]
15270            fn tokenize(&self) -> Self::Token<'_> {
15271                (
15272                    <alloy::sol_types::sol_data::FixedBytes<
15273                        32,
15274                    > as alloy_sol_types::SolType>::tokenize(&self.role),
15275                )
15276            }
15277            #[inline]
15278            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15279                (
15280                    <alloy::sol_types::sol_data::FixedBytes<
15281                        32,
15282                    > as alloy_sol_types::SolType>::tokenize(ret),
15283                )
15284            }
15285            #[inline]
15286            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15287                <Self::ReturnTuple<
15288                    '_,
15289                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15290                    .map(|r| {
15291                        let r: getRoleAdminReturn = r.into();
15292                        r._0
15293                    })
15294            }
15295            #[inline]
15296            fn abi_decode_returns_validate(
15297                data: &[u8],
15298            ) -> alloy_sol_types::Result<Self::Return> {
15299                <Self::ReturnTuple<
15300                    '_,
15301                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15302                    .map(|r| {
15303                        let r: getRoleAdminReturn = r.into();
15304                        r._0
15305                    })
15306            }
15307        }
15308    };
15309    #[derive(serde::Serialize, serde::Deserialize)]
15310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15311    /**Function with signature `getUndelegation(address,address)` and selector `0xbb60bfb0`.
15312```solidity
15313function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
15314```*/
15315    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15316    #[derive(Clone)]
15317    pub struct getUndelegationCall {
15318        #[allow(missing_docs)]
15319        pub validator: alloy::sol_types::private::Address,
15320        #[allow(missing_docs)]
15321        pub delegator: alloy::sol_types::private::Address,
15322    }
15323    #[derive(serde::Serialize, serde::Deserialize)]
15324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15325    ///Container type for the return parameters of the [`getUndelegation(address,address)`](getUndelegationCall) function.
15326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15327    #[derive(Clone)]
15328    pub struct getUndelegationReturn {
15329        #[allow(missing_docs)]
15330        pub id: u64,
15331        #[allow(missing_docs)]
15332        pub amount: alloy::sol_types::private::primitives::aliases::U256,
15333        #[allow(missing_docs)]
15334        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
15335    }
15336    #[allow(
15337        non_camel_case_types,
15338        non_snake_case,
15339        clippy::pub_underscore_fields,
15340        clippy::style
15341    )]
15342    const _: () = {
15343        use alloy::sol_types as alloy_sol_types;
15344        {
15345            #[doc(hidden)]
15346            #[allow(dead_code)]
15347            type UnderlyingSolTuple<'a> = (
15348                alloy::sol_types::sol_data::Address,
15349                alloy::sol_types::sol_data::Address,
15350            );
15351            #[doc(hidden)]
15352            type UnderlyingRustTuple<'a> = (
15353                alloy::sol_types::private::Address,
15354                alloy::sol_types::private::Address,
15355            );
15356            #[cfg(test)]
15357            #[allow(dead_code, unreachable_patterns)]
15358            fn _type_assertion(
15359                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15360            ) {
15361                match _t {
15362                    alloy_sol_types::private::AssertTypeEq::<
15363                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15364                    >(_) => {}
15365                }
15366            }
15367            #[automatically_derived]
15368            #[doc(hidden)]
15369            impl ::core::convert::From<getUndelegationCall> for UnderlyingRustTuple<'_> {
15370                fn from(value: getUndelegationCall) -> Self {
15371                    (value.validator, value.delegator)
15372                }
15373            }
15374            #[automatically_derived]
15375            #[doc(hidden)]
15376            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getUndelegationCall {
15377                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15378                    Self {
15379                        validator: tuple.0,
15380                        delegator: tuple.1,
15381                    }
15382                }
15383            }
15384        }
15385        {
15386            #[doc(hidden)]
15387            #[allow(dead_code)]
15388            type UnderlyingSolTuple<'a> = (
15389                alloy::sol_types::sol_data::Uint<64>,
15390                alloy::sol_types::sol_data::Uint<256>,
15391                alloy::sol_types::sol_data::Uint<256>,
15392            );
15393            #[doc(hidden)]
15394            type UnderlyingRustTuple<'a> = (
15395                u64,
15396                alloy::sol_types::private::primitives::aliases::U256,
15397                alloy::sol_types::private::primitives::aliases::U256,
15398            );
15399            #[cfg(test)]
15400            #[allow(dead_code, unreachable_patterns)]
15401            fn _type_assertion(
15402                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15403            ) {
15404                match _t {
15405                    alloy_sol_types::private::AssertTypeEq::<
15406                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15407                    >(_) => {}
15408                }
15409            }
15410            #[automatically_derived]
15411            #[doc(hidden)]
15412            impl ::core::convert::From<getUndelegationReturn>
15413            for UnderlyingRustTuple<'_> {
15414                fn from(value: getUndelegationReturn) -> Self {
15415                    (value.id, value.amount, value.unlocksAt)
15416                }
15417            }
15418            #[automatically_derived]
15419            #[doc(hidden)]
15420            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15421            for getUndelegationReturn {
15422                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15423                    Self {
15424                        id: tuple.0,
15425                        amount: tuple.1,
15426                        unlocksAt: tuple.2,
15427                    }
15428                }
15429            }
15430        }
15431        impl getUndelegationReturn {
15432            fn _tokenize(
15433                &self,
15434            ) -> <getUndelegationCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15435                (
15436                    <alloy::sol_types::sol_data::Uint<
15437                        64,
15438                    > as alloy_sol_types::SolType>::tokenize(&self.id),
15439                    <alloy::sol_types::sol_data::Uint<
15440                        256,
15441                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
15442                    <alloy::sol_types::sol_data::Uint<
15443                        256,
15444                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
15445                )
15446            }
15447        }
15448        #[automatically_derived]
15449        impl alloy_sol_types::SolCall for getUndelegationCall {
15450            type Parameters<'a> = (
15451                alloy::sol_types::sol_data::Address,
15452                alloy::sol_types::sol_data::Address,
15453            );
15454            type Token<'a> = <Self::Parameters<
15455                'a,
15456            > as alloy_sol_types::SolType>::Token<'a>;
15457            type Return = getUndelegationReturn;
15458            type ReturnTuple<'a> = (
15459                alloy::sol_types::sol_data::Uint<64>,
15460                alloy::sol_types::sol_data::Uint<256>,
15461                alloy::sol_types::sol_data::Uint<256>,
15462            );
15463            type ReturnToken<'a> = <Self::ReturnTuple<
15464                'a,
15465            > as alloy_sol_types::SolType>::Token<'a>;
15466            const SIGNATURE: &'static str = "getUndelegation(address,address)";
15467            const SELECTOR: [u8; 4] = [187u8, 96u8, 191u8, 176u8];
15468            #[inline]
15469            fn new<'a>(
15470                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15471            ) -> Self {
15472                tuple.into()
15473            }
15474            #[inline]
15475            fn tokenize(&self) -> Self::Token<'_> {
15476                (
15477                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15478                        &self.validator,
15479                    ),
15480                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15481                        &self.delegator,
15482                    ),
15483                )
15484            }
15485            #[inline]
15486            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15487                getUndelegationReturn::_tokenize(ret)
15488            }
15489            #[inline]
15490            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15491                <Self::ReturnTuple<
15492                    '_,
15493                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15494                    .map(Into::into)
15495            }
15496            #[inline]
15497            fn abi_decode_returns_validate(
15498                data: &[u8],
15499            ) -> alloy_sol_types::Result<Self::Return> {
15500                <Self::ReturnTuple<
15501                    '_,
15502                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15503                    .map(Into::into)
15504            }
15505        }
15506    };
15507    #[derive(serde::Serialize, serde::Deserialize)]
15508    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15509    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
15510```solidity
15511function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
15512```*/
15513    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15514    #[derive(Clone)]
15515    pub struct getVersionCall;
15516    #[derive(serde::Serialize, serde::Deserialize)]
15517    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15518    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
15519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15520    #[derive(Clone)]
15521    pub struct getVersionReturn {
15522        #[allow(missing_docs)]
15523        pub majorVersion: u8,
15524        #[allow(missing_docs)]
15525        pub minorVersion: u8,
15526        #[allow(missing_docs)]
15527        pub patchVersion: u8,
15528    }
15529    #[allow(
15530        non_camel_case_types,
15531        non_snake_case,
15532        clippy::pub_underscore_fields,
15533        clippy::style
15534    )]
15535    const _: () = {
15536        use alloy::sol_types as alloy_sol_types;
15537        {
15538            #[doc(hidden)]
15539            #[allow(dead_code)]
15540            type UnderlyingSolTuple<'a> = ();
15541            #[doc(hidden)]
15542            type UnderlyingRustTuple<'a> = ();
15543            #[cfg(test)]
15544            #[allow(dead_code, unreachable_patterns)]
15545            fn _type_assertion(
15546                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15547            ) {
15548                match _t {
15549                    alloy_sol_types::private::AssertTypeEq::<
15550                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15551                    >(_) => {}
15552                }
15553            }
15554            #[automatically_derived]
15555            #[doc(hidden)]
15556            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
15557                fn from(value: getVersionCall) -> Self {
15558                    ()
15559                }
15560            }
15561            #[automatically_derived]
15562            #[doc(hidden)]
15563            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
15564                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15565                    Self
15566                }
15567            }
15568        }
15569        {
15570            #[doc(hidden)]
15571            #[allow(dead_code)]
15572            type UnderlyingSolTuple<'a> = (
15573                alloy::sol_types::sol_data::Uint<8>,
15574                alloy::sol_types::sol_data::Uint<8>,
15575                alloy::sol_types::sol_data::Uint<8>,
15576            );
15577            #[doc(hidden)]
15578            type UnderlyingRustTuple<'a> = (u8, u8, u8);
15579            #[cfg(test)]
15580            #[allow(dead_code, unreachable_patterns)]
15581            fn _type_assertion(
15582                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15583            ) {
15584                match _t {
15585                    alloy_sol_types::private::AssertTypeEq::<
15586                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15587                    >(_) => {}
15588                }
15589            }
15590            #[automatically_derived]
15591            #[doc(hidden)]
15592            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
15593                fn from(value: getVersionReturn) -> Self {
15594                    (value.majorVersion, value.minorVersion, value.patchVersion)
15595                }
15596            }
15597            #[automatically_derived]
15598            #[doc(hidden)]
15599            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
15600                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15601                    Self {
15602                        majorVersion: tuple.0,
15603                        minorVersion: tuple.1,
15604                        patchVersion: tuple.2,
15605                    }
15606                }
15607            }
15608        }
15609        impl getVersionReturn {
15610            fn _tokenize(
15611                &self,
15612            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15613                (
15614                    <alloy::sol_types::sol_data::Uint<
15615                        8,
15616                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
15617                    <alloy::sol_types::sol_data::Uint<
15618                        8,
15619                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
15620                    <alloy::sol_types::sol_data::Uint<
15621                        8,
15622                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
15623                )
15624            }
15625        }
15626        #[automatically_derived]
15627        impl alloy_sol_types::SolCall for getVersionCall {
15628            type Parameters<'a> = ();
15629            type Token<'a> = <Self::Parameters<
15630                'a,
15631            > as alloy_sol_types::SolType>::Token<'a>;
15632            type Return = getVersionReturn;
15633            type ReturnTuple<'a> = (
15634                alloy::sol_types::sol_data::Uint<8>,
15635                alloy::sol_types::sol_data::Uint<8>,
15636                alloy::sol_types::sol_data::Uint<8>,
15637            );
15638            type ReturnToken<'a> = <Self::ReturnTuple<
15639                'a,
15640            > as alloy_sol_types::SolType>::Token<'a>;
15641            const SIGNATURE: &'static str = "getVersion()";
15642            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
15643            #[inline]
15644            fn new<'a>(
15645                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15646            ) -> Self {
15647                tuple.into()
15648            }
15649            #[inline]
15650            fn tokenize(&self) -> Self::Token<'_> {
15651                ()
15652            }
15653            #[inline]
15654            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15655                getVersionReturn::_tokenize(ret)
15656            }
15657            #[inline]
15658            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15659                <Self::ReturnTuple<
15660                    '_,
15661                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15662                    .map(Into::into)
15663            }
15664            #[inline]
15665            fn abi_decode_returns_validate(
15666                data: &[u8],
15667            ) -> alloy_sol_types::Result<Self::Return> {
15668                <Self::ReturnTuple<
15669                    '_,
15670                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15671                    .map(Into::into)
15672            }
15673        }
15674    };
15675    #[derive(serde::Serialize, serde::Deserialize)]
15676    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15677    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
15678```solidity
15679function grantRole(bytes32 role, address account) external;
15680```*/
15681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15682    #[derive(Clone)]
15683    pub struct grantRoleCall {
15684        #[allow(missing_docs)]
15685        pub role: alloy::sol_types::private::FixedBytes<32>,
15686        #[allow(missing_docs)]
15687        pub account: alloy::sol_types::private::Address,
15688    }
15689    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
15690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15691    #[derive(Clone)]
15692    pub struct grantRoleReturn {}
15693    #[allow(
15694        non_camel_case_types,
15695        non_snake_case,
15696        clippy::pub_underscore_fields,
15697        clippy::style
15698    )]
15699    const _: () = {
15700        use alloy::sol_types as alloy_sol_types;
15701        {
15702            #[doc(hidden)]
15703            #[allow(dead_code)]
15704            type UnderlyingSolTuple<'a> = (
15705                alloy::sol_types::sol_data::FixedBytes<32>,
15706                alloy::sol_types::sol_data::Address,
15707            );
15708            #[doc(hidden)]
15709            type UnderlyingRustTuple<'a> = (
15710                alloy::sol_types::private::FixedBytes<32>,
15711                alloy::sol_types::private::Address,
15712            );
15713            #[cfg(test)]
15714            #[allow(dead_code, unreachable_patterns)]
15715            fn _type_assertion(
15716                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15717            ) {
15718                match _t {
15719                    alloy_sol_types::private::AssertTypeEq::<
15720                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15721                    >(_) => {}
15722                }
15723            }
15724            #[automatically_derived]
15725            #[doc(hidden)]
15726            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
15727                fn from(value: grantRoleCall) -> Self {
15728                    (value.role, value.account)
15729                }
15730            }
15731            #[automatically_derived]
15732            #[doc(hidden)]
15733            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
15734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15735                    Self {
15736                        role: tuple.0,
15737                        account: tuple.1,
15738                    }
15739                }
15740            }
15741        }
15742        {
15743            #[doc(hidden)]
15744            #[allow(dead_code)]
15745            type UnderlyingSolTuple<'a> = ();
15746            #[doc(hidden)]
15747            type UnderlyingRustTuple<'a> = ();
15748            #[cfg(test)]
15749            #[allow(dead_code, unreachable_patterns)]
15750            fn _type_assertion(
15751                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15752            ) {
15753                match _t {
15754                    alloy_sol_types::private::AssertTypeEq::<
15755                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15756                    >(_) => {}
15757                }
15758            }
15759            #[automatically_derived]
15760            #[doc(hidden)]
15761            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
15762                fn from(value: grantRoleReturn) -> Self {
15763                    ()
15764                }
15765            }
15766            #[automatically_derived]
15767            #[doc(hidden)]
15768            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
15769                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15770                    Self {}
15771                }
15772            }
15773        }
15774        impl grantRoleReturn {
15775            fn _tokenize(
15776                &self,
15777            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15778                ()
15779            }
15780        }
15781        #[automatically_derived]
15782        impl alloy_sol_types::SolCall for grantRoleCall {
15783            type Parameters<'a> = (
15784                alloy::sol_types::sol_data::FixedBytes<32>,
15785                alloy::sol_types::sol_data::Address,
15786            );
15787            type Token<'a> = <Self::Parameters<
15788                'a,
15789            > as alloy_sol_types::SolType>::Token<'a>;
15790            type Return = grantRoleReturn;
15791            type ReturnTuple<'a> = ();
15792            type ReturnToken<'a> = <Self::ReturnTuple<
15793                'a,
15794            > as alloy_sol_types::SolType>::Token<'a>;
15795            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
15796            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
15797            #[inline]
15798            fn new<'a>(
15799                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15800            ) -> Self {
15801                tuple.into()
15802            }
15803            #[inline]
15804            fn tokenize(&self) -> Self::Token<'_> {
15805                (
15806                    <alloy::sol_types::sol_data::FixedBytes<
15807                        32,
15808                    > as alloy_sol_types::SolType>::tokenize(&self.role),
15809                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15810                        &self.account,
15811                    ),
15812                )
15813            }
15814            #[inline]
15815            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15816                grantRoleReturn::_tokenize(ret)
15817            }
15818            #[inline]
15819            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15820                <Self::ReturnTuple<
15821                    '_,
15822                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15823                    .map(Into::into)
15824            }
15825            #[inline]
15826            fn abi_decode_returns_validate(
15827                data: &[u8],
15828            ) -> alloy_sol_types::Result<Self::Return> {
15829                <Self::ReturnTuple<
15830                    '_,
15831                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15832                    .map(Into::into)
15833            }
15834        }
15835    };
15836    #[derive(serde::Serialize, serde::Deserialize)]
15837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15838    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
15839```solidity
15840function hasRole(bytes32 role, address account) external view returns (bool);
15841```*/
15842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15843    #[derive(Clone)]
15844    pub struct hasRoleCall {
15845        #[allow(missing_docs)]
15846        pub role: alloy::sol_types::private::FixedBytes<32>,
15847        #[allow(missing_docs)]
15848        pub account: alloy::sol_types::private::Address,
15849    }
15850    #[derive(serde::Serialize, serde::Deserialize)]
15851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15852    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
15853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15854    #[derive(Clone)]
15855    pub struct hasRoleReturn {
15856        #[allow(missing_docs)]
15857        pub _0: bool,
15858    }
15859    #[allow(
15860        non_camel_case_types,
15861        non_snake_case,
15862        clippy::pub_underscore_fields,
15863        clippy::style
15864    )]
15865    const _: () = {
15866        use alloy::sol_types as alloy_sol_types;
15867        {
15868            #[doc(hidden)]
15869            #[allow(dead_code)]
15870            type UnderlyingSolTuple<'a> = (
15871                alloy::sol_types::sol_data::FixedBytes<32>,
15872                alloy::sol_types::sol_data::Address,
15873            );
15874            #[doc(hidden)]
15875            type UnderlyingRustTuple<'a> = (
15876                alloy::sol_types::private::FixedBytes<32>,
15877                alloy::sol_types::private::Address,
15878            );
15879            #[cfg(test)]
15880            #[allow(dead_code, unreachable_patterns)]
15881            fn _type_assertion(
15882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15883            ) {
15884                match _t {
15885                    alloy_sol_types::private::AssertTypeEq::<
15886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15887                    >(_) => {}
15888                }
15889            }
15890            #[automatically_derived]
15891            #[doc(hidden)]
15892            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
15893                fn from(value: hasRoleCall) -> Self {
15894                    (value.role, value.account)
15895                }
15896            }
15897            #[automatically_derived]
15898            #[doc(hidden)]
15899            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
15900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15901                    Self {
15902                        role: tuple.0,
15903                        account: tuple.1,
15904                    }
15905                }
15906            }
15907        }
15908        {
15909            #[doc(hidden)]
15910            #[allow(dead_code)]
15911            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
15912            #[doc(hidden)]
15913            type UnderlyingRustTuple<'a> = (bool,);
15914            #[cfg(test)]
15915            #[allow(dead_code, unreachable_patterns)]
15916            fn _type_assertion(
15917                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15918            ) {
15919                match _t {
15920                    alloy_sol_types::private::AssertTypeEq::<
15921                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15922                    >(_) => {}
15923                }
15924            }
15925            #[automatically_derived]
15926            #[doc(hidden)]
15927            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
15928                fn from(value: hasRoleReturn) -> Self {
15929                    (value._0,)
15930                }
15931            }
15932            #[automatically_derived]
15933            #[doc(hidden)]
15934            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
15935                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15936                    Self { _0: tuple.0 }
15937                }
15938            }
15939        }
15940        #[automatically_derived]
15941        impl alloy_sol_types::SolCall for hasRoleCall {
15942            type Parameters<'a> = (
15943                alloy::sol_types::sol_data::FixedBytes<32>,
15944                alloy::sol_types::sol_data::Address,
15945            );
15946            type Token<'a> = <Self::Parameters<
15947                'a,
15948            > as alloy_sol_types::SolType>::Token<'a>;
15949            type Return = bool;
15950            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
15951            type ReturnToken<'a> = <Self::ReturnTuple<
15952                'a,
15953            > as alloy_sol_types::SolType>::Token<'a>;
15954            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
15955            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
15956            #[inline]
15957            fn new<'a>(
15958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15959            ) -> Self {
15960                tuple.into()
15961            }
15962            #[inline]
15963            fn tokenize(&self) -> Self::Token<'_> {
15964                (
15965                    <alloy::sol_types::sol_data::FixedBytes<
15966                        32,
15967                    > as alloy_sol_types::SolType>::tokenize(&self.role),
15968                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15969                        &self.account,
15970                    ),
15971                )
15972            }
15973            #[inline]
15974            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15975                (
15976                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
15977                        ret,
15978                    ),
15979                )
15980            }
15981            #[inline]
15982            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15983                <Self::ReturnTuple<
15984                    '_,
15985                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15986                    .map(|r| {
15987                        let r: hasRoleReturn = r.into();
15988                        r._0
15989                    })
15990            }
15991            #[inline]
15992            fn abi_decode_returns_validate(
15993                data: &[u8],
15994            ) -> alloy_sol_types::Result<Self::Return> {
15995                <Self::ReturnTuple<
15996                    '_,
15997                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15998                    .map(|r| {
15999                        let r: hasRoleReturn = r.into();
16000                        r._0
16001                    })
16002            }
16003        }
16004    };
16005    #[derive(serde::Serialize, serde::Deserialize)]
16006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16007    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
16008```solidity
16009function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
16010```*/
16011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16012    #[derive(Clone)]
16013    pub struct initializeCall {
16014        #[allow(missing_docs)]
16015        pub _tokenAddress: alloy::sol_types::private::Address,
16016        #[allow(missing_docs)]
16017        pub _lightClientAddress: alloy::sol_types::private::Address,
16018        #[allow(missing_docs)]
16019        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
16020        #[allow(missing_docs)]
16021        pub _timelock: alloy::sol_types::private::Address,
16022    }
16023    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
16024    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16025    #[derive(Clone)]
16026    pub struct initializeReturn {}
16027    #[allow(
16028        non_camel_case_types,
16029        non_snake_case,
16030        clippy::pub_underscore_fields,
16031        clippy::style
16032    )]
16033    const _: () = {
16034        use alloy::sol_types as alloy_sol_types;
16035        {
16036            #[doc(hidden)]
16037            #[allow(dead_code)]
16038            type UnderlyingSolTuple<'a> = (
16039                alloy::sol_types::sol_data::Address,
16040                alloy::sol_types::sol_data::Address,
16041                alloy::sol_types::sol_data::Uint<256>,
16042                alloy::sol_types::sol_data::Address,
16043            );
16044            #[doc(hidden)]
16045            type UnderlyingRustTuple<'a> = (
16046                alloy::sol_types::private::Address,
16047                alloy::sol_types::private::Address,
16048                alloy::sol_types::private::primitives::aliases::U256,
16049                alloy::sol_types::private::Address,
16050            );
16051            #[cfg(test)]
16052            #[allow(dead_code, unreachable_patterns)]
16053            fn _type_assertion(
16054                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16055            ) {
16056                match _t {
16057                    alloy_sol_types::private::AssertTypeEq::<
16058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16059                    >(_) => {}
16060                }
16061            }
16062            #[automatically_derived]
16063            #[doc(hidden)]
16064            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
16065                fn from(value: initializeCall) -> Self {
16066                    (
16067                        value._tokenAddress,
16068                        value._lightClientAddress,
16069                        value._exitEscrowPeriod,
16070                        value._timelock,
16071                    )
16072                }
16073            }
16074            #[automatically_derived]
16075            #[doc(hidden)]
16076            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
16077                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16078                    Self {
16079                        _tokenAddress: tuple.0,
16080                        _lightClientAddress: tuple.1,
16081                        _exitEscrowPeriod: tuple.2,
16082                        _timelock: tuple.3,
16083                    }
16084                }
16085            }
16086        }
16087        {
16088            #[doc(hidden)]
16089            #[allow(dead_code)]
16090            type UnderlyingSolTuple<'a> = ();
16091            #[doc(hidden)]
16092            type UnderlyingRustTuple<'a> = ();
16093            #[cfg(test)]
16094            #[allow(dead_code, unreachable_patterns)]
16095            fn _type_assertion(
16096                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16097            ) {
16098                match _t {
16099                    alloy_sol_types::private::AssertTypeEq::<
16100                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16101                    >(_) => {}
16102                }
16103            }
16104            #[automatically_derived]
16105            #[doc(hidden)]
16106            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
16107                fn from(value: initializeReturn) -> Self {
16108                    ()
16109                }
16110            }
16111            #[automatically_derived]
16112            #[doc(hidden)]
16113            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
16114                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16115                    Self {}
16116                }
16117            }
16118        }
16119        impl initializeReturn {
16120            fn _tokenize(
16121                &self,
16122            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16123                ()
16124            }
16125        }
16126        #[automatically_derived]
16127        impl alloy_sol_types::SolCall for initializeCall {
16128            type Parameters<'a> = (
16129                alloy::sol_types::sol_data::Address,
16130                alloy::sol_types::sol_data::Address,
16131                alloy::sol_types::sol_data::Uint<256>,
16132                alloy::sol_types::sol_data::Address,
16133            );
16134            type Token<'a> = <Self::Parameters<
16135                'a,
16136            > as alloy_sol_types::SolType>::Token<'a>;
16137            type Return = initializeReturn;
16138            type ReturnTuple<'a> = ();
16139            type ReturnToken<'a> = <Self::ReturnTuple<
16140                'a,
16141            > as alloy_sol_types::SolType>::Token<'a>;
16142            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
16143            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
16144            #[inline]
16145            fn new<'a>(
16146                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16147            ) -> Self {
16148                tuple.into()
16149            }
16150            #[inline]
16151            fn tokenize(&self) -> Self::Token<'_> {
16152                (
16153                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16154                        &self._tokenAddress,
16155                    ),
16156                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16157                        &self._lightClientAddress,
16158                    ),
16159                    <alloy::sol_types::sol_data::Uint<
16160                        256,
16161                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
16162                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16163                        &self._timelock,
16164                    ),
16165                )
16166            }
16167            #[inline]
16168            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16169                initializeReturn::_tokenize(ret)
16170            }
16171            #[inline]
16172            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16173                <Self::ReturnTuple<
16174                    '_,
16175                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16176                    .map(Into::into)
16177            }
16178            #[inline]
16179            fn abi_decode_returns_validate(
16180                data: &[u8],
16181            ) -> alloy_sol_types::Result<Self::Return> {
16182                <Self::ReturnTuple<
16183                    '_,
16184                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16185                    .map(Into::into)
16186            }
16187        }
16188    };
16189    #[derive(serde::Serialize, serde::Deserialize)]
16190    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16191    /**Function with signature `initializeV2(address,address,uint256,(address,uint16)[])` and selector `0x52780b6e`.
16192```solidity
16193function initializeV2(address pauser, address admin, uint256 initialActiveStake, StakeTableV2.InitialCommission[] memory initialCommissions) external;
16194```*/
16195    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16196    #[derive(Clone)]
16197    pub struct initializeV2Call {
16198        #[allow(missing_docs)]
16199        pub pauser: alloy::sol_types::private::Address,
16200        #[allow(missing_docs)]
16201        pub admin: alloy::sol_types::private::Address,
16202        #[allow(missing_docs)]
16203        pub initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
16204        #[allow(missing_docs)]
16205        pub initialCommissions: alloy::sol_types::private::Vec<
16206            <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
16207        >,
16208    }
16209    ///Container type for the return parameters of the [`initializeV2(address,address,uint256,(address,uint16)[])`](initializeV2Call) function.
16210    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16211    #[derive(Clone)]
16212    pub struct initializeV2Return {}
16213    #[allow(
16214        non_camel_case_types,
16215        non_snake_case,
16216        clippy::pub_underscore_fields,
16217        clippy::style
16218    )]
16219    const _: () = {
16220        use alloy::sol_types as alloy_sol_types;
16221        {
16222            #[doc(hidden)]
16223            #[allow(dead_code)]
16224            type UnderlyingSolTuple<'a> = (
16225                alloy::sol_types::sol_data::Address,
16226                alloy::sol_types::sol_data::Address,
16227                alloy::sol_types::sol_data::Uint<256>,
16228                alloy::sol_types::sol_data::Array<StakeTableV2::InitialCommission>,
16229            );
16230            #[doc(hidden)]
16231            type UnderlyingRustTuple<'a> = (
16232                alloy::sol_types::private::Address,
16233                alloy::sol_types::private::Address,
16234                alloy::sol_types::private::primitives::aliases::U256,
16235                alloy::sol_types::private::Vec<
16236                    <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
16237                >,
16238            );
16239            #[cfg(test)]
16240            #[allow(dead_code, unreachable_patterns)]
16241            fn _type_assertion(
16242                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16243            ) {
16244                match _t {
16245                    alloy_sol_types::private::AssertTypeEq::<
16246                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16247                    >(_) => {}
16248                }
16249            }
16250            #[automatically_derived]
16251            #[doc(hidden)]
16252            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
16253                fn from(value: initializeV2Call) -> Self {
16254                    (
16255                        value.pauser,
16256                        value.admin,
16257                        value.initialActiveStake,
16258                        value.initialCommissions,
16259                    )
16260                }
16261            }
16262            #[automatically_derived]
16263            #[doc(hidden)]
16264            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
16265                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16266                    Self {
16267                        pauser: tuple.0,
16268                        admin: tuple.1,
16269                        initialActiveStake: tuple.2,
16270                        initialCommissions: tuple.3,
16271                    }
16272                }
16273            }
16274        }
16275        {
16276            #[doc(hidden)]
16277            #[allow(dead_code)]
16278            type UnderlyingSolTuple<'a> = ();
16279            #[doc(hidden)]
16280            type UnderlyingRustTuple<'a> = ();
16281            #[cfg(test)]
16282            #[allow(dead_code, unreachable_patterns)]
16283            fn _type_assertion(
16284                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16285            ) {
16286                match _t {
16287                    alloy_sol_types::private::AssertTypeEq::<
16288                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16289                    >(_) => {}
16290                }
16291            }
16292            #[automatically_derived]
16293            #[doc(hidden)]
16294            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
16295                fn from(value: initializeV2Return) -> Self {
16296                    ()
16297                }
16298            }
16299            #[automatically_derived]
16300            #[doc(hidden)]
16301            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
16302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16303                    Self {}
16304                }
16305            }
16306        }
16307        impl initializeV2Return {
16308            fn _tokenize(
16309                &self,
16310            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
16311                ()
16312            }
16313        }
16314        #[automatically_derived]
16315        impl alloy_sol_types::SolCall for initializeV2Call {
16316            type Parameters<'a> = (
16317                alloy::sol_types::sol_data::Address,
16318                alloy::sol_types::sol_data::Address,
16319                alloy::sol_types::sol_data::Uint<256>,
16320                alloy::sol_types::sol_data::Array<StakeTableV2::InitialCommission>,
16321            );
16322            type Token<'a> = <Self::Parameters<
16323                'a,
16324            > as alloy_sol_types::SolType>::Token<'a>;
16325            type Return = initializeV2Return;
16326            type ReturnTuple<'a> = ();
16327            type ReturnToken<'a> = <Self::ReturnTuple<
16328                'a,
16329            > as alloy_sol_types::SolType>::Token<'a>;
16330            const SIGNATURE: &'static str = "initializeV2(address,address,uint256,(address,uint16)[])";
16331            const SELECTOR: [u8; 4] = [82u8, 120u8, 11u8, 110u8];
16332            #[inline]
16333            fn new<'a>(
16334                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16335            ) -> Self {
16336                tuple.into()
16337            }
16338            #[inline]
16339            fn tokenize(&self) -> Self::Token<'_> {
16340                (
16341                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16342                        &self.pauser,
16343                    ),
16344                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16345                        &self.admin,
16346                    ),
16347                    <alloy::sol_types::sol_data::Uint<
16348                        256,
16349                    > as alloy_sol_types::SolType>::tokenize(&self.initialActiveStake),
16350                    <alloy::sol_types::sol_data::Array<
16351                        StakeTableV2::InitialCommission,
16352                    > as alloy_sol_types::SolType>::tokenize(&self.initialCommissions),
16353                )
16354            }
16355            #[inline]
16356            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16357                initializeV2Return::_tokenize(ret)
16358            }
16359            #[inline]
16360            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16361                <Self::ReturnTuple<
16362                    '_,
16363                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16364                    .map(Into::into)
16365            }
16366            #[inline]
16367            fn abi_decode_returns_validate(
16368                data: &[u8],
16369            ) -> alloy_sol_types::Result<Self::Return> {
16370                <Self::ReturnTuple<
16371                    '_,
16372                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16373                    .map(Into::into)
16374            }
16375        }
16376    };
16377    #[derive(serde::Serialize, serde::Deserialize)]
16378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16379    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
16380```solidity
16381function initializeV3() external;
16382```*/
16383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16384    #[derive(Clone)]
16385    pub struct initializeV3Call;
16386    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
16387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16388    #[derive(Clone)]
16389    pub struct initializeV3Return {}
16390    #[allow(
16391        non_camel_case_types,
16392        non_snake_case,
16393        clippy::pub_underscore_fields,
16394        clippy::style
16395    )]
16396    const _: () = {
16397        use alloy::sol_types as alloy_sol_types;
16398        {
16399            #[doc(hidden)]
16400            #[allow(dead_code)]
16401            type UnderlyingSolTuple<'a> = ();
16402            #[doc(hidden)]
16403            type UnderlyingRustTuple<'a> = ();
16404            #[cfg(test)]
16405            #[allow(dead_code, unreachable_patterns)]
16406            fn _type_assertion(
16407                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16408            ) {
16409                match _t {
16410                    alloy_sol_types::private::AssertTypeEq::<
16411                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16412                    >(_) => {}
16413                }
16414            }
16415            #[automatically_derived]
16416            #[doc(hidden)]
16417            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
16418                fn from(value: initializeV3Call) -> Self {
16419                    ()
16420                }
16421            }
16422            #[automatically_derived]
16423            #[doc(hidden)]
16424            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
16425                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16426                    Self
16427                }
16428            }
16429        }
16430        {
16431            #[doc(hidden)]
16432            #[allow(dead_code)]
16433            type UnderlyingSolTuple<'a> = ();
16434            #[doc(hidden)]
16435            type UnderlyingRustTuple<'a> = ();
16436            #[cfg(test)]
16437            #[allow(dead_code, unreachable_patterns)]
16438            fn _type_assertion(
16439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16440            ) {
16441                match _t {
16442                    alloy_sol_types::private::AssertTypeEq::<
16443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16444                    >(_) => {}
16445                }
16446            }
16447            #[automatically_derived]
16448            #[doc(hidden)]
16449            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
16450                fn from(value: initializeV3Return) -> Self {
16451                    ()
16452                }
16453            }
16454            #[automatically_derived]
16455            #[doc(hidden)]
16456            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
16457                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16458                    Self {}
16459                }
16460            }
16461        }
16462        impl initializeV3Return {
16463            fn _tokenize(
16464                &self,
16465            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
16466                ()
16467            }
16468        }
16469        #[automatically_derived]
16470        impl alloy_sol_types::SolCall for initializeV3Call {
16471            type Parameters<'a> = ();
16472            type Token<'a> = <Self::Parameters<
16473                'a,
16474            > as alloy_sol_types::SolType>::Token<'a>;
16475            type Return = initializeV3Return;
16476            type ReturnTuple<'a> = ();
16477            type ReturnToken<'a> = <Self::ReturnTuple<
16478                'a,
16479            > as alloy_sol_types::SolType>::Token<'a>;
16480            const SIGNATURE: &'static str = "initializeV3()";
16481            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
16482            #[inline]
16483            fn new<'a>(
16484                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16485            ) -> Self {
16486                tuple.into()
16487            }
16488            #[inline]
16489            fn tokenize(&self) -> Self::Token<'_> {
16490                ()
16491            }
16492            #[inline]
16493            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16494                initializeV3Return::_tokenize(ret)
16495            }
16496            #[inline]
16497            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16498                <Self::ReturnTuple<
16499                    '_,
16500                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16501                    .map(Into::into)
16502            }
16503            #[inline]
16504            fn abi_decode_returns_validate(
16505                data: &[u8],
16506            ) -> alloy_sol_types::Result<Self::Return> {
16507                <Self::ReturnTuple<
16508                    '_,
16509                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16510                    .map(Into::into)
16511            }
16512        }
16513    };
16514    #[derive(serde::Serialize, serde::Deserialize)]
16515    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16516    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
16517```solidity
16518function initializedAtBlock() external view returns (uint256);
16519```*/
16520    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16521    #[derive(Clone)]
16522    pub struct initializedAtBlockCall;
16523    #[derive(serde::Serialize, serde::Deserialize)]
16524    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16525    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
16526    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16527    #[derive(Clone)]
16528    pub struct initializedAtBlockReturn {
16529        #[allow(missing_docs)]
16530        pub _0: alloy::sol_types::private::primitives::aliases::U256,
16531    }
16532    #[allow(
16533        non_camel_case_types,
16534        non_snake_case,
16535        clippy::pub_underscore_fields,
16536        clippy::style
16537    )]
16538    const _: () = {
16539        use alloy::sol_types as alloy_sol_types;
16540        {
16541            #[doc(hidden)]
16542            #[allow(dead_code)]
16543            type UnderlyingSolTuple<'a> = ();
16544            #[doc(hidden)]
16545            type UnderlyingRustTuple<'a> = ();
16546            #[cfg(test)]
16547            #[allow(dead_code, unreachable_patterns)]
16548            fn _type_assertion(
16549                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16550            ) {
16551                match _t {
16552                    alloy_sol_types::private::AssertTypeEq::<
16553                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16554                    >(_) => {}
16555                }
16556            }
16557            #[automatically_derived]
16558            #[doc(hidden)]
16559            impl ::core::convert::From<initializedAtBlockCall>
16560            for UnderlyingRustTuple<'_> {
16561                fn from(value: initializedAtBlockCall) -> Self {
16562                    ()
16563                }
16564            }
16565            #[automatically_derived]
16566            #[doc(hidden)]
16567            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16568            for initializedAtBlockCall {
16569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16570                    Self
16571                }
16572            }
16573        }
16574        {
16575            #[doc(hidden)]
16576            #[allow(dead_code)]
16577            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16578            #[doc(hidden)]
16579            type UnderlyingRustTuple<'a> = (
16580                alloy::sol_types::private::primitives::aliases::U256,
16581            );
16582            #[cfg(test)]
16583            #[allow(dead_code, unreachable_patterns)]
16584            fn _type_assertion(
16585                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16586            ) {
16587                match _t {
16588                    alloy_sol_types::private::AssertTypeEq::<
16589                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16590                    >(_) => {}
16591                }
16592            }
16593            #[automatically_derived]
16594            #[doc(hidden)]
16595            impl ::core::convert::From<initializedAtBlockReturn>
16596            for UnderlyingRustTuple<'_> {
16597                fn from(value: initializedAtBlockReturn) -> Self {
16598                    (value._0,)
16599                }
16600            }
16601            #[automatically_derived]
16602            #[doc(hidden)]
16603            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16604            for initializedAtBlockReturn {
16605                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16606                    Self { _0: tuple.0 }
16607                }
16608            }
16609        }
16610        #[automatically_derived]
16611        impl alloy_sol_types::SolCall for initializedAtBlockCall {
16612            type Parameters<'a> = ();
16613            type Token<'a> = <Self::Parameters<
16614                'a,
16615            > as alloy_sol_types::SolType>::Token<'a>;
16616            type Return = alloy::sol_types::private::primitives::aliases::U256;
16617            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16618            type ReturnToken<'a> = <Self::ReturnTuple<
16619                'a,
16620            > as alloy_sol_types::SolType>::Token<'a>;
16621            const SIGNATURE: &'static str = "initializedAtBlock()";
16622            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
16623            #[inline]
16624            fn new<'a>(
16625                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16626            ) -> Self {
16627                tuple.into()
16628            }
16629            #[inline]
16630            fn tokenize(&self) -> Self::Token<'_> {
16631                ()
16632            }
16633            #[inline]
16634            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16635                (
16636                    <alloy::sol_types::sol_data::Uint<
16637                        256,
16638                    > as alloy_sol_types::SolType>::tokenize(ret),
16639                )
16640            }
16641            #[inline]
16642            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16643                <Self::ReturnTuple<
16644                    '_,
16645                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16646                    .map(|r| {
16647                        let r: initializedAtBlockReturn = r.into();
16648                        r._0
16649                    })
16650            }
16651            #[inline]
16652            fn abi_decode_returns_validate(
16653                data: &[u8],
16654            ) -> alloy_sol_types::Result<Self::Return> {
16655                <Self::ReturnTuple<
16656                    '_,
16657                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16658                    .map(|r| {
16659                        let r: initializedAtBlockReturn = r.into();
16660                        r._0
16661                    })
16662            }
16663        }
16664    };
16665    #[derive(serde::Serialize, serde::Deserialize)]
16666    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16667    /**Function with signature `lightClient()` and selector `0xb5700e68`.
16668```solidity
16669function lightClient() external view returns (address);
16670```*/
16671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16672    #[derive(Clone)]
16673    pub struct lightClientCall;
16674    #[derive(serde::Serialize, serde::Deserialize)]
16675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16676    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
16677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16678    #[derive(Clone)]
16679    pub struct lightClientReturn {
16680        #[allow(missing_docs)]
16681        pub _0: alloy::sol_types::private::Address,
16682    }
16683    #[allow(
16684        non_camel_case_types,
16685        non_snake_case,
16686        clippy::pub_underscore_fields,
16687        clippy::style
16688    )]
16689    const _: () = {
16690        use alloy::sol_types as alloy_sol_types;
16691        {
16692            #[doc(hidden)]
16693            #[allow(dead_code)]
16694            type UnderlyingSolTuple<'a> = ();
16695            #[doc(hidden)]
16696            type UnderlyingRustTuple<'a> = ();
16697            #[cfg(test)]
16698            #[allow(dead_code, unreachable_patterns)]
16699            fn _type_assertion(
16700                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16701            ) {
16702                match _t {
16703                    alloy_sol_types::private::AssertTypeEq::<
16704                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16705                    >(_) => {}
16706                }
16707            }
16708            #[automatically_derived]
16709            #[doc(hidden)]
16710            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
16711                fn from(value: lightClientCall) -> Self {
16712                    ()
16713                }
16714            }
16715            #[automatically_derived]
16716            #[doc(hidden)]
16717            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
16718                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16719                    Self
16720                }
16721            }
16722        }
16723        {
16724            #[doc(hidden)]
16725            #[allow(dead_code)]
16726            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
16727            #[doc(hidden)]
16728            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
16729            #[cfg(test)]
16730            #[allow(dead_code, unreachable_patterns)]
16731            fn _type_assertion(
16732                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16733            ) {
16734                match _t {
16735                    alloy_sol_types::private::AssertTypeEq::<
16736                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16737                    >(_) => {}
16738                }
16739            }
16740            #[automatically_derived]
16741            #[doc(hidden)]
16742            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
16743                fn from(value: lightClientReturn) -> Self {
16744                    (value._0,)
16745                }
16746            }
16747            #[automatically_derived]
16748            #[doc(hidden)]
16749            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
16750                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16751                    Self { _0: tuple.0 }
16752                }
16753            }
16754        }
16755        #[automatically_derived]
16756        impl alloy_sol_types::SolCall for lightClientCall {
16757            type Parameters<'a> = ();
16758            type Token<'a> = <Self::Parameters<
16759                'a,
16760            > as alloy_sol_types::SolType>::Token<'a>;
16761            type Return = alloy::sol_types::private::Address;
16762            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
16763            type ReturnToken<'a> = <Self::ReturnTuple<
16764                'a,
16765            > as alloy_sol_types::SolType>::Token<'a>;
16766            const SIGNATURE: &'static str = "lightClient()";
16767            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
16768            #[inline]
16769            fn new<'a>(
16770                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16771            ) -> Self {
16772                tuple.into()
16773            }
16774            #[inline]
16775            fn tokenize(&self) -> Self::Token<'_> {
16776                ()
16777            }
16778            #[inline]
16779            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16780                (
16781                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16782                        ret,
16783                    ),
16784                )
16785            }
16786            #[inline]
16787            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16788                <Self::ReturnTuple<
16789                    '_,
16790                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16791                    .map(|r| {
16792                        let r: lightClientReturn = r.into();
16793                        r._0
16794                    })
16795            }
16796            #[inline]
16797            fn abi_decode_returns_validate(
16798                data: &[u8],
16799            ) -> alloy_sol_types::Result<Self::Return> {
16800                <Self::ReturnTuple<
16801                    '_,
16802                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16803                    .map(|r| {
16804                        let r: lightClientReturn = r.into();
16805                        r._0
16806                    })
16807            }
16808        }
16809    };
16810    #[derive(serde::Serialize, serde::Deserialize)]
16811    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16812    /**Function with signature `maxCommissionIncrease()` and selector `0x3f3bb366`.
16813```solidity
16814function maxCommissionIncrease() external view returns (uint16);
16815```*/
16816    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16817    #[derive(Clone)]
16818    pub struct maxCommissionIncreaseCall;
16819    #[derive(serde::Serialize, serde::Deserialize)]
16820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16821    ///Container type for the return parameters of the [`maxCommissionIncrease()`](maxCommissionIncreaseCall) function.
16822    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16823    #[derive(Clone)]
16824    pub struct maxCommissionIncreaseReturn {
16825        #[allow(missing_docs)]
16826        pub _0: u16,
16827    }
16828    #[allow(
16829        non_camel_case_types,
16830        non_snake_case,
16831        clippy::pub_underscore_fields,
16832        clippy::style
16833    )]
16834    const _: () = {
16835        use alloy::sol_types as alloy_sol_types;
16836        {
16837            #[doc(hidden)]
16838            #[allow(dead_code)]
16839            type UnderlyingSolTuple<'a> = ();
16840            #[doc(hidden)]
16841            type UnderlyingRustTuple<'a> = ();
16842            #[cfg(test)]
16843            #[allow(dead_code, unreachable_patterns)]
16844            fn _type_assertion(
16845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16846            ) {
16847                match _t {
16848                    alloy_sol_types::private::AssertTypeEq::<
16849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16850                    >(_) => {}
16851                }
16852            }
16853            #[automatically_derived]
16854            #[doc(hidden)]
16855            impl ::core::convert::From<maxCommissionIncreaseCall>
16856            for UnderlyingRustTuple<'_> {
16857                fn from(value: maxCommissionIncreaseCall) -> Self {
16858                    ()
16859                }
16860            }
16861            #[automatically_derived]
16862            #[doc(hidden)]
16863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16864            for maxCommissionIncreaseCall {
16865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16866                    Self
16867                }
16868            }
16869        }
16870        {
16871            #[doc(hidden)]
16872            #[allow(dead_code)]
16873            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
16874            #[doc(hidden)]
16875            type UnderlyingRustTuple<'a> = (u16,);
16876            #[cfg(test)]
16877            #[allow(dead_code, unreachable_patterns)]
16878            fn _type_assertion(
16879                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16880            ) {
16881                match _t {
16882                    alloy_sol_types::private::AssertTypeEq::<
16883                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16884                    >(_) => {}
16885                }
16886            }
16887            #[automatically_derived]
16888            #[doc(hidden)]
16889            impl ::core::convert::From<maxCommissionIncreaseReturn>
16890            for UnderlyingRustTuple<'_> {
16891                fn from(value: maxCommissionIncreaseReturn) -> Self {
16892                    (value._0,)
16893                }
16894            }
16895            #[automatically_derived]
16896            #[doc(hidden)]
16897            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16898            for maxCommissionIncreaseReturn {
16899                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16900                    Self { _0: tuple.0 }
16901                }
16902            }
16903        }
16904        #[automatically_derived]
16905        impl alloy_sol_types::SolCall for maxCommissionIncreaseCall {
16906            type Parameters<'a> = ();
16907            type Token<'a> = <Self::Parameters<
16908                'a,
16909            > as alloy_sol_types::SolType>::Token<'a>;
16910            type Return = u16;
16911            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
16912            type ReturnToken<'a> = <Self::ReturnTuple<
16913                'a,
16914            > as alloy_sol_types::SolType>::Token<'a>;
16915            const SIGNATURE: &'static str = "maxCommissionIncrease()";
16916            const SELECTOR: [u8; 4] = [63u8, 59u8, 179u8, 102u8];
16917            #[inline]
16918            fn new<'a>(
16919                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16920            ) -> Self {
16921                tuple.into()
16922            }
16923            #[inline]
16924            fn tokenize(&self) -> Self::Token<'_> {
16925                ()
16926            }
16927            #[inline]
16928            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16929                (
16930                    <alloy::sol_types::sol_data::Uint<
16931                        16,
16932                    > as alloy_sol_types::SolType>::tokenize(ret),
16933                )
16934            }
16935            #[inline]
16936            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16937                <Self::ReturnTuple<
16938                    '_,
16939                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16940                    .map(|r| {
16941                        let r: maxCommissionIncreaseReturn = r.into();
16942                        r._0
16943                    })
16944            }
16945            #[inline]
16946            fn abi_decode_returns_validate(
16947                data: &[u8],
16948            ) -> alloy_sol_types::Result<Self::Return> {
16949                <Self::ReturnTuple<
16950                    '_,
16951                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16952                    .map(|r| {
16953                        let r: maxCommissionIncreaseReturn = r.into();
16954                        r._0
16955                    })
16956            }
16957        }
16958    };
16959    #[derive(serde::Serialize, serde::Deserialize)]
16960    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16961    /**Function with signature `minCommissionIncreaseInterval()` and selector `0xd9cc7d26`.
16962```solidity
16963function minCommissionIncreaseInterval() external view returns (uint256);
16964```*/
16965    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16966    #[derive(Clone)]
16967    pub struct minCommissionIncreaseIntervalCall;
16968    #[derive(serde::Serialize, serde::Deserialize)]
16969    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16970    ///Container type for the return parameters of the [`minCommissionIncreaseInterval()`](minCommissionIncreaseIntervalCall) function.
16971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16972    #[derive(Clone)]
16973    pub struct minCommissionIncreaseIntervalReturn {
16974        #[allow(missing_docs)]
16975        pub _0: alloy::sol_types::private::primitives::aliases::U256,
16976    }
16977    #[allow(
16978        non_camel_case_types,
16979        non_snake_case,
16980        clippy::pub_underscore_fields,
16981        clippy::style
16982    )]
16983    const _: () = {
16984        use alloy::sol_types as alloy_sol_types;
16985        {
16986            #[doc(hidden)]
16987            #[allow(dead_code)]
16988            type UnderlyingSolTuple<'a> = ();
16989            #[doc(hidden)]
16990            type UnderlyingRustTuple<'a> = ();
16991            #[cfg(test)]
16992            #[allow(dead_code, unreachable_patterns)]
16993            fn _type_assertion(
16994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16995            ) {
16996                match _t {
16997                    alloy_sol_types::private::AssertTypeEq::<
16998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16999                    >(_) => {}
17000                }
17001            }
17002            #[automatically_derived]
17003            #[doc(hidden)]
17004            impl ::core::convert::From<minCommissionIncreaseIntervalCall>
17005            for UnderlyingRustTuple<'_> {
17006                fn from(value: minCommissionIncreaseIntervalCall) -> Self {
17007                    ()
17008                }
17009            }
17010            #[automatically_derived]
17011            #[doc(hidden)]
17012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17013            for minCommissionIncreaseIntervalCall {
17014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17015                    Self
17016                }
17017            }
17018        }
17019        {
17020            #[doc(hidden)]
17021            #[allow(dead_code)]
17022            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17023            #[doc(hidden)]
17024            type UnderlyingRustTuple<'a> = (
17025                alloy::sol_types::private::primitives::aliases::U256,
17026            );
17027            #[cfg(test)]
17028            #[allow(dead_code, unreachable_patterns)]
17029            fn _type_assertion(
17030                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17031            ) {
17032                match _t {
17033                    alloy_sol_types::private::AssertTypeEq::<
17034                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17035                    >(_) => {}
17036                }
17037            }
17038            #[automatically_derived]
17039            #[doc(hidden)]
17040            impl ::core::convert::From<minCommissionIncreaseIntervalReturn>
17041            for UnderlyingRustTuple<'_> {
17042                fn from(value: minCommissionIncreaseIntervalReturn) -> Self {
17043                    (value._0,)
17044                }
17045            }
17046            #[automatically_derived]
17047            #[doc(hidden)]
17048            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17049            for minCommissionIncreaseIntervalReturn {
17050                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17051                    Self { _0: tuple.0 }
17052                }
17053            }
17054        }
17055        #[automatically_derived]
17056        impl alloy_sol_types::SolCall for minCommissionIncreaseIntervalCall {
17057            type Parameters<'a> = ();
17058            type Token<'a> = <Self::Parameters<
17059                'a,
17060            > as alloy_sol_types::SolType>::Token<'a>;
17061            type Return = alloy::sol_types::private::primitives::aliases::U256;
17062            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17063            type ReturnToken<'a> = <Self::ReturnTuple<
17064                'a,
17065            > as alloy_sol_types::SolType>::Token<'a>;
17066            const SIGNATURE: &'static str = "minCommissionIncreaseInterval()";
17067            const SELECTOR: [u8; 4] = [217u8, 204u8, 125u8, 38u8];
17068            #[inline]
17069            fn new<'a>(
17070                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17071            ) -> Self {
17072                tuple.into()
17073            }
17074            #[inline]
17075            fn tokenize(&self) -> Self::Token<'_> {
17076                ()
17077            }
17078            #[inline]
17079            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17080                (
17081                    <alloy::sol_types::sol_data::Uint<
17082                        256,
17083                    > as alloy_sol_types::SolType>::tokenize(ret),
17084                )
17085            }
17086            #[inline]
17087            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17088                <Self::ReturnTuple<
17089                    '_,
17090                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17091                    .map(|r| {
17092                        let r: minCommissionIncreaseIntervalReturn = r.into();
17093                        r._0
17094                    })
17095            }
17096            #[inline]
17097            fn abi_decode_returns_validate(
17098                data: &[u8],
17099            ) -> alloy_sol_types::Result<Self::Return> {
17100                <Self::ReturnTuple<
17101                    '_,
17102                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17103                    .map(|r| {
17104                        let r: minCommissionIncreaseIntervalReturn = r.into();
17105                        r._0
17106                    })
17107            }
17108        }
17109    };
17110    #[derive(serde::Serialize, serde::Deserialize)]
17111    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17112    /**Function with signature `minDelegateAmount()` and selector `0x72e9c934`.
17113```solidity
17114function minDelegateAmount() external view returns (uint256);
17115```*/
17116    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17117    #[derive(Clone)]
17118    pub struct minDelegateAmountCall;
17119    #[derive(serde::Serialize, serde::Deserialize)]
17120    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17121    ///Container type for the return parameters of the [`minDelegateAmount()`](minDelegateAmountCall) function.
17122    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17123    #[derive(Clone)]
17124    pub struct minDelegateAmountReturn {
17125        #[allow(missing_docs)]
17126        pub _0: alloy::sol_types::private::primitives::aliases::U256,
17127    }
17128    #[allow(
17129        non_camel_case_types,
17130        non_snake_case,
17131        clippy::pub_underscore_fields,
17132        clippy::style
17133    )]
17134    const _: () = {
17135        use alloy::sol_types as alloy_sol_types;
17136        {
17137            #[doc(hidden)]
17138            #[allow(dead_code)]
17139            type UnderlyingSolTuple<'a> = ();
17140            #[doc(hidden)]
17141            type UnderlyingRustTuple<'a> = ();
17142            #[cfg(test)]
17143            #[allow(dead_code, unreachable_patterns)]
17144            fn _type_assertion(
17145                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17146            ) {
17147                match _t {
17148                    alloy_sol_types::private::AssertTypeEq::<
17149                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17150                    >(_) => {}
17151                }
17152            }
17153            #[automatically_derived]
17154            #[doc(hidden)]
17155            impl ::core::convert::From<minDelegateAmountCall>
17156            for UnderlyingRustTuple<'_> {
17157                fn from(value: minDelegateAmountCall) -> Self {
17158                    ()
17159                }
17160            }
17161            #[automatically_derived]
17162            #[doc(hidden)]
17163            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17164            for minDelegateAmountCall {
17165                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17166                    Self
17167                }
17168            }
17169        }
17170        {
17171            #[doc(hidden)]
17172            #[allow(dead_code)]
17173            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17174            #[doc(hidden)]
17175            type UnderlyingRustTuple<'a> = (
17176                alloy::sol_types::private::primitives::aliases::U256,
17177            );
17178            #[cfg(test)]
17179            #[allow(dead_code, unreachable_patterns)]
17180            fn _type_assertion(
17181                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17182            ) {
17183                match _t {
17184                    alloy_sol_types::private::AssertTypeEq::<
17185                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17186                    >(_) => {}
17187                }
17188            }
17189            #[automatically_derived]
17190            #[doc(hidden)]
17191            impl ::core::convert::From<minDelegateAmountReturn>
17192            for UnderlyingRustTuple<'_> {
17193                fn from(value: minDelegateAmountReturn) -> Self {
17194                    (value._0,)
17195                }
17196            }
17197            #[automatically_derived]
17198            #[doc(hidden)]
17199            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17200            for minDelegateAmountReturn {
17201                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17202                    Self { _0: tuple.0 }
17203                }
17204            }
17205        }
17206        #[automatically_derived]
17207        impl alloy_sol_types::SolCall for minDelegateAmountCall {
17208            type Parameters<'a> = ();
17209            type Token<'a> = <Self::Parameters<
17210                'a,
17211            > as alloy_sol_types::SolType>::Token<'a>;
17212            type Return = alloy::sol_types::private::primitives::aliases::U256;
17213            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17214            type ReturnToken<'a> = <Self::ReturnTuple<
17215                'a,
17216            > as alloy_sol_types::SolType>::Token<'a>;
17217            const SIGNATURE: &'static str = "minDelegateAmount()";
17218            const SELECTOR: [u8; 4] = [114u8, 233u8, 201u8, 52u8];
17219            #[inline]
17220            fn new<'a>(
17221                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17222            ) -> Self {
17223                tuple.into()
17224            }
17225            #[inline]
17226            fn tokenize(&self) -> Self::Token<'_> {
17227                ()
17228            }
17229            #[inline]
17230            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17231                (
17232                    <alloy::sol_types::sol_data::Uint<
17233                        256,
17234                    > as alloy_sol_types::SolType>::tokenize(ret),
17235                )
17236            }
17237            #[inline]
17238            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17239                <Self::ReturnTuple<
17240                    '_,
17241                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17242                    .map(|r| {
17243                        let r: minDelegateAmountReturn = r.into();
17244                        r._0
17245                    })
17246            }
17247            #[inline]
17248            fn abi_decode_returns_validate(
17249                data: &[u8],
17250            ) -> alloy_sol_types::Result<Self::Return> {
17251                <Self::ReturnTuple<
17252                    '_,
17253                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17254                    .map(|r| {
17255                        let r: minDelegateAmountReturn = r.into();
17256                        r._0
17257                    })
17258            }
17259        }
17260    };
17261    #[derive(serde::Serialize, serde::Deserialize)]
17262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17263    /**Function with signature `owner()` and selector `0x8da5cb5b`.
17264```solidity
17265function owner() external view returns (address);
17266```*/
17267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17268    #[derive(Clone)]
17269    pub struct ownerCall;
17270    #[derive(serde::Serialize, serde::Deserialize)]
17271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17272    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
17273    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17274    #[derive(Clone)]
17275    pub struct ownerReturn {
17276        #[allow(missing_docs)]
17277        pub _0: alloy::sol_types::private::Address,
17278    }
17279    #[allow(
17280        non_camel_case_types,
17281        non_snake_case,
17282        clippy::pub_underscore_fields,
17283        clippy::style
17284    )]
17285    const _: () = {
17286        use alloy::sol_types as alloy_sol_types;
17287        {
17288            #[doc(hidden)]
17289            #[allow(dead_code)]
17290            type UnderlyingSolTuple<'a> = ();
17291            #[doc(hidden)]
17292            type UnderlyingRustTuple<'a> = ();
17293            #[cfg(test)]
17294            #[allow(dead_code, unreachable_patterns)]
17295            fn _type_assertion(
17296                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17297            ) {
17298                match _t {
17299                    alloy_sol_types::private::AssertTypeEq::<
17300                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17301                    >(_) => {}
17302                }
17303            }
17304            #[automatically_derived]
17305            #[doc(hidden)]
17306            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
17307                fn from(value: ownerCall) -> Self {
17308                    ()
17309                }
17310            }
17311            #[automatically_derived]
17312            #[doc(hidden)]
17313            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
17314                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17315                    Self
17316                }
17317            }
17318        }
17319        {
17320            #[doc(hidden)]
17321            #[allow(dead_code)]
17322            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17323            #[doc(hidden)]
17324            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17325            #[cfg(test)]
17326            #[allow(dead_code, unreachable_patterns)]
17327            fn _type_assertion(
17328                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17329            ) {
17330                match _t {
17331                    alloy_sol_types::private::AssertTypeEq::<
17332                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17333                    >(_) => {}
17334                }
17335            }
17336            #[automatically_derived]
17337            #[doc(hidden)]
17338            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
17339                fn from(value: ownerReturn) -> Self {
17340                    (value._0,)
17341                }
17342            }
17343            #[automatically_derived]
17344            #[doc(hidden)]
17345            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
17346                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17347                    Self { _0: tuple.0 }
17348                }
17349            }
17350        }
17351        #[automatically_derived]
17352        impl alloy_sol_types::SolCall for ownerCall {
17353            type Parameters<'a> = ();
17354            type Token<'a> = <Self::Parameters<
17355                'a,
17356            > as alloy_sol_types::SolType>::Token<'a>;
17357            type Return = alloy::sol_types::private::Address;
17358            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
17359            type ReturnToken<'a> = <Self::ReturnTuple<
17360                'a,
17361            > as alloy_sol_types::SolType>::Token<'a>;
17362            const SIGNATURE: &'static str = "owner()";
17363            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
17364            #[inline]
17365            fn new<'a>(
17366                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17367            ) -> Self {
17368                tuple.into()
17369            }
17370            #[inline]
17371            fn tokenize(&self) -> Self::Token<'_> {
17372                ()
17373            }
17374            #[inline]
17375            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17376                (
17377                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17378                        ret,
17379                    ),
17380                )
17381            }
17382            #[inline]
17383            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17384                <Self::ReturnTuple<
17385                    '_,
17386                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17387                    .map(|r| {
17388                        let r: ownerReturn = r.into();
17389                        r._0
17390                    })
17391            }
17392            #[inline]
17393            fn abi_decode_returns_validate(
17394                data: &[u8],
17395            ) -> alloy_sol_types::Result<Self::Return> {
17396                <Self::ReturnTuple<
17397                    '_,
17398                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17399                    .map(|r| {
17400                        let r: ownerReturn = r.into();
17401                        r._0
17402                    })
17403            }
17404        }
17405    };
17406    #[derive(serde::Serialize, serde::Deserialize)]
17407    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17408    /**Function with signature `pause()` and selector `0x8456cb59`.
17409```solidity
17410function pause() external;
17411```*/
17412    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17413    #[derive(Clone)]
17414    pub struct pauseCall;
17415    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
17416    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17417    #[derive(Clone)]
17418    pub struct pauseReturn {}
17419    #[allow(
17420        non_camel_case_types,
17421        non_snake_case,
17422        clippy::pub_underscore_fields,
17423        clippy::style
17424    )]
17425    const _: () = {
17426        use alloy::sol_types as alloy_sol_types;
17427        {
17428            #[doc(hidden)]
17429            #[allow(dead_code)]
17430            type UnderlyingSolTuple<'a> = ();
17431            #[doc(hidden)]
17432            type UnderlyingRustTuple<'a> = ();
17433            #[cfg(test)]
17434            #[allow(dead_code, unreachable_patterns)]
17435            fn _type_assertion(
17436                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17437            ) {
17438                match _t {
17439                    alloy_sol_types::private::AssertTypeEq::<
17440                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17441                    >(_) => {}
17442                }
17443            }
17444            #[automatically_derived]
17445            #[doc(hidden)]
17446            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
17447                fn from(value: pauseCall) -> Self {
17448                    ()
17449                }
17450            }
17451            #[automatically_derived]
17452            #[doc(hidden)]
17453            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
17454                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17455                    Self
17456                }
17457            }
17458        }
17459        {
17460            #[doc(hidden)]
17461            #[allow(dead_code)]
17462            type UnderlyingSolTuple<'a> = ();
17463            #[doc(hidden)]
17464            type UnderlyingRustTuple<'a> = ();
17465            #[cfg(test)]
17466            #[allow(dead_code, unreachable_patterns)]
17467            fn _type_assertion(
17468                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17469            ) {
17470                match _t {
17471                    alloy_sol_types::private::AssertTypeEq::<
17472                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17473                    >(_) => {}
17474                }
17475            }
17476            #[automatically_derived]
17477            #[doc(hidden)]
17478            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
17479                fn from(value: pauseReturn) -> Self {
17480                    ()
17481                }
17482            }
17483            #[automatically_derived]
17484            #[doc(hidden)]
17485            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
17486                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17487                    Self {}
17488                }
17489            }
17490        }
17491        impl pauseReturn {
17492            fn _tokenize(
17493                &self,
17494            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17495                ()
17496            }
17497        }
17498        #[automatically_derived]
17499        impl alloy_sol_types::SolCall for pauseCall {
17500            type Parameters<'a> = ();
17501            type Token<'a> = <Self::Parameters<
17502                'a,
17503            > as alloy_sol_types::SolType>::Token<'a>;
17504            type Return = pauseReturn;
17505            type ReturnTuple<'a> = ();
17506            type ReturnToken<'a> = <Self::ReturnTuple<
17507                'a,
17508            > as alloy_sol_types::SolType>::Token<'a>;
17509            const SIGNATURE: &'static str = "pause()";
17510            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
17511            #[inline]
17512            fn new<'a>(
17513                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17514            ) -> Self {
17515                tuple.into()
17516            }
17517            #[inline]
17518            fn tokenize(&self) -> Self::Token<'_> {
17519                ()
17520            }
17521            #[inline]
17522            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17523                pauseReturn::_tokenize(ret)
17524            }
17525            #[inline]
17526            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17527                <Self::ReturnTuple<
17528                    '_,
17529                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17530                    .map(Into::into)
17531            }
17532            #[inline]
17533            fn abi_decode_returns_validate(
17534                data: &[u8],
17535            ) -> alloy_sol_types::Result<Self::Return> {
17536                <Self::ReturnTuple<
17537                    '_,
17538                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17539                    .map(Into::into)
17540            }
17541        }
17542    };
17543    #[derive(serde::Serialize, serde::Deserialize)]
17544    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17545    /**Function with signature `paused()` and selector `0x5c975abb`.
17546```solidity
17547function paused() external view returns (bool);
17548```*/
17549    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17550    #[derive(Clone)]
17551    pub struct pausedCall;
17552    #[derive(serde::Serialize, serde::Deserialize)]
17553    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17554    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
17555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17556    #[derive(Clone)]
17557    pub struct pausedReturn {
17558        #[allow(missing_docs)]
17559        pub _0: bool,
17560    }
17561    #[allow(
17562        non_camel_case_types,
17563        non_snake_case,
17564        clippy::pub_underscore_fields,
17565        clippy::style
17566    )]
17567    const _: () = {
17568        use alloy::sol_types as alloy_sol_types;
17569        {
17570            #[doc(hidden)]
17571            #[allow(dead_code)]
17572            type UnderlyingSolTuple<'a> = ();
17573            #[doc(hidden)]
17574            type UnderlyingRustTuple<'a> = ();
17575            #[cfg(test)]
17576            #[allow(dead_code, unreachable_patterns)]
17577            fn _type_assertion(
17578                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17579            ) {
17580                match _t {
17581                    alloy_sol_types::private::AssertTypeEq::<
17582                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17583                    >(_) => {}
17584                }
17585            }
17586            #[automatically_derived]
17587            #[doc(hidden)]
17588            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
17589                fn from(value: pausedCall) -> Self {
17590                    ()
17591                }
17592            }
17593            #[automatically_derived]
17594            #[doc(hidden)]
17595            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
17596                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17597                    Self
17598                }
17599            }
17600        }
17601        {
17602            #[doc(hidden)]
17603            #[allow(dead_code)]
17604            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17605            #[doc(hidden)]
17606            type UnderlyingRustTuple<'a> = (bool,);
17607            #[cfg(test)]
17608            #[allow(dead_code, unreachable_patterns)]
17609            fn _type_assertion(
17610                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17611            ) {
17612                match _t {
17613                    alloy_sol_types::private::AssertTypeEq::<
17614                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17615                    >(_) => {}
17616                }
17617            }
17618            #[automatically_derived]
17619            #[doc(hidden)]
17620            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
17621                fn from(value: pausedReturn) -> Self {
17622                    (value._0,)
17623                }
17624            }
17625            #[automatically_derived]
17626            #[doc(hidden)]
17627            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
17628                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17629                    Self { _0: tuple.0 }
17630                }
17631            }
17632        }
17633        #[automatically_derived]
17634        impl alloy_sol_types::SolCall for pausedCall {
17635            type Parameters<'a> = ();
17636            type Token<'a> = <Self::Parameters<
17637                'a,
17638            > as alloy_sol_types::SolType>::Token<'a>;
17639            type Return = bool;
17640            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17641            type ReturnToken<'a> = <Self::ReturnTuple<
17642                'a,
17643            > as alloy_sol_types::SolType>::Token<'a>;
17644            const SIGNATURE: &'static str = "paused()";
17645            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
17646            #[inline]
17647            fn new<'a>(
17648                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17649            ) -> Self {
17650                tuple.into()
17651            }
17652            #[inline]
17653            fn tokenize(&self) -> Self::Token<'_> {
17654                ()
17655            }
17656            #[inline]
17657            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17658                (
17659                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
17660                        ret,
17661                    ),
17662                )
17663            }
17664            #[inline]
17665            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17666                <Self::ReturnTuple<
17667                    '_,
17668                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17669                    .map(|r| {
17670                        let r: pausedReturn = r.into();
17671                        r._0
17672                    })
17673            }
17674            #[inline]
17675            fn abi_decode_returns_validate(
17676                data: &[u8],
17677            ) -> alloy_sol_types::Result<Self::Return> {
17678                <Self::ReturnTuple<
17679                    '_,
17680                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17681                    .map(|r| {
17682                        let r: pausedReturn = r.into();
17683                        r._0
17684                    })
17685            }
17686        }
17687    };
17688    #[derive(serde::Serialize, serde::Deserialize)]
17689    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17690    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
17691```solidity
17692function proxiableUUID() external view returns (bytes32);
17693```*/
17694    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17695    #[derive(Clone)]
17696    pub struct proxiableUUIDCall;
17697    #[derive(serde::Serialize, serde::Deserialize)]
17698    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17699    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
17700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17701    #[derive(Clone)]
17702    pub struct proxiableUUIDReturn {
17703        #[allow(missing_docs)]
17704        pub _0: alloy::sol_types::private::FixedBytes<32>,
17705    }
17706    #[allow(
17707        non_camel_case_types,
17708        non_snake_case,
17709        clippy::pub_underscore_fields,
17710        clippy::style
17711    )]
17712    const _: () = {
17713        use alloy::sol_types as alloy_sol_types;
17714        {
17715            #[doc(hidden)]
17716            #[allow(dead_code)]
17717            type UnderlyingSolTuple<'a> = ();
17718            #[doc(hidden)]
17719            type UnderlyingRustTuple<'a> = ();
17720            #[cfg(test)]
17721            #[allow(dead_code, unreachable_patterns)]
17722            fn _type_assertion(
17723                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17724            ) {
17725                match _t {
17726                    alloy_sol_types::private::AssertTypeEq::<
17727                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17728                    >(_) => {}
17729                }
17730            }
17731            #[automatically_derived]
17732            #[doc(hidden)]
17733            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
17734                fn from(value: proxiableUUIDCall) -> Self {
17735                    ()
17736                }
17737            }
17738            #[automatically_derived]
17739            #[doc(hidden)]
17740            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
17741                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17742                    Self
17743                }
17744            }
17745        }
17746        {
17747            #[doc(hidden)]
17748            #[allow(dead_code)]
17749            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17750            #[doc(hidden)]
17751            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
17752            #[cfg(test)]
17753            #[allow(dead_code, unreachable_patterns)]
17754            fn _type_assertion(
17755                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17756            ) {
17757                match _t {
17758                    alloy_sol_types::private::AssertTypeEq::<
17759                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17760                    >(_) => {}
17761                }
17762            }
17763            #[automatically_derived]
17764            #[doc(hidden)]
17765            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
17766                fn from(value: proxiableUUIDReturn) -> Self {
17767                    (value._0,)
17768                }
17769            }
17770            #[automatically_derived]
17771            #[doc(hidden)]
17772            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
17773                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17774                    Self { _0: tuple.0 }
17775                }
17776            }
17777        }
17778        #[automatically_derived]
17779        impl alloy_sol_types::SolCall for proxiableUUIDCall {
17780            type Parameters<'a> = ();
17781            type Token<'a> = <Self::Parameters<
17782                'a,
17783            > as alloy_sol_types::SolType>::Token<'a>;
17784            type Return = alloy::sol_types::private::FixedBytes<32>;
17785            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17786            type ReturnToken<'a> = <Self::ReturnTuple<
17787                'a,
17788            > as alloy_sol_types::SolType>::Token<'a>;
17789            const SIGNATURE: &'static str = "proxiableUUID()";
17790            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
17791            #[inline]
17792            fn new<'a>(
17793                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17794            ) -> Self {
17795                tuple.into()
17796            }
17797            #[inline]
17798            fn tokenize(&self) -> Self::Token<'_> {
17799                ()
17800            }
17801            #[inline]
17802            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17803                (
17804                    <alloy::sol_types::sol_data::FixedBytes<
17805                        32,
17806                    > as alloy_sol_types::SolType>::tokenize(ret),
17807                )
17808            }
17809            #[inline]
17810            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17811                <Self::ReturnTuple<
17812                    '_,
17813                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17814                    .map(|r| {
17815                        let r: proxiableUUIDReturn = r.into();
17816                        r._0
17817                    })
17818            }
17819            #[inline]
17820            fn abi_decode_returns_validate(
17821                data: &[u8],
17822            ) -> alloy_sol_types::Result<Self::Return> {
17823                <Self::ReturnTuple<
17824                    '_,
17825                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17826                    .map(|r| {
17827                        let r: proxiableUUIDReturn = r.into();
17828                        r._0
17829                    })
17830            }
17831        }
17832    };
17833    #[derive(serde::Serialize, serde::Deserialize)]
17834    #[derive()]
17835    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
17836```solidity
17837function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
17838```*/
17839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17840    #[derive(Clone)]
17841    pub struct registerValidatorCall {
17842        #[allow(missing_docs)]
17843        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
17844        #[allow(missing_docs)]
17845        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
17846        #[allow(missing_docs)]
17847        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
17848        #[allow(missing_docs)]
17849        pub _3: u16,
17850    }
17851    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
17852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17853    #[derive(Clone)]
17854    pub struct registerValidatorReturn {}
17855    #[allow(
17856        non_camel_case_types,
17857        non_snake_case,
17858        clippy::pub_underscore_fields,
17859        clippy::style
17860    )]
17861    const _: () = {
17862        use alloy::sol_types as alloy_sol_types;
17863        {
17864            #[doc(hidden)]
17865            #[allow(dead_code)]
17866            type UnderlyingSolTuple<'a> = (
17867                BN254::G2Point,
17868                EdOnBN254::EdOnBN254Point,
17869                BN254::G1Point,
17870                alloy::sol_types::sol_data::Uint<16>,
17871            );
17872            #[doc(hidden)]
17873            type UnderlyingRustTuple<'a> = (
17874                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
17875                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
17876                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
17877                u16,
17878            );
17879            #[cfg(test)]
17880            #[allow(dead_code, unreachable_patterns)]
17881            fn _type_assertion(
17882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17883            ) {
17884                match _t {
17885                    alloy_sol_types::private::AssertTypeEq::<
17886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17887                    >(_) => {}
17888                }
17889            }
17890            #[automatically_derived]
17891            #[doc(hidden)]
17892            impl ::core::convert::From<registerValidatorCall>
17893            for UnderlyingRustTuple<'_> {
17894                fn from(value: registerValidatorCall) -> Self {
17895                    (value._0, value._1, value._2, value._3)
17896                }
17897            }
17898            #[automatically_derived]
17899            #[doc(hidden)]
17900            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17901            for registerValidatorCall {
17902                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17903                    Self {
17904                        _0: tuple.0,
17905                        _1: tuple.1,
17906                        _2: tuple.2,
17907                        _3: tuple.3,
17908                    }
17909                }
17910            }
17911        }
17912        {
17913            #[doc(hidden)]
17914            #[allow(dead_code)]
17915            type UnderlyingSolTuple<'a> = ();
17916            #[doc(hidden)]
17917            type UnderlyingRustTuple<'a> = ();
17918            #[cfg(test)]
17919            #[allow(dead_code, unreachable_patterns)]
17920            fn _type_assertion(
17921                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17922            ) {
17923                match _t {
17924                    alloy_sol_types::private::AssertTypeEq::<
17925                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17926                    >(_) => {}
17927                }
17928            }
17929            #[automatically_derived]
17930            #[doc(hidden)]
17931            impl ::core::convert::From<registerValidatorReturn>
17932            for UnderlyingRustTuple<'_> {
17933                fn from(value: registerValidatorReturn) -> Self {
17934                    ()
17935                }
17936            }
17937            #[automatically_derived]
17938            #[doc(hidden)]
17939            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17940            for registerValidatorReturn {
17941                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17942                    Self {}
17943                }
17944            }
17945        }
17946        impl registerValidatorReturn {
17947            fn _tokenize(
17948                &self,
17949            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17950                ()
17951            }
17952        }
17953        #[automatically_derived]
17954        impl alloy_sol_types::SolCall for registerValidatorCall {
17955            type Parameters<'a> = (
17956                BN254::G2Point,
17957                EdOnBN254::EdOnBN254Point,
17958                BN254::G1Point,
17959                alloy::sol_types::sol_data::Uint<16>,
17960            );
17961            type Token<'a> = <Self::Parameters<
17962                'a,
17963            > as alloy_sol_types::SolType>::Token<'a>;
17964            type Return = registerValidatorReturn;
17965            type ReturnTuple<'a> = ();
17966            type ReturnToken<'a> = <Self::ReturnTuple<
17967                'a,
17968            > as alloy_sol_types::SolType>::Token<'a>;
17969            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
17970            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
17971            #[inline]
17972            fn new<'a>(
17973                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17974            ) -> Self {
17975                tuple.into()
17976            }
17977            #[inline]
17978            fn tokenize(&self) -> Self::Token<'_> {
17979                (
17980                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
17981                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
17982                        &self._1,
17983                    ),
17984                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
17985                    <alloy::sol_types::sol_data::Uint<
17986                        16,
17987                    > as alloy_sol_types::SolType>::tokenize(&self._3),
17988                )
17989            }
17990            #[inline]
17991            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17992                registerValidatorReturn::_tokenize(ret)
17993            }
17994            #[inline]
17995            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17996                <Self::ReturnTuple<
17997                    '_,
17998                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17999                    .map(Into::into)
18000            }
18001            #[inline]
18002            fn abi_decode_returns_validate(
18003                data: &[u8],
18004            ) -> alloy_sol_types::Result<Self::Return> {
18005                <Self::ReturnTuple<
18006                    '_,
18007                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18008                    .map(Into::into)
18009            }
18010        }
18011    };
18012    #[derive(serde::Serialize, serde::Deserialize)]
18013    #[derive()]
18014    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)` and selector `0x2b9e5c8a`.
18015```solidity
18016function registerValidatorV2(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, bytes memory, uint16, string memory) external pure;
18017```*/
18018    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18019    #[derive(Clone)]
18020    pub struct registerValidatorV2Call {
18021        #[allow(missing_docs)]
18022        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18023        #[allow(missing_docs)]
18024        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18025        #[allow(missing_docs)]
18026        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18027        #[allow(missing_docs)]
18028        pub _3: alloy::sol_types::private::Bytes,
18029        #[allow(missing_docs)]
18030        pub _4: u16,
18031        #[allow(missing_docs)]
18032        pub _5: alloy::sol_types::private::String,
18033    }
18034    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)`](registerValidatorV2Call) function.
18035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18036    #[derive(Clone)]
18037    pub struct registerValidatorV2Return {}
18038    #[allow(
18039        non_camel_case_types,
18040        non_snake_case,
18041        clippy::pub_underscore_fields,
18042        clippy::style
18043    )]
18044    const _: () = {
18045        use alloy::sol_types as alloy_sol_types;
18046        {
18047            #[doc(hidden)]
18048            #[allow(dead_code)]
18049            type UnderlyingSolTuple<'a> = (
18050                BN254::G2Point,
18051                EdOnBN254::EdOnBN254Point,
18052                BN254::G1Point,
18053                alloy::sol_types::sol_data::Bytes,
18054                alloy::sol_types::sol_data::Uint<16>,
18055                alloy::sol_types::sol_data::String,
18056            );
18057            #[doc(hidden)]
18058            type UnderlyingRustTuple<'a> = (
18059                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18060                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18061                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18062                alloy::sol_types::private::Bytes,
18063                u16,
18064                alloy::sol_types::private::String,
18065            );
18066            #[cfg(test)]
18067            #[allow(dead_code, unreachable_patterns)]
18068            fn _type_assertion(
18069                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18070            ) {
18071                match _t {
18072                    alloy_sol_types::private::AssertTypeEq::<
18073                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18074                    >(_) => {}
18075                }
18076            }
18077            #[automatically_derived]
18078            #[doc(hidden)]
18079            impl ::core::convert::From<registerValidatorV2Call>
18080            for UnderlyingRustTuple<'_> {
18081                fn from(value: registerValidatorV2Call) -> Self {
18082                    (value._0, value._1, value._2, value._3, value._4, value._5)
18083                }
18084            }
18085            #[automatically_derived]
18086            #[doc(hidden)]
18087            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18088            for registerValidatorV2Call {
18089                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18090                    Self {
18091                        _0: tuple.0,
18092                        _1: tuple.1,
18093                        _2: tuple.2,
18094                        _3: tuple.3,
18095                        _4: tuple.4,
18096                        _5: tuple.5,
18097                    }
18098                }
18099            }
18100        }
18101        {
18102            #[doc(hidden)]
18103            #[allow(dead_code)]
18104            type UnderlyingSolTuple<'a> = ();
18105            #[doc(hidden)]
18106            type UnderlyingRustTuple<'a> = ();
18107            #[cfg(test)]
18108            #[allow(dead_code, unreachable_patterns)]
18109            fn _type_assertion(
18110                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18111            ) {
18112                match _t {
18113                    alloy_sol_types::private::AssertTypeEq::<
18114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18115                    >(_) => {}
18116                }
18117            }
18118            #[automatically_derived]
18119            #[doc(hidden)]
18120            impl ::core::convert::From<registerValidatorV2Return>
18121            for UnderlyingRustTuple<'_> {
18122                fn from(value: registerValidatorV2Return) -> Self {
18123                    ()
18124                }
18125            }
18126            #[automatically_derived]
18127            #[doc(hidden)]
18128            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18129            for registerValidatorV2Return {
18130                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18131                    Self {}
18132                }
18133            }
18134        }
18135        impl registerValidatorV2Return {
18136            fn _tokenize(
18137                &self,
18138            ) -> <registerValidatorV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
18139                ()
18140            }
18141        }
18142        #[automatically_derived]
18143        impl alloy_sol_types::SolCall for registerValidatorV2Call {
18144            type Parameters<'a> = (
18145                BN254::G2Point,
18146                EdOnBN254::EdOnBN254Point,
18147                BN254::G1Point,
18148                alloy::sol_types::sol_data::Bytes,
18149                alloy::sol_types::sol_data::Uint<16>,
18150                alloy::sol_types::sol_data::String,
18151            );
18152            type Token<'a> = <Self::Parameters<
18153                'a,
18154            > as alloy_sol_types::SolType>::Token<'a>;
18155            type Return = registerValidatorV2Return;
18156            type ReturnTuple<'a> = ();
18157            type ReturnToken<'a> = <Self::ReturnTuple<
18158                'a,
18159            > as alloy_sol_types::SolType>::Token<'a>;
18160            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)";
18161            const SELECTOR: [u8; 4] = [43u8, 158u8, 92u8, 138u8];
18162            #[inline]
18163            fn new<'a>(
18164                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18165            ) -> Self {
18166                tuple.into()
18167            }
18168            #[inline]
18169            fn tokenize(&self) -> Self::Token<'_> {
18170                (
18171                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
18172                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18173                        &self._1,
18174                    ),
18175                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
18176                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
18177                        &self._3,
18178                    ),
18179                    <alloy::sol_types::sol_data::Uint<
18180                        16,
18181                    > as alloy_sol_types::SolType>::tokenize(&self._4),
18182                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
18183                        &self._5,
18184                    ),
18185                )
18186            }
18187            #[inline]
18188            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18189                registerValidatorV2Return::_tokenize(ret)
18190            }
18191            #[inline]
18192            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18193                <Self::ReturnTuple<
18194                    '_,
18195                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18196                    .map(Into::into)
18197            }
18198            #[inline]
18199            fn abi_decode_returns_validate(
18200                data: &[u8],
18201            ) -> alloy_sol_types::Result<Self::Return> {
18202                <Self::ReturnTuple<
18203                    '_,
18204                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18205                    .map(Into::into)
18206            }
18207        }
18208    };
18209    #[derive(serde::Serialize, serde::Deserialize)]
18210    #[derive()]
18211    /**Function with signature `registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)` and selector `0x6887cd36`.
18212```solidity
18213function registerValidatorV3(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri, bytes32 x25519Key, string memory p2pAddr) external;
18214```*/
18215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18216    #[derive(Clone)]
18217    pub struct registerValidatorV3Call {
18218        #[allow(missing_docs)]
18219        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18220        #[allow(missing_docs)]
18221        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18222        #[allow(missing_docs)]
18223        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18224        #[allow(missing_docs)]
18225        pub schnorrSig: alloy::sol_types::private::Bytes,
18226        #[allow(missing_docs)]
18227        pub commission: u16,
18228        #[allow(missing_docs)]
18229        pub metadataUri: alloy::sol_types::private::String,
18230        #[allow(missing_docs)]
18231        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
18232        #[allow(missing_docs)]
18233        pub p2pAddr: alloy::sol_types::private::String,
18234    }
18235    ///Container type for the return parameters of the [`registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)`](registerValidatorV3Call) function.
18236    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18237    #[derive(Clone)]
18238    pub struct registerValidatorV3Return {}
18239    #[allow(
18240        non_camel_case_types,
18241        non_snake_case,
18242        clippy::pub_underscore_fields,
18243        clippy::style
18244    )]
18245    const _: () = {
18246        use alloy::sol_types as alloy_sol_types;
18247        {
18248            #[doc(hidden)]
18249            #[allow(dead_code)]
18250            type UnderlyingSolTuple<'a> = (
18251                BN254::G2Point,
18252                EdOnBN254::EdOnBN254Point,
18253                BN254::G1Point,
18254                alloy::sol_types::sol_data::Bytes,
18255                alloy::sol_types::sol_data::Uint<16>,
18256                alloy::sol_types::sol_data::String,
18257                alloy::sol_types::sol_data::FixedBytes<32>,
18258                alloy::sol_types::sol_data::String,
18259            );
18260            #[doc(hidden)]
18261            type UnderlyingRustTuple<'a> = (
18262                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18263                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18264                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18265                alloy::sol_types::private::Bytes,
18266                u16,
18267                alloy::sol_types::private::String,
18268                alloy::sol_types::private::FixedBytes<32>,
18269                alloy::sol_types::private::String,
18270            );
18271            #[cfg(test)]
18272            #[allow(dead_code, unreachable_patterns)]
18273            fn _type_assertion(
18274                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18275            ) {
18276                match _t {
18277                    alloy_sol_types::private::AssertTypeEq::<
18278                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18279                    >(_) => {}
18280                }
18281            }
18282            #[automatically_derived]
18283            #[doc(hidden)]
18284            impl ::core::convert::From<registerValidatorV3Call>
18285            for UnderlyingRustTuple<'_> {
18286                fn from(value: registerValidatorV3Call) -> Self {
18287                    (
18288                        value.blsVK,
18289                        value.schnorrVK,
18290                        value.blsSig,
18291                        value.schnorrSig,
18292                        value.commission,
18293                        value.metadataUri,
18294                        value.x25519Key,
18295                        value.p2pAddr,
18296                    )
18297                }
18298            }
18299            #[automatically_derived]
18300            #[doc(hidden)]
18301            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18302            for registerValidatorV3Call {
18303                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18304                    Self {
18305                        blsVK: tuple.0,
18306                        schnorrVK: tuple.1,
18307                        blsSig: tuple.2,
18308                        schnorrSig: tuple.3,
18309                        commission: tuple.4,
18310                        metadataUri: tuple.5,
18311                        x25519Key: tuple.6,
18312                        p2pAddr: tuple.7,
18313                    }
18314                }
18315            }
18316        }
18317        {
18318            #[doc(hidden)]
18319            #[allow(dead_code)]
18320            type UnderlyingSolTuple<'a> = ();
18321            #[doc(hidden)]
18322            type UnderlyingRustTuple<'a> = ();
18323            #[cfg(test)]
18324            #[allow(dead_code, unreachable_patterns)]
18325            fn _type_assertion(
18326                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18327            ) {
18328                match _t {
18329                    alloy_sol_types::private::AssertTypeEq::<
18330                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18331                    >(_) => {}
18332                }
18333            }
18334            #[automatically_derived]
18335            #[doc(hidden)]
18336            impl ::core::convert::From<registerValidatorV3Return>
18337            for UnderlyingRustTuple<'_> {
18338                fn from(value: registerValidatorV3Return) -> Self {
18339                    ()
18340                }
18341            }
18342            #[automatically_derived]
18343            #[doc(hidden)]
18344            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18345            for registerValidatorV3Return {
18346                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18347                    Self {}
18348                }
18349            }
18350        }
18351        impl registerValidatorV3Return {
18352            fn _tokenize(
18353                &self,
18354            ) -> <registerValidatorV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
18355                ()
18356            }
18357        }
18358        #[automatically_derived]
18359        impl alloy_sol_types::SolCall for registerValidatorV3Call {
18360            type Parameters<'a> = (
18361                BN254::G2Point,
18362                EdOnBN254::EdOnBN254Point,
18363                BN254::G1Point,
18364                alloy::sol_types::sol_data::Bytes,
18365                alloy::sol_types::sol_data::Uint<16>,
18366                alloy::sol_types::sol_data::String,
18367                alloy::sol_types::sol_data::FixedBytes<32>,
18368                alloy::sol_types::sol_data::String,
18369            );
18370            type Token<'a> = <Self::Parameters<
18371                'a,
18372            > as alloy_sol_types::SolType>::Token<'a>;
18373            type Return = registerValidatorV3Return;
18374            type ReturnTuple<'a> = ();
18375            type ReturnToken<'a> = <Self::ReturnTuple<
18376                'a,
18377            > as alloy_sol_types::SolType>::Token<'a>;
18378            const SIGNATURE: &'static str = "registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)";
18379            const SELECTOR: [u8; 4] = [104u8, 135u8, 205u8, 54u8];
18380            #[inline]
18381            fn new<'a>(
18382                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18383            ) -> Self {
18384                tuple.into()
18385            }
18386            #[inline]
18387            fn tokenize(&self) -> Self::Token<'_> {
18388                (
18389                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
18390                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18391                        &self.schnorrVK,
18392                    ),
18393                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
18394                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
18395                        &self.schnorrSig,
18396                    ),
18397                    <alloy::sol_types::sol_data::Uint<
18398                        16,
18399                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
18400                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
18401                        &self.metadataUri,
18402                    ),
18403                    <alloy::sol_types::sol_data::FixedBytes<
18404                        32,
18405                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
18406                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
18407                        &self.p2pAddr,
18408                    ),
18409                )
18410            }
18411            #[inline]
18412            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18413                registerValidatorV3Return::_tokenize(ret)
18414            }
18415            #[inline]
18416            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18417                <Self::ReturnTuple<
18418                    '_,
18419                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18420                    .map(Into::into)
18421            }
18422            #[inline]
18423            fn abi_decode_returns_validate(
18424                data: &[u8],
18425            ) -> alloy_sol_types::Result<Self::Return> {
18426                <Self::ReturnTuple<
18427                    '_,
18428                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18429                    .map(Into::into)
18430            }
18431        }
18432    };
18433    #[derive(serde::Serialize, serde::Deserialize)]
18434    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18435    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
18436```solidity
18437function renounceOwnership() external;
18438```*/
18439    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18440    #[derive(Clone)]
18441    pub struct renounceOwnershipCall;
18442    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
18443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18444    #[derive(Clone)]
18445    pub struct renounceOwnershipReturn {}
18446    #[allow(
18447        non_camel_case_types,
18448        non_snake_case,
18449        clippy::pub_underscore_fields,
18450        clippy::style
18451    )]
18452    const _: () = {
18453        use alloy::sol_types as alloy_sol_types;
18454        {
18455            #[doc(hidden)]
18456            #[allow(dead_code)]
18457            type UnderlyingSolTuple<'a> = ();
18458            #[doc(hidden)]
18459            type UnderlyingRustTuple<'a> = ();
18460            #[cfg(test)]
18461            #[allow(dead_code, unreachable_patterns)]
18462            fn _type_assertion(
18463                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18464            ) {
18465                match _t {
18466                    alloy_sol_types::private::AssertTypeEq::<
18467                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18468                    >(_) => {}
18469                }
18470            }
18471            #[automatically_derived]
18472            #[doc(hidden)]
18473            impl ::core::convert::From<renounceOwnershipCall>
18474            for UnderlyingRustTuple<'_> {
18475                fn from(value: renounceOwnershipCall) -> Self {
18476                    ()
18477                }
18478            }
18479            #[automatically_derived]
18480            #[doc(hidden)]
18481            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18482            for renounceOwnershipCall {
18483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18484                    Self
18485                }
18486            }
18487        }
18488        {
18489            #[doc(hidden)]
18490            #[allow(dead_code)]
18491            type UnderlyingSolTuple<'a> = ();
18492            #[doc(hidden)]
18493            type UnderlyingRustTuple<'a> = ();
18494            #[cfg(test)]
18495            #[allow(dead_code, unreachable_patterns)]
18496            fn _type_assertion(
18497                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18498            ) {
18499                match _t {
18500                    alloy_sol_types::private::AssertTypeEq::<
18501                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18502                    >(_) => {}
18503                }
18504            }
18505            #[automatically_derived]
18506            #[doc(hidden)]
18507            impl ::core::convert::From<renounceOwnershipReturn>
18508            for UnderlyingRustTuple<'_> {
18509                fn from(value: renounceOwnershipReturn) -> Self {
18510                    ()
18511                }
18512            }
18513            #[automatically_derived]
18514            #[doc(hidden)]
18515            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18516            for renounceOwnershipReturn {
18517                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18518                    Self {}
18519                }
18520            }
18521        }
18522        impl renounceOwnershipReturn {
18523            fn _tokenize(
18524                &self,
18525            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18526                ()
18527            }
18528        }
18529        #[automatically_derived]
18530        impl alloy_sol_types::SolCall for renounceOwnershipCall {
18531            type Parameters<'a> = ();
18532            type Token<'a> = <Self::Parameters<
18533                'a,
18534            > as alloy_sol_types::SolType>::Token<'a>;
18535            type Return = renounceOwnershipReturn;
18536            type ReturnTuple<'a> = ();
18537            type ReturnToken<'a> = <Self::ReturnTuple<
18538                'a,
18539            > as alloy_sol_types::SolType>::Token<'a>;
18540            const SIGNATURE: &'static str = "renounceOwnership()";
18541            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
18542            #[inline]
18543            fn new<'a>(
18544                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18545            ) -> Self {
18546                tuple.into()
18547            }
18548            #[inline]
18549            fn tokenize(&self) -> Self::Token<'_> {
18550                ()
18551            }
18552            #[inline]
18553            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18554                renounceOwnershipReturn::_tokenize(ret)
18555            }
18556            #[inline]
18557            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18558                <Self::ReturnTuple<
18559                    '_,
18560                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18561                    .map(Into::into)
18562            }
18563            #[inline]
18564            fn abi_decode_returns_validate(
18565                data: &[u8],
18566            ) -> alloy_sol_types::Result<Self::Return> {
18567                <Self::ReturnTuple<
18568                    '_,
18569                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18570                    .map(Into::into)
18571            }
18572        }
18573    };
18574    #[derive(serde::Serialize, serde::Deserialize)]
18575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18576    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
18577```solidity
18578function renounceRole(bytes32 role, address callerConfirmation) external;
18579```*/
18580    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18581    #[derive(Clone)]
18582    pub struct renounceRoleCall {
18583        #[allow(missing_docs)]
18584        pub role: alloy::sol_types::private::FixedBytes<32>,
18585        #[allow(missing_docs)]
18586        pub callerConfirmation: alloy::sol_types::private::Address,
18587    }
18588    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
18589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18590    #[derive(Clone)]
18591    pub struct renounceRoleReturn {}
18592    #[allow(
18593        non_camel_case_types,
18594        non_snake_case,
18595        clippy::pub_underscore_fields,
18596        clippy::style
18597    )]
18598    const _: () = {
18599        use alloy::sol_types as alloy_sol_types;
18600        {
18601            #[doc(hidden)]
18602            #[allow(dead_code)]
18603            type UnderlyingSolTuple<'a> = (
18604                alloy::sol_types::sol_data::FixedBytes<32>,
18605                alloy::sol_types::sol_data::Address,
18606            );
18607            #[doc(hidden)]
18608            type UnderlyingRustTuple<'a> = (
18609                alloy::sol_types::private::FixedBytes<32>,
18610                alloy::sol_types::private::Address,
18611            );
18612            #[cfg(test)]
18613            #[allow(dead_code, unreachable_patterns)]
18614            fn _type_assertion(
18615                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18616            ) {
18617                match _t {
18618                    alloy_sol_types::private::AssertTypeEq::<
18619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18620                    >(_) => {}
18621                }
18622            }
18623            #[automatically_derived]
18624            #[doc(hidden)]
18625            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
18626                fn from(value: renounceRoleCall) -> Self {
18627                    (value.role, value.callerConfirmation)
18628                }
18629            }
18630            #[automatically_derived]
18631            #[doc(hidden)]
18632            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
18633                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18634                    Self {
18635                        role: tuple.0,
18636                        callerConfirmation: tuple.1,
18637                    }
18638                }
18639            }
18640        }
18641        {
18642            #[doc(hidden)]
18643            #[allow(dead_code)]
18644            type UnderlyingSolTuple<'a> = ();
18645            #[doc(hidden)]
18646            type UnderlyingRustTuple<'a> = ();
18647            #[cfg(test)]
18648            #[allow(dead_code, unreachable_patterns)]
18649            fn _type_assertion(
18650                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18651            ) {
18652                match _t {
18653                    alloy_sol_types::private::AssertTypeEq::<
18654                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18655                    >(_) => {}
18656                }
18657            }
18658            #[automatically_derived]
18659            #[doc(hidden)]
18660            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
18661                fn from(value: renounceRoleReturn) -> Self {
18662                    ()
18663                }
18664            }
18665            #[automatically_derived]
18666            #[doc(hidden)]
18667            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
18668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18669                    Self {}
18670                }
18671            }
18672        }
18673        impl renounceRoleReturn {
18674            fn _tokenize(
18675                &self,
18676            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18677                ()
18678            }
18679        }
18680        #[automatically_derived]
18681        impl alloy_sol_types::SolCall for renounceRoleCall {
18682            type Parameters<'a> = (
18683                alloy::sol_types::sol_data::FixedBytes<32>,
18684                alloy::sol_types::sol_data::Address,
18685            );
18686            type Token<'a> = <Self::Parameters<
18687                'a,
18688            > as alloy_sol_types::SolType>::Token<'a>;
18689            type Return = renounceRoleReturn;
18690            type ReturnTuple<'a> = ();
18691            type ReturnToken<'a> = <Self::ReturnTuple<
18692                'a,
18693            > as alloy_sol_types::SolType>::Token<'a>;
18694            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
18695            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
18696            #[inline]
18697            fn new<'a>(
18698                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18699            ) -> Self {
18700                tuple.into()
18701            }
18702            #[inline]
18703            fn tokenize(&self) -> Self::Token<'_> {
18704                (
18705                    <alloy::sol_types::sol_data::FixedBytes<
18706                        32,
18707                    > as alloy_sol_types::SolType>::tokenize(&self.role),
18708                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18709                        &self.callerConfirmation,
18710                    ),
18711                )
18712            }
18713            #[inline]
18714            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18715                renounceRoleReturn::_tokenize(ret)
18716            }
18717            #[inline]
18718            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18719                <Self::ReturnTuple<
18720                    '_,
18721                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18722                    .map(Into::into)
18723            }
18724            #[inline]
18725            fn abi_decode_returns_validate(
18726                data: &[u8],
18727            ) -> alloy_sol_types::Result<Self::Return> {
18728                <Self::ReturnTuple<
18729                    '_,
18730                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18731                    .map(Into::into)
18732            }
18733        }
18734    };
18735    #[derive(serde::Serialize, serde::Deserialize)]
18736    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18737    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
18738```solidity
18739function revokeRole(bytes32 role, address account) external;
18740```*/
18741    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18742    #[derive(Clone)]
18743    pub struct revokeRoleCall {
18744        #[allow(missing_docs)]
18745        pub role: alloy::sol_types::private::FixedBytes<32>,
18746        #[allow(missing_docs)]
18747        pub account: alloy::sol_types::private::Address,
18748    }
18749    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
18750    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18751    #[derive(Clone)]
18752    pub struct revokeRoleReturn {}
18753    #[allow(
18754        non_camel_case_types,
18755        non_snake_case,
18756        clippy::pub_underscore_fields,
18757        clippy::style
18758    )]
18759    const _: () = {
18760        use alloy::sol_types as alloy_sol_types;
18761        {
18762            #[doc(hidden)]
18763            #[allow(dead_code)]
18764            type UnderlyingSolTuple<'a> = (
18765                alloy::sol_types::sol_data::FixedBytes<32>,
18766                alloy::sol_types::sol_data::Address,
18767            );
18768            #[doc(hidden)]
18769            type UnderlyingRustTuple<'a> = (
18770                alloy::sol_types::private::FixedBytes<32>,
18771                alloy::sol_types::private::Address,
18772            );
18773            #[cfg(test)]
18774            #[allow(dead_code, unreachable_patterns)]
18775            fn _type_assertion(
18776                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18777            ) {
18778                match _t {
18779                    alloy_sol_types::private::AssertTypeEq::<
18780                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18781                    >(_) => {}
18782                }
18783            }
18784            #[automatically_derived]
18785            #[doc(hidden)]
18786            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
18787                fn from(value: revokeRoleCall) -> Self {
18788                    (value.role, value.account)
18789                }
18790            }
18791            #[automatically_derived]
18792            #[doc(hidden)]
18793            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
18794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18795                    Self {
18796                        role: tuple.0,
18797                        account: tuple.1,
18798                    }
18799                }
18800            }
18801        }
18802        {
18803            #[doc(hidden)]
18804            #[allow(dead_code)]
18805            type UnderlyingSolTuple<'a> = ();
18806            #[doc(hidden)]
18807            type UnderlyingRustTuple<'a> = ();
18808            #[cfg(test)]
18809            #[allow(dead_code, unreachable_patterns)]
18810            fn _type_assertion(
18811                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18812            ) {
18813                match _t {
18814                    alloy_sol_types::private::AssertTypeEq::<
18815                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18816                    >(_) => {}
18817                }
18818            }
18819            #[automatically_derived]
18820            #[doc(hidden)]
18821            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
18822                fn from(value: revokeRoleReturn) -> Self {
18823                    ()
18824                }
18825            }
18826            #[automatically_derived]
18827            #[doc(hidden)]
18828            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
18829                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18830                    Self {}
18831                }
18832            }
18833        }
18834        impl revokeRoleReturn {
18835            fn _tokenize(
18836                &self,
18837            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18838                ()
18839            }
18840        }
18841        #[automatically_derived]
18842        impl alloy_sol_types::SolCall for revokeRoleCall {
18843            type Parameters<'a> = (
18844                alloy::sol_types::sol_data::FixedBytes<32>,
18845                alloy::sol_types::sol_data::Address,
18846            );
18847            type Token<'a> = <Self::Parameters<
18848                'a,
18849            > as alloy_sol_types::SolType>::Token<'a>;
18850            type Return = revokeRoleReturn;
18851            type ReturnTuple<'a> = ();
18852            type ReturnToken<'a> = <Self::ReturnTuple<
18853                'a,
18854            > as alloy_sol_types::SolType>::Token<'a>;
18855            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
18856            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
18857            #[inline]
18858            fn new<'a>(
18859                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18860            ) -> Self {
18861                tuple.into()
18862            }
18863            #[inline]
18864            fn tokenize(&self) -> Self::Token<'_> {
18865                (
18866                    <alloy::sol_types::sol_data::FixedBytes<
18867                        32,
18868                    > as alloy_sol_types::SolType>::tokenize(&self.role),
18869                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18870                        &self.account,
18871                    ),
18872                )
18873            }
18874            #[inline]
18875            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18876                revokeRoleReturn::_tokenize(ret)
18877            }
18878            #[inline]
18879            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18880                <Self::ReturnTuple<
18881                    '_,
18882                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18883                    .map(Into::into)
18884            }
18885            #[inline]
18886            fn abi_decode_returns_validate(
18887                data: &[u8],
18888            ) -> alloy_sol_types::Result<Self::Return> {
18889                <Self::ReturnTuple<
18890                    '_,
18891                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18892                    .map(Into::into)
18893            }
18894        }
18895    };
18896    #[derive(serde::Serialize, serde::Deserialize)]
18897    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18898    /**Function with signature `schnorrKeys(bytes32)` and selector `0x5f8754a6`.
18899```solidity
18900function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
18901```*/
18902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18903    #[derive(Clone)]
18904    pub struct schnorrKeysCall {
18905        #[allow(missing_docs)]
18906        pub schnorrKey: alloy::sol_types::private::FixedBytes<32>,
18907    }
18908    #[derive(serde::Serialize, serde::Deserialize)]
18909    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18910    ///Container type for the return parameters of the [`schnorrKeys(bytes32)`](schnorrKeysCall) function.
18911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18912    #[derive(Clone)]
18913    pub struct schnorrKeysReturn {
18914        #[allow(missing_docs)]
18915        pub used: bool,
18916    }
18917    #[allow(
18918        non_camel_case_types,
18919        non_snake_case,
18920        clippy::pub_underscore_fields,
18921        clippy::style
18922    )]
18923    const _: () = {
18924        use alloy::sol_types as alloy_sol_types;
18925        {
18926            #[doc(hidden)]
18927            #[allow(dead_code)]
18928            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
18929            #[doc(hidden)]
18930            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
18931            #[cfg(test)]
18932            #[allow(dead_code, unreachable_patterns)]
18933            fn _type_assertion(
18934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18935            ) {
18936                match _t {
18937                    alloy_sol_types::private::AssertTypeEq::<
18938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18939                    >(_) => {}
18940                }
18941            }
18942            #[automatically_derived]
18943            #[doc(hidden)]
18944            impl ::core::convert::From<schnorrKeysCall> for UnderlyingRustTuple<'_> {
18945                fn from(value: schnorrKeysCall) -> Self {
18946                    (value.schnorrKey,)
18947                }
18948            }
18949            #[automatically_derived]
18950            #[doc(hidden)]
18951            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysCall {
18952                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18953                    Self { schnorrKey: tuple.0 }
18954                }
18955            }
18956        }
18957        {
18958            #[doc(hidden)]
18959            #[allow(dead_code)]
18960            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
18961            #[doc(hidden)]
18962            type UnderlyingRustTuple<'a> = (bool,);
18963            #[cfg(test)]
18964            #[allow(dead_code, unreachable_patterns)]
18965            fn _type_assertion(
18966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18967            ) {
18968                match _t {
18969                    alloy_sol_types::private::AssertTypeEq::<
18970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18971                    >(_) => {}
18972                }
18973            }
18974            #[automatically_derived]
18975            #[doc(hidden)]
18976            impl ::core::convert::From<schnorrKeysReturn> for UnderlyingRustTuple<'_> {
18977                fn from(value: schnorrKeysReturn) -> Self {
18978                    (value.used,)
18979                }
18980            }
18981            #[automatically_derived]
18982            #[doc(hidden)]
18983            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysReturn {
18984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18985                    Self { used: tuple.0 }
18986                }
18987            }
18988        }
18989        #[automatically_derived]
18990        impl alloy_sol_types::SolCall for schnorrKeysCall {
18991            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
18992            type Token<'a> = <Self::Parameters<
18993                'a,
18994            > as alloy_sol_types::SolType>::Token<'a>;
18995            type Return = bool;
18996            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
18997            type ReturnToken<'a> = <Self::ReturnTuple<
18998                'a,
18999            > as alloy_sol_types::SolType>::Token<'a>;
19000            const SIGNATURE: &'static str = "schnorrKeys(bytes32)";
19001            const SELECTOR: [u8; 4] = [95u8, 135u8, 84u8, 166u8];
19002            #[inline]
19003            fn new<'a>(
19004                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19005            ) -> Self {
19006                tuple.into()
19007            }
19008            #[inline]
19009            fn tokenize(&self) -> Self::Token<'_> {
19010                (
19011                    <alloy::sol_types::sol_data::FixedBytes<
19012                        32,
19013                    > as alloy_sol_types::SolType>::tokenize(&self.schnorrKey),
19014                )
19015            }
19016            #[inline]
19017            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19018                (
19019                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
19020                        ret,
19021                    ),
19022                )
19023            }
19024            #[inline]
19025            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19026                <Self::ReturnTuple<
19027                    '_,
19028                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19029                    .map(|r| {
19030                        let r: schnorrKeysReturn = r.into();
19031                        r.used
19032                    })
19033            }
19034            #[inline]
19035            fn abi_decode_returns_validate(
19036                data: &[u8],
19037            ) -> alloy_sol_types::Result<Self::Return> {
19038                <Self::ReturnTuple<
19039                    '_,
19040                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19041                    .map(|r| {
19042                        let r: schnorrKeysReturn = r.into();
19043                        r.used
19044                    })
19045            }
19046        }
19047    };
19048    #[derive(serde::Serialize, serde::Deserialize)]
19049    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19050    /**Function with signature `setMaxCommissionIncrease(uint16)` and selector `0x2dc9bac6`.
19051```solidity
19052function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
19053```*/
19054    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19055    #[derive(Clone)]
19056    pub struct setMaxCommissionIncreaseCall {
19057        #[allow(missing_docs)]
19058        pub newMaxIncrease: u16,
19059    }
19060    ///Container type for the return parameters of the [`setMaxCommissionIncrease(uint16)`](setMaxCommissionIncreaseCall) function.
19061    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19062    #[derive(Clone)]
19063    pub struct setMaxCommissionIncreaseReturn {}
19064    #[allow(
19065        non_camel_case_types,
19066        non_snake_case,
19067        clippy::pub_underscore_fields,
19068        clippy::style
19069    )]
19070    const _: () = {
19071        use alloy::sol_types as alloy_sol_types;
19072        {
19073            #[doc(hidden)]
19074            #[allow(dead_code)]
19075            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
19076            #[doc(hidden)]
19077            type UnderlyingRustTuple<'a> = (u16,);
19078            #[cfg(test)]
19079            #[allow(dead_code, unreachable_patterns)]
19080            fn _type_assertion(
19081                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19082            ) {
19083                match _t {
19084                    alloy_sol_types::private::AssertTypeEq::<
19085                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19086                    >(_) => {}
19087                }
19088            }
19089            #[automatically_derived]
19090            #[doc(hidden)]
19091            impl ::core::convert::From<setMaxCommissionIncreaseCall>
19092            for UnderlyingRustTuple<'_> {
19093                fn from(value: setMaxCommissionIncreaseCall) -> Self {
19094                    (value.newMaxIncrease,)
19095                }
19096            }
19097            #[automatically_derived]
19098            #[doc(hidden)]
19099            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19100            for setMaxCommissionIncreaseCall {
19101                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19102                    Self { newMaxIncrease: tuple.0 }
19103                }
19104            }
19105        }
19106        {
19107            #[doc(hidden)]
19108            #[allow(dead_code)]
19109            type UnderlyingSolTuple<'a> = ();
19110            #[doc(hidden)]
19111            type UnderlyingRustTuple<'a> = ();
19112            #[cfg(test)]
19113            #[allow(dead_code, unreachable_patterns)]
19114            fn _type_assertion(
19115                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19116            ) {
19117                match _t {
19118                    alloy_sol_types::private::AssertTypeEq::<
19119                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19120                    >(_) => {}
19121                }
19122            }
19123            #[automatically_derived]
19124            #[doc(hidden)]
19125            impl ::core::convert::From<setMaxCommissionIncreaseReturn>
19126            for UnderlyingRustTuple<'_> {
19127                fn from(value: setMaxCommissionIncreaseReturn) -> Self {
19128                    ()
19129                }
19130            }
19131            #[automatically_derived]
19132            #[doc(hidden)]
19133            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19134            for setMaxCommissionIncreaseReturn {
19135                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19136                    Self {}
19137                }
19138            }
19139        }
19140        impl setMaxCommissionIncreaseReturn {
19141            fn _tokenize(
19142                &self,
19143            ) -> <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::ReturnToken<
19144                '_,
19145            > {
19146                ()
19147            }
19148        }
19149        #[automatically_derived]
19150        impl alloy_sol_types::SolCall for setMaxCommissionIncreaseCall {
19151            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
19152            type Token<'a> = <Self::Parameters<
19153                'a,
19154            > as alloy_sol_types::SolType>::Token<'a>;
19155            type Return = setMaxCommissionIncreaseReturn;
19156            type ReturnTuple<'a> = ();
19157            type ReturnToken<'a> = <Self::ReturnTuple<
19158                'a,
19159            > as alloy_sol_types::SolType>::Token<'a>;
19160            const SIGNATURE: &'static str = "setMaxCommissionIncrease(uint16)";
19161            const SELECTOR: [u8; 4] = [45u8, 201u8, 186u8, 198u8];
19162            #[inline]
19163            fn new<'a>(
19164                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19165            ) -> Self {
19166                tuple.into()
19167            }
19168            #[inline]
19169            fn tokenize(&self) -> Self::Token<'_> {
19170                (
19171                    <alloy::sol_types::sol_data::Uint<
19172                        16,
19173                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
19174                )
19175            }
19176            #[inline]
19177            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19178                setMaxCommissionIncreaseReturn::_tokenize(ret)
19179            }
19180            #[inline]
19181            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19182                <Self::ReturnTuple<
19183                    '_,
19184                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19185                    .map(Into::into)
19186            }
19187            #[inline]
19188            fn abi_decode_returns_validate(
19189                data: &[u8],
19190            ) -> alloy_sol_types::Result<Self::Return> {
19191                <Self::ReturnTuple<
19192                    '_,
19193                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19194                    .map(Into::into)
19195            }
19196        }
19197    };
19198    #[derive(serde::Serialize, serde::Deserialize)]
19199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19200    /**Function with signature `setMinCommissionUpdateInterval(uint256)` and selector `0x394b348f`.
19201```solidity
19202function setMinCommissionUpdateInterval(uint256 newInterval) external;
19203```*/
19204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19205    #[derive(Clone)]
19206    pub struct setMinCommissionUpdateIntervalCall {
19207        #[allow(missing_docs)]
19208        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
19209    }
19210    ///Container type for the return parameters of the [`setMinCommissionUpdateInterval(uint256)`](setMinCommissionUpdateIntervalCall) function.
19211    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19212    #[derive(Clone)]
19213    pub struct setMinCommissionUpdateIntervalReturn {}
19214    #[allow(
19215        non_camel_case_types,
19216        non_snake_case,
19217        clippy::pub_underscore_fields,
19218        clippy::style
19219    )]
19220    const _: () = {
19221        use alloy::sol_types as alloy_sol_types;
19222        {
19223            #[doc(hidden)]
19224            #[allow(dead_code)]
19225            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19226            #[doc(hidden)]
19227            type UnderlyingRustTuple<'a> = (
19228                alloy::sol_types::private::primitives::aliases::U256,
19229            );
19230            #[cfg(test)]
19231            #[allow(dead_code, unreachable_patterns)]
19232            fn _type_assertion(
19233                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19234            ) {
19235                match _t {
19236                    alloy_sol_types::private::AssertTypeEq::<
19237                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19238                    >(_) => {}
19239                }
19240            }
19241            #[automatically_derived]
19242            #[doc(hidden)]
19243            impl ::core::convert::From<setMinCommissionUpdateIntervalCall>
19244            for UnderlyingRustTuple<'_> {
19245                fn from(value: setMinCommissionUpdateIntervalCall) -> Self {
19246                    (value.newInterval,)
19247                }
19248            }
19249            #[automatically_derived]
19250            #[doc(hidden)]
19251            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19252            for setMinCommissionUpdateIntervalCall {
19253                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19254                    Self { newInterval: tuple.0 }
19255                }
19256            }
19257        }
19258        {
19259            #[doc(hidden)]
19260            #[allow(dead_code)]
19261            type UnderlyingSolTuple<'a> = ();
19262            #[doc(hidden)]
19263            type UnderlyingRustTuple<'a> = ();
19264            #[cfg(test)]
19265            #[allow(dead_code, unreachable_patterns)]
19266            fn _type_assertion(
19267                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19268            ) {
19269                match _t {
19270                    alloy_sol_types::private::AssertTypeEq::<
19271                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19272                    >(_) => {}
19273                }
19274            }
19275            #[automatically_derived]
19276            #[doc(hidden)]
19277            impl ::core::convert::From<setMinCommissionUpdateIntervalReturn>
19278            for UnderlyingRustTuple<'_> {
19279                fn from(value: setMinCommissionUpdateIntervalReturn) -> Self {
19280                    ()
19281                }
19282            }
19283            #[automatically_derived]
19284            #[doc(hidden)]
19285            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19286            for setMinCommissionUpdateIntervalReturn {
19287                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19288                    Self {}
19289                }
19290            }
19291        }
19292        impl setMinCommissionUpdateIntervalReturn {
19293            fn _tokenize(
19294                &self,
19295            ) -> <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::ReturnToken<
19296                '_,
19297            > {
19298                ()
19299            }
19300        }
19301        #[automatically_derived]
19302        impl alloy_sol_types::SolCall for setMinCommissionUpdateIntervalCall {
19303            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19304            type Token<'a> = <Self::Parameters<
19305                'a,
19306            > as alloy_sol_types::SolType>::Token<'a>;
19307            type Return = setMinCommissionUpdateIntervalReturn;
19308            type ReturnTuple<'a> = ();
19309            type ReturnToken<'a> = <Self::ReturnTuple<
19310                'a,
19311            > as alloy_sol_types::SolType>::Token<'a>;
19312            const SIGNATURE: &'static str = "setMinCommissionUpdateInterval(uint256)";
19313            const SELECTOR: [u8; 4] = [57u8, 75u8, 52u8, 143u8];
19314            #[inline]
19315            fn new<'a>(
19316                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19317            ) -> Self {
19318                tuple.into()
19319            }
19320            #[inline]
19321            fn tokenize(&self) -> Self::Token<'_> {
19322                (
19323                    <alloy::sol_types::sol_data::Uint<
19324                        256,
19325                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
19326                )
19327            }
19328            #[inline]
19329            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19330                setMinCommissionUpdateIntervalReturn::_tokenize(ret)
19331            }
19332            #[inline]
19333            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19334                <Self::ReturnTuple<
19335                    '_,
19336                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19337                    .map(Into::into)
19338            }
19339            #[inline]
19340            fn abi_decode_returns_validate(
19341                data: &[u8],
19342            ) -> alloy_sol_types::Result<Self::Return> {
19343                <Self::ReturnTuple<
19344                    '_,
19345                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19346                    .map(Into::into)
19347            }
19348        }
19349    };
19350    #[derive(serde::Serialize, serde::Deserialize)]
19351    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19352    /**Function with signature `setMinDelegateAmount(uint256)` and selector `0x3e732eba`.
19353```solidity
19354function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
19355```*/
19356    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19357    #[derive(Clone)]
19358    pub struct setMinDelegateAmountCall {
19359        #[allow(missing_docs)]
19360        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
19361    }
19362    ///Container type for the return parameters of the [`setMinDelegateAmount(uint256)`](setMinDelegateAmountCall) function.
19363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19364    #[derive(Clone)]
19365    pub struct setMinDelegateAmountReturn {}
19366    #[allow(
19367        non_camel_case_types,
19368        non_snake_case,
19369        clippy::pub_underscore_fields,
19370        clippy::style
19371    )]
19372    const _: () = {
19373        use alloy::sol_types as alloy_sol_types;
19374        {
19375            #[doc(hidden)]
19376            #[allow(dead_code)]
19377            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19378            #[doc(hidden)]
19379            type UnderlyingRustTuple<'a> = (
19380                alloy::sol_types::private::primitives::aliases::U256,
19381            );
19382            #[cfg(test)]
19383            #[allow(dead_code, unreachable_patterns)]
19384            fn _type_assertion(
19385                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19386            ) {
19387                match _t {
19388                    alloy_sol_types::private::AssertTypeEq::<
19389                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19390                    >(_) => {}
19391                }
19392            }
19393            #[automatically_derived]
19394            #[doc(hidden)]
19395            impl ::core::convert::From<setMinDelegateAmountCall>
19396            for UnderlyingRustTuple<'_> {
19397                fn from(value: setMinDelegateAmountCall) -> Self {
19398                    (value.newMinDelegateAmount,)
19399                }
19400            }
19401            #[automatically_derived]
19402            #[doc(hidden)]
19403            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19404            for setMinDelegateAmountCall {
19405                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19406                    Self {
19407                        newMinDelegateAmount: tuple.0,
19408                    }
19409                }
19410            }
19411        }
19412        {
19413            #[doc(hidden)]
19414            #[allow(dead_code)]
19415            type UnderlyingSolTuple<'a> = ();
19416            #[doc(hidden)]
19417            type UnderlyingRustTuple<'a> = ();
19418            #[cfg(test)]
19419            #[allow(dead_code, unreachable_patterns)]
19420            fn _type_assertion(
19421                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19422            ) {
19423                match _t {
19424                    alloy_sol_types::private::AssertTypeEq::<
19425                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19426                    >(_) => {}
19427                }
19428            }
19429            #[automatically_derived]
19430            #[doc(hidden)]
19431            impl ::core::convert::From<setMinDelegateAmountReturn>
19432            for UnderlyingRustTuple<'_> {
19433                fn from(value: setMinDelegateAmountReturn) -> Self {
19434                    ()
19435                }
19436            }
19437            #[automatically_derived]
19438            #[doc(hidden)]
19439            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19440            for setMinDelegateAmountReturn {
19441                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19442                    Self {}
19443                }
19444            }
19445        }
19446        impl setMinDelegateAmountReturn {
19447            fn _tokenize(
19448                &self,
19449            ) -> <setMinDelegateAmountCall as alloy_sol_types::SolCall>::ReturnToken<
19450                '_,
19451            > {
19452                ()
19453            }
19454        }
19455        #[automatically_derived]
19456        impl alloy_sol_types::SolCall for setMinDelegateAmountCall {
19457            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19458            type Token<'a> = <Self::Parameters<
19459                'a,
19460            > as alloy_sol_types::SolType>::Token<'a>;
19461            type Return = setMinDelegateAmountReturn;
19462            type ReturnTuple<'a> = ();
19463            type ReturnToken<'a> = <Self::ReturnTuple<
19464                'a,
19465            > as alloy_sol_types::SolType>::Token<'a>;
19466            const SIGNATURE: &'static str = "setMinDelegateAmount(uint256)";
19467            const SELECTOR: [u8; 4] = [62u8, 115u8, 46u8, 186u8];
19468            #[inline]
19469            fn new<'a>(
19470                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19471            ) -> Self {
19472                tuple.into()
19473            }
19474            #[inline]
19475            fn tokenize(&self) -> Self::Token<'_> {
19476                (
19477                    <alloy::sol_types::sol_data::Uint<
19478                        256,
19479                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
19480                )
19481            }
19482            #[inline]
19483            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19484                setMinDelegateAmountReturn::_tokenize(ret)
19485            }
19486            #[inline]
19487            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19488                <Self::ReturnTuple<
19489                    '_,
19490                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19491                    .map(Into::into)
19492            }
19493            #[inline]
19494            fn abi_decode_returns_validate(
19495                data: &[u8],
19496            ) -> alloy_sol_types::Result<Self::Return> {
19497                <Self::ReturnTuple<
19498                    '_,
19499                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19500                    .map(Into::into)
19501            }
19502        }
19503    };
19504    #[derive(serde::Serialize, serde::Deserialize)]
19505    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19506    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
19507```solidity
19508function supportsInterface(bytes4 interfaceId) external view returns (bool);
19509```*/
19510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19511    #[derive(Clone)]
19512    pub struct supportsInterfaceCall {
19513        #[allow(missing_docs)]
19514        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
19515    }
19516    #[derive(serde::Serialize, serde::Deserialize)]
19517    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19518    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
19519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19520    #[derive(Clone)]
19521    pub struct supportsInterfaceReturn {
19522        #[allow(missing_docs)]
19523        pub _0: bool,
19524    }
19525    #[allow(
19526        non_camel_case_types,
19527        non_snake_case,
19528        clippy::pub_underscore_fields,
19529        clippy::style
19530    )]
19531    const _: () = {
19532        use alloy::sol_types as alloy_sol_types;
19533        {
19534            #[doc(hidden)]
19535            #[allow(dead_code)]
19536            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
19537            #[doc(hidden)]
19538            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
19539            #[cfg(test)]
19540            #[allow(dead_code, unreachable_patterns)]
19541            fn _type_assertion(
19542                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19543            ) {
19544                match _t {
19545                    alloy_sol_types::private::AssertTypeEq::<
19546                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19547                    >(_) => {}
19548                }
19549            }
19550            #[automatically_derived]
19551            #[doc(hidden)]
19552            impl ::core::convert::From<supportsInterfaceCall>
19553            for UnderlyingRustTuple<'_> {
19554                fn from(value: supportsInterfaceCall) -> Self {
19555                    (value.interfaceId,)
19556                }
19557            }
19558            #[automatically_derived]
19559            #[doc(hidden)]
19560            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19561            for supportsInterfaceCall {
19562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19563                    Self { interfaceId: tuple.0 }
19564                }
19565            }
19566        }
19567        {
19568            #[doc(hidden)]
19569            #[allow(dead_code)]
19570            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
19571            #[doc(hidden)]
19572            type UnderlyingRustTuple<'a> = (bool,);
19573            #[cfg(test)]
19574            #[allow(dead_code, unreachable_patterns)]
19575            fn _type_assertion(
19576                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19577            ) {
19578                match _t {
19579                    alloy_sol_types::private::AssertTypeEq::<
19580                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19581                    >(_) => {}
19582                }
19583            }
19584            #[automatically_derived]
19585            #[doc(hidden)]
19586            impl ::core::convert::From<supportsInterfaceReturn>
19587            for UnderlyingRustTuple<'_> {
19588                fn from(value: supportsInterfaceReturn) -> Self {
19589                    (value._0,)
19590                }
19591            }
19592            #[automatically_derived]
19593            #[doc(hidden)]
19594            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19595            for supportsInterfaceReturn {
19596                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19597                    Self { _0: tuple.0 }
19598                }
19599            }
19600        }
19601        #[automatically_derived]
19602        impl alloy_sol_types::SolCall for supportsInterfaceCall {
19603            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
19604            type Token<'a> = <Self::Parameters<
19605                'a,
19606            > as alloy_sol_types::SolType>::Token<'a>;
19607            type Return = bool;
19608            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
19609            type ReturnToken<'a> = <Self::ReturnTuple<
19610                'a,
19611            > as alloy_sol_types::SolType>::Token<'a>;
19612            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
19613            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
19614            #[inline]
19615            fn new<'a>(
19616                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19617            ) -> Self {
19618                tuple.into()
19619            }
19620            #[inline]
19621            fn tokenize(&self) -> Self::Token<'_> {
19622                (
19623                    <alloy::sol_types::sol_data::FixedBytes<
19624                        4,
19625                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
19626                )
19627            }
19628            #[inline]
19629            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19630                (
19631                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
19632                        ret,
19633                    ),
19634                )
19635            }
19636            #[inline]
19637            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19638                <Self::ReturnTuple<
19639                    '_,
19640                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19641                    .map(|r| {
19642                        let r: supportsInterfaceReturn = r.into();
19643                        r._0
19644                    })
19645            }
19646            #[inline]
19647            fn abi_decode_returns_validate(
19648                data: &[u8],
19649            ) -> alloy_sol_types::Result<Self::Return> {
19650                <Self::ReturnTuple<
19651                    '_,
19652                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19653                    .map(|r| {
19654                        let r: supportsInterfaceReturn = r.into();
19655                        r._0
19656                    })
19657            }
19658        }
19659    };
19660    #[derive(serde::Serialize, serde::Deserialize)]
19661    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19662    /**Function with signature `token()` and selector `0xfc0c546a`.
19663```solidity
19664function token() external view returns (address);
19665```*/
19666    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19667    #[derive(Clone)]
19668    pub struct tokenCall;
19669    #[derive(serde::Serialize, serde::Deserialize)]
19670    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19671    ///Container type for the return parameters of the [`token()`](tokenCall) function.
19672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19673    #[derive(Clone)]
19674    pub struct tokenReturn {
19675        #[allow(missing_docs)]
19676        pub _0: alloy::sol_types::private::Address,
19677    }
19678    #[allow(
19679        non_camel_case_types,
19680        non_snake_case,
19681        clippy::pub_underscore_fields,
19682        clippy::style
19683    )]
19684    const _: () = {
19685        use alloy::sol_types as alloy_sol_types;
19686        {
19687            #[doc(hidden)]
19688            #[allow(dead_code)]
19689            type UnderlyingSolTuple<'a> = ();
19690            #[doc(hidden)]
19691            type UnderlyingRustTuple<'a> = ();
19692            #[cfg(test)]
19693            #[allow(dead_code, unreachable_patterns)]
19694            fn _type_assertion(
19695                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19696            ) {
19697                match _t {
19698                    alloy_sol_types::private::AssertTypeEq::<
19699                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19700                    >(_) => {}
19701                }
19702            }
19703            #[automatically_derived]
19704            #[doc(hidden)]
19705            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
19706                fn from(value: tokenCall) -> Self {
19707                    ()
19708                }
19709            }
19710            #[automatically_derived]
19711            #[doc(hidden)]
19712            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
19713                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19714                    Self
19715                }
19716            }
19717        }
19718        {
19719            #[doc(hidden)]
19720            #[allow(dead_code)]
19721            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19722            #[doc(hidden)]
19723            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19724            #[cfg(test)]
19725            #[allow(dead_code, unreachable_patterns)]
19726            fn _type_assertion(
19727                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19728            ) {
19729                match _t {
19730                    alloy_sol_types::private::AssertTypeEq::<
19731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19732                    >(_) => {}
19733                }
19734            }
19735            #[automatically_derived]
19736            #[doc(hidden)]
19737            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
19738                fn from(value: tokenReturn) -> Self {
19739                    (value._0,)
19740                }
19741            }
19742            #[automatically_derived]
19743            #[doc(hidden)]
19744            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
19745                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19746                    Self { _0: tuple.0 }
19747                }
19748            }
19749        }
19750        #[automatically_derived]
19751        impl alloy_sol_types::SolCall for tokenCall {
19752            type Parameters<'a> = ();
19753            type Token<'a> = <Self::Parameters<
19754                'a,
19755            > as alloy_sol_types::SolType>::Token<'a>;
19756            type Return = alloy::sol_types::private::Address;
19757            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
19758            type ReturnToken<'a> = <Self::ReturnTuple<
19759                'a,
19760            > as alloy_sol_types::SolType>::Token<'a>;
19761            const SIGNATURE: &'static str = "token()";
19762            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
19763            #[inline]
19764            fn new<'a>(
19765                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19766            ) -> Self {
19767                tuple.into()
19768            }
19769            #[inline]
19770            fn tokenize(&self) -> Self::Token<'_> {
19771                ()
19772            }
19773            #[inline]
19774            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19775                (
19776                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19777                        ret,
19778                    ),
19779                )
19780            }
19781            #[inline]
19782            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19783                <Self::ReturnTuple<
19784                    '_,
19785                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19786                    .map(|r| {
19787                        let r: tokenReturn = r.into();
19788                        r._0
19789                    })
19790            }
19791            #[inline]
19792            fn abi_decode_returns_validate(
19793                data: &[u8],
19794            ) -> alloy_sol_types::Result<Self::Return> {
19795                <Self::ReturnTuple<
19796                    '_,
19797                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19798                    .map(|r| {
19799                        let r: tokenReturn = r.into();
19800                        r._0
19801                    })
19802            }
19803        }
19804    };
19805    #[derive(serde::Serialize, serde::Deserialize)]
19806    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19807    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
19808```solidity
19809function transferOwnership(address newOwner) external;
19810```*/
19811    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19812    #[derive(Clone)]
19813    pub struct transferOwnershipCall {
19814        #[allow(missing_docs)]
19815        pub newOwner: alloy::sol_types::private::Address,
19816    }
19817    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
19818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19819    #[derive(Clone)]
19820    pub struct transferOwnershipReturn {}
19821    #[allow(
19822        non_camel_case_types,
19823        non_snake_case,
19824        clippy::pub_underscore_fields,
19825        clippy::style
19826    )]
19827    const _: () = {
19828        use alloy::sol_types as alloy_sol_types;
19829        {
19830            #[doc(hidden)]
19831            #[allow(dead_code)]
19832            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19833            #[doc(hidden)]
19834            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19835            #[cfg(test)]
19836            #[allow(dead_code, unreachable_patterns)]
19837            fn _type_assertion(
19838                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19839            ) {
19840                match _t {
19841                    alloy_sol_types::private::AssertTypeEq::<
19842                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19843                    >(_) => {}
19844                }
19845            }
19846            #[automatically_derived]
19847            #[doc(hidden)]
19848            impl ::core::convert::From<transferOwnershipCall>
19849            for UnderlyingRustTuple<'_> {
19850                fn from(value: transferOwnershipCall) -> Self {
19851                    (value.newOwner,)
19852                }
19853            }
19854            #[automatically_derived]
19855            #[doc(hidden)]
19856            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19857            for transferOwnershipCall {
19858                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19859                    Self { newOwner: tuple.0 }
19860                }
19861            }
19862        }
19863        {
19864            #[doc(hidden)]
19865            #[allow(dead_code)]
19866            type UnderlyingSolTuple<'a> = ();
19867            #[doc(hidden)]
19868            type UnderlyingRustTuple<'a> = ();
19869            #[cfg(test)]
19870            #[allow(dead_code, unreachable_patterns)]
19871            fn _type_assertion(
19872                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19873            ) {
19874                match _t {
19875                    alloy_sol_types::private::AssertTypeEq::<
19876                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19877                    >(_) => {}
19878                }
19879            }
19880            #[automatically_derived]
19881            #[doc(hidden)]
19882            impl ::core::convert::From<transferOwnershipReturn>
19883            for UnderlyingRustTuple<'_> {
19884                fn from(value: transferOwnershipReturn) -> Self {
19885                    ()
19886                }
19887            }
19888            #[automatically_derived]
19889            #[doc(hidden)]
19890            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19891            for transferOwnershipReturn {
19892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19893                    Self {}
19894                }
19895            }
19896        }
19897        impl transferOwnershipReturn {
19898            fn _tokenize(
19899                &self,
19900            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19901                ()
19902            }
19903        }
19904        #[automatically_derived]
19905        impl alloy_sol_types::SolCall for transferOwnershipCall {
19906            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
19907            type Token<'a> = <Self::Parameters<
19908                'a,
19909            > as alloy_sol_types::SolType>::Token<'a>;
19910            type Return = transferOwnershipReturn;
19911            type ReturnTuple<'a> = ();
19912            type ReturnToken<'a> = <Self::ReturnTuple<
19913                'a,
19914            > as alloy_sol_types::SolType>::Token<'a>;
19915            const SIGNATURE: &'static str = "transferOwnership(address)";
19916            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
19917            #[inline]
19918            fn new<'a>(
19919                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19920            ) -> Self {
19921                tuple.into()
19922            }
19923            #[inline]
19924            fn tokenize(&self) -> Self::Token<'_> {
19925                (
19926                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19927                        &self.newOwner,
19928                    ),
19929                )
19930            }
19931            #[inline]
19932            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19933                transferOwnershipReturn::_tokenize(ret)
19934            }
19935            #[inline]
19936            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19937                <Self::ReturnTuple<
19938                    '_,
19939                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19940                    .map(Into::into)
19941            }
19942            #[inline]
19943            fn abi_decode_returns_validate(
19944                data: &[u8],
19945            ) -> alloy_sol_types::Result<Self::Return> {
19946                <Self::ReturnTuple<
19947                    '_,
19948                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19949                    .map(Into::into)
19950            }
19951        }
19952    };
19953    #[derive(serde::Serialize, serde::Deserialize)]
19954    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19955    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
19956```solidity
19957function undelegate(address validator, uint256 amount) external;
19958```*/
19959    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19960    #[derive(Clone)]
19961    pub struct undelegateCall {
19962        #[allow(missing_docs)]
19963        pub validator: alloy::sol_types::private::Address,
19964        #[allow(missing_docs)]
19965        pub amount: alloy::sol_types::private::primitives::aliases::U256,
19966    }
19967    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
19968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19969    #[derive(Clone)]
19970    pub struct undelegateReturn {}
19971    #[allow(
19972        non_camel_case_types,
19973        non_snake_case,
19974        clippy::pub_underscore_fields,
19975        clippy::style
19976    )]
19977    const _: () = {
19978        use alloy::sol_types as alloy_sol_types;
19979        {
19980            #[doc(hidden)]
19981            #[allow(dead_code)]
19982            type UnderlyingSolTuple<'a> = (
19983                alloy::sol_types::sol_data::Address,
19984                alloy::sol_types::sol_data::Uint<256>,
19985            );
19986            #[doc(hidden)]
19987            type UnderlyingRustTuple<'a> = (
19988                alloy::sol_types::private::Address,
19989                alloy::sol_types::private::primitives::aliases::U256,
19990            );
19991            #[cfg(test)]
19992            #[allow(dead_code, unreachable_patterns)]
19993            fn _type_assertion(
19994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19995            ) {
19996                match _t {
19997                    alloy_sol_types::private::AssertTypeEq::<
19998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19999                    >(_) => {}
20000                }
20001            }
20002            #[automatically_derived]
20003            #[doc(hidden)]
20004            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
20005                fn from(value: undelegateCall) -> Self {
20006                    (value.validator, value.amount)
20007                }
20008            }
20009            #[automatically_derived]
20010            #[doc(hidden)]
20011            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
20012                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20013                    Self {
20014                        validator: tuple.0,
20015                        amount: tuple.1,
20016                    }
20017                }
20018            }
20019        }
20020        {
20021            #[doc(hidden)]
20022            #[allow(dead_code)]
20023            type UnderlyingSolTuple<'a> = ();
20024            #[doc(hidden)]
20025            type UnderlyingRustTuple<'a> = ();
20026            #[cfg(test)]
20027            #[allow(dead_code, unreachable_patterns)]
20028            fn _type_assertion(
20029                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20030            ) {
20031                match _t {
20032                    alloy_sol_types::private::AssertTypeEq::<
20033                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20034                    >(_) => {}
20035                }
20036            }
20037            #[automatically_derived]
20038            #[doc(hidden)]
20039            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
20040                fn from(value: undelegateReturn) -> Self {
20041                    ()
20042                }
20043            }
20044            #[automatically_derived]
20045            #[doc(hidden)]
20046            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
20047                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20048                    Self {}
20049                }
20050            }
20051        }
20052        impl undelegateReturn {
20053            fn _tokenize(
20054                &self,
20055            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20056                ()
20057            }
20058        }
20059        #[automatically_derived]
20060        impl alloy_sol_types::SolCall for undelegateCall {
20061            type Parameters<'a> = (
20062                alloy::sol_types::sol_data::Address,
20063                alloy::sol_types::sol_data::Uint<256>,
20064            );
20065            type Token<'a> = <Self::Parameters<
20066                'a,
20067            > as alloy_sol_types::SolType>::Token<'a>;
20068            type Return = undelegateReturn;
20069            type ReturnTuple<'a> = ();
20070            type ReturnToken<'a> = <Self::ReturnTuple<
20071                'a,
20072            > as alloy_sol_types::SolType>::Token<'a>;
20073            const SIGNATURE: &'static str = "undelegate(address,uint256)";
20074            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
20075            #[inline]
20076            fn new<'a>(
20077                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20078            ) -> Self {
20079                tuple.into()
20080            }
20081            #[inline]
20082            fn tokenize(&self) -> Self::Token<'_> {
20083                (
20084                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20085                        &self.validator,
20086                    ),
20087                    <alloy::sol_types::sol_data::Uint<
20088                        256,
20089                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
20090                )
20091            }
20092            #[inline]
20093            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20094                undelegateReturn::_tokenize(ret)
20095            }
20096            #[inline]
20097            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20098                <Self::ReturnTuple<
20099                    '_,
20100                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20101                    .map(Into::into)
20102            }
20103            #[inline]
20104            fn abi_decode_returns_validate(
20105                data: &[u8],
20106            ) -> alloy_sol_types::Result<Self::Return> {
20107                <Self::ReturnTuple<
20108                    '_,
20109                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20110                    .map(Into::into)
20111            }
20112        }
20113    };
20114    #[derive(serde::Serialize, serde::Deserialize)]
20115    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20116    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
20117```solidity
20118function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
20119```*/
20120    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20121    #[derive(Clone)]
20122    pub struct undelegationsCall {
20123        #[allow(missing_docs)]
20124        pub validator: alloy::sol_types::private::Address,
20125        #[allow(missing_docs)]
20126        pub delegator: alloy::sol_types::private::Address,
20127    }
20128    #[derive(serde::Serialize, serde::Deserialize)]
20129    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20130    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
20131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20132    #[derive(Clone)]
20133    pub struct undelegationsReturn {
20134        #[allow(missing_docs)]
20135        pub amount: alloy::sol_types::private::primitives::aliases::U256,
20136        #[allow(missing_docs)]
20137        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
20138    }
20139    #[allow(
20140        non_camel_case_types,
20141        non_snake_case,
20142        clippy::pub_underscore_fields,
20143        clippy::style
20144    )]
20145    const _: () = {
20146        use alloy::sol_types as alloy_sol_types;
20147        {
20148            #[doc(hidden)]
20149            #[allow(dead_code)]
20150            type UnderlyingSolTuple<'a> = (
20151                alloy::sol_types::sol_data::Address,
20152                alloy::sol_types::sol_data::Address,
20153            );
20154            #[doc(hidden)]
20155            type UnderlyingRustTuple<'a> = (
20156                alloy::sol_types::private::Address,
20157                alloy::sol_types::private::Address,
20158            );
20159            #[cfg(test)]
20160            #[allow(dead_code, unreachable_patterns)]
20161            fn _type_assertion(
20162                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20163            ) {
20164                match _t {
20165                    alloy_sol_types::private::AssertTypeEq::<
20166                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20167                    >(_) => {}
20168                }
20169            }
20170            #[automatically_derived]
20171            #[doc(hidden)]
20172            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
20173                fn from(value: undelegationsCall) -> Self {
20174                    (value.validator, value.delegator)
20175                }
20176            }
20177            #[automatically_derived]
20178            #[doc(hidden)]
20179            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
20180                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20181                    Self {
20182                        validator: tuple.0,
20183                        delegator: tuple.1,
20184                    }
20185                }
20186            }
20187        }
20188        {
20189            #[doc(hidden)]
20190            #[allow(dead_code)]
20191            type UnderlyingSolTuple<'a> = (
20192                alloy::sol_types::sol_data::Uint<256>,
20193                alloy::sol_types::sol_data::Uint<256>,
20194            );
20195            #[doc(hidden)]
20196            type UnderlyingRustTuple<'a> = (
20197                alloy::sol_types::private::primitives::aliases::U256,
20198                alloy::sol_types::private::primitives::aliases::U256,
20199            );
20200            #[cfg(test)]
20201            #[allow(dead_code, unreachable_patterns)]
20202            fn _type_assertion(
20203                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20204            ) {
20205                match _t {
20206                    alloy_sol_types::private::AssertTypeEq::<
20207                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20208                    >(_) => {}
20209                }
20210            }
20211            #[automatically_derived]
20212            #[doc(hidden)]
20213            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
20214                fn from(value: undelegationsReturn) -> Self {
20215                    (value.amount, value.unlocksAt)
20216                }
20217            }
20218            #[automatically_derived]
20219            #[doc(hidden)]
20220            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
20221                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20222                    Self {
20223                        amount: tuple.0,
20224                        unlocksAt: tuple.1,
20225                    }
20226                }
20227            }
20228        }
20229        impl undelegationsReturn {
20230            fn _tokenize(
20231                &self,
20232            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20233                (
20234                    <alloy::sol_types::sol_data::Uint<
20235                        256,
20236                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
20237                    <alloy::sol_types::sol_data::Uint<
20238                        256,
20239                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
20240                )
20241            }
20242        }
20243        #[automatically_derived]
20244        impl alloy_sol_types::SolCall for undelegationsCall {
20245            type Parameters<'a> = (
20246                alloy::sol_types::sol_data::Address,
20247                alloy::sol_types::sol_data::Address,
20248            );
20249            type Token<'a> = <Self::Parameters<
20250                'a,
20251            > as alloy_sol_types::SolType>::Token<'a>;
20252            type Return = undelegationsReturn;
20253            type ReturnTuple<'a> = (
20254                alloy::sol_types::sol_data::Uint<256>,
20255                alloy::sol_types::sol_data::Uint<256>,
20256            );
20257            type ReturnToken<'a> = <Self::ReturnTuple<
20258                'a,
20259            > as alloy_sol_types::SolType>::Token<'a>;
20260            const SIGNATURE: &'static str = "undelegations(address,address)";
20261            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
20262            #[inline]
20263            fn new<'a>(
20264                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20265            ) -> Self {
20266                tuple.into()
20267            }
20268            #[inline]
20269            fn tokenize(&self) -> Self::Token<'_> {
20270                (
20271                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20272                        &self.validator,
20273                    ),
20274                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20275                        &self.delegator,
20276                    ),
20277                )
20278            }
20279            #[inline]
20280            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20281                undelegationsReturn::_tokenize(ret)
20282            }
20283            #[inline]
20284            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20285                <Self::ReturnTuple<
20286                    '_,
20287                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20288                    .map(Into::into)
20289            }
20290            #[inline]
20291            fn abi_decode_returns_validate(
20292                data: &[u8],
20293            ) -> alloy_sol_types::Result<Self::Return> {
20294                <Self::ReturnTuple<
20295                    '_,
20296                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20297                    .map(Into::into)
20298            }
20299        }
20300    };
20301    #[derive(serde::Serialize, serde::Deserialize)]
20302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20303    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
20304```solidity
20305function unpause() external;
20306```*/
20307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20308    #[derive(Clone)]
20309    pub struct unpauseCall;
20310    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
20311    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20312    #[derive(Clone)]
20313    pub struct unpauseReturn {}
20314    #[allow(
20315        non_camel_case_types,
20316        non_snake_case,
20317        clippy::pub_underscore_fields,
20318        clippy::style
20319    )]
20320    const _: () = {
20321        use alloy::sol_types as alloy_sol_types;
20322        {
20323            #[doc(hidden)]
20324            #[allow(dead_code)]
20325            type UnderlyingSolTuple<'a> = ();
20326            #[doc(hidden)]
20327            type UnderlyingRustTuple<'a> = ();
20328            #[cfg(test)]
20329            #[allow(dead_code, unreachable_patterns)]
20330            fn _type_assertion(
20331                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20332            ) {
20333                match _t {
20334                    alloy_sol_types::private::AssertTypeEq::<
20335                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20336                    >(_) => {}
20337                }
20338            }
20339            #[automatically_derived]
20340            #[doc(hidden)]
20341            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
20342                fn from(value: unpauseCall) -> Self {
20343                    ()
20344                }
20345            }
20346            #[automatically_derived]
20347            #[doc(hidden)]
20348            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
20349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20350                    Self
20351                }
20352            }
20353        }
20354        {
20355            #[doc(hidden)]
20356            #[allow(dead_code)]
20357            type UnderlyingSolTuple<'a> = ();
20358            #[doc(hidden)]
20359            type UnderlyingRustTuple<'a> = ();
20360            #[cfg(test)]
20361            #[allow(dead_code, unreachable_patterns)]
20362            fn _type_assertion(
20363                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20364            ) {
20365                match _t {
20366                    alloy_sol_types::private::AssertTypeEq::<
20367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20368                    >(_) => {}
20369                }
20370            }
20371            #[automatically_derived]
20372            #[doc(hidden)]
20373            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
20374                fn from(value: unpauseReturn) -> Self {
20375                    ()
20376                }
20377            }
20378            #[automatically_derived]
20379            #[doc(hidden)]
20380            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
20381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20382                    Self {}
20383                }
20384            }
20385        }
20386        impl unpauseReturn {
20387            fn _tokenize(
20388                &self,
20389            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20390                ()
20391            }
20392        }
20393        #[automatically_derived]
20394        impl alloy_sol_types::SolCall for unpauseCall {
20395            type Parameters<'a> = ();
20396            type Token<'a> = <Self::Parameters<
20397                'a,
20398            > as alloy_sol_types::SolType>::Token<'a>;
20399            type Return = unpauseReturn;
20400            type ReturnTuple<'a> = ();
20401            type ReturnToken<'a> = <Self::ReturnTuple<
20402                'a,
20403            > as alloy_sol_types::SolType>::Token<'a>;
20404            const SIGNATURE: &'static str = "unpause()";
20405            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
20406            #[inline]
20407            fn new<'a>(
20408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20409            ) -> Self {
20410                tuple.into()
20411            }
20412            #[inline]
20413            fn tokenize(&self) -> Self::Token<'_> {
20414                ()
20415            }
20416            #[inline]
20417            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20418                unpauseReturn::_tokenize(ret)
20419            }
20420            #[inline]
20421            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20422                <Self::ReturnTuple<
20423                    '_,
20424                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20425                    .map(Into::into)
20426            }
20427            #[inline]
20428            fn abi_decode_returns_validate(
20429                data: &[u8],
20430            ) -> alloy_sol_types::Result<Self::Return> {
20431                <Self::ReturnTuple<
20432                    '_,
20433                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20434                    .map(Into::into)
20435            }
20436        }
20437    };
20438    #[derive(serde::Serialize, serde::Deserialize)]
20439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20440    /**Function with signature `updateCommission(uint16)` and selector `0x3b2b7ffa`.
20441```solidity
20442function updateCommission(uint16 newCommission) external;
20443```*/
20444    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20445    #[derive(Clone)]
20446    pub struct updateCommissionCall {
20447        #[allow(missing_docs)]
20448        pub newCommission: u16,
20449    }
20450    ///Container type for the return parameters of the [`updateCommission(uint16)`](updateCommissionCall) function.
20451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20452    #[derive(Clone)]
20453    pub struct updateCommissionReturn {}
20454    #[allow(
20455        non_camel_case_types,
20456        non_snake_case,
20457        clippy::pub_underscore_fields,
20458        clippy::style
20459    )]
20460    const _: () = {
20461        use alloy::sol_types as alloy_sol_types;
20462        {
20463            #[doc(hidden)]
20464            #[allow(dead_code)]
20465            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
20466            #[doc(hidden)]
20467            type UnderlyingRustTuple<'a> = (u16,);
20468            #[cfg(test)]
20469            #[allow(dead_code, unreachable_patterns)]
20470            fn _type_assertion(
20471                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20472            ) {
20473                match _t {
20474                    alloy_sol_types::private::AssertTypeEq::<
20475                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20476                    >(_) => {}
20477                }
20478            }
20479            #[automatically_derived]
20480            #[doc(hidden)]
20481            impl ::core::convert::From<updateCommissionCall>
20482            for UnderlyingRustTuple<'_> {
20483                fn from(value: updateCommissionCall) -> Self {
20484                    (value.newCommission,)
20485                }
20486            }
20487            #[automatically_derived]
20488            #[doc(hidden)]
20489            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20490            for updateCommissionCall {
20491                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20492                    Self { newCommission: tuple.0 }
20493                }
20494            }
20495        }
20496        {
20497            #[doc(hidden)]
20498            #[allow(dead_code)]
20499            type UnderlyingSolTuple<'a> = ();
20500            #[doc(hidden)]
20501            type UnderlyingRustTuple<'a> = ();
20502            #[cfg(test)]
20503            #[allow(dead_code, unreachable_patterns)]
20504            fn _type_assertion(
20505                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20506            ) {
20507                match _t {
20508                    alloy_sol_types::private::AssertTypeEq::<
20509                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20510                    >(_) => {}
20511                }
20512            }
20513            #[automatically_derived]
20514            #[doc(hidden)]
20515            impl ::core::convert::From<updateCommissionReturn>
20516            for UnderlyingRustTuple<'_> {
20517                fn from(value: updateCommissionReturn) -> Self {
20518                    ()
20519                }
20520            }
20521            #[automatically_derived]
20522            #[doc(hidden)]
20523            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20524            for updateCommissionReturn {
20525                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20526                    Self {}
20527                }
20528            }
20529        }
20530        impl updateCommissionReturn {
20531            fn _tokenize(
20532                &self,
20533            ) -> <updateCommissionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20534                ()
20535            }
20536        }
20537        #[automatically_derived]
20538        impl alloy_sol_types::SolCall for updateCommissionCall {
20539            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
20540            type Token<'a> = <Self::Parameters<
20541                'a,
20542            > as alloy_sol_types::SolType>::Token<'a>;
20543            type Return = updateCommissionReturn;
20544            type ReturnTuple<'a> = ();
20545            type ReturnToken<'a> = <Self::ReturnTuple<
20546                'a,
20547            > as alloy_sol_types::SolType>::Token<'a>;
20548            const SIGNATURE: &'static str = "updateCommission(uint16)";
20549            const SELECTOR: [u8; 4] = [59u8, 43u8, 127u8, 250u8];
20550            #[inline]
20551            fn new<'a>(
20552                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20553            ) -> Self {
20554                tuple.into()
20555            }
20556            #[inline]
20557            fn tokenize(&self) -> Self::Token<'_> {
20558                (
20559                    <alloy::sol_types::sol_data::Uint<
20560                        16,
20561                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
20562                )
20563            }
20564            #[inline]
20565            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20566                updateCommissionReturn::_tokenize(ret)
20567            }
20568            #[inline]
20569            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20570                <Self::ReturnTuple<
20571                    '_,
20572                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20573                    .map(Into::into)
20574            }
20575            #[inline]
20576            fn abi_decode_returns_validate(
20577                data: &[u8],
20578            ) -> alloy_sol_types::Result<Self::Return> {
20579                <Self::ReturnTuple<
20580                    '_,
20581                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20582                    .map(Into::into)
20583            }
20584        }
20585    };
20586    #[derive(serde::Serialize, serde::Deserialize)]
20587    #[derive()]
20588    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
20589```solidity
20590function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
20591```*/
20592    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20593    #[derive(Clone)]
20594    pub struct updateConsensusKeysCall {
20595        #[allow(missing_docs)]
20596        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20597        #[allow(missing_docs)]
20598        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20599        #[allow(missing_docs)]
20600        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20601    }
20602    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
20603    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20604    #[derive(Clone)]
20605    pub struct updateConsensusKeysReturn {}
20606    #[allow(
20607        non_camel_case_types,
20608        non_snake_case,
20609        clippy::pub_underscore_fields,
20610        clippy::style
20611    )]
20612    const _: () = {
20613        use alloy::sol_types as alloy_sol_types;
20614        {
20615            #[doc(hidden)]
20616            #[allow(dead_code)]
20617            type UnderlyingSolTuple<'a> = (
20618                BN254::G2Point,
20619                EdOnBN254::EdOnBN254Point,
20620                BN254::G1Point,
20621            );
20622            #[doc(hidden)]
20623            type UnderlyingRustTuple<'a> = (
20624                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20625                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20626                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20627            );
20628            #[cfg(test)]
20629            #[allow(dead_code, unreachable_patterns)]
20630            fn _type_assertion(
20631                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20632            ) {
20633                match _t {
20634                    alloy_sol_types::private::AssertTypeEq::<
20635                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20636                    >(_) => {}
20637                }
20638            }
20639            #[automatically_derived]
20640            #[doc(hidden)]
20641            impl ::core::convert::From<updateConsensusKeysCall>
20642            for UnderlyingRustTuple<'_> {
20643                fn from(value: updateConsensusKeysCall) -> Self {
20644                    (value._0, value._1, value._2)
20645                }
20646            }
20647            #[automatically_derived]
20648            #[doc(hidden)]
20649            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20650            for updateConsensusKeysCall {
20651                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20652                    Self {
20653                        _0: tuple.0,
20654                        _1: tuple.1,
20655                        _2: tuple.2,
20656                    }
20657                }
20658            }
20659        }
20660        {
20661            #[doc(hidden)]
20662            #[allow(dead_code)]
20663            type UnderlyingSolTuple<'a> = ();
20664            #[doc(hidden)]
20665            type UnderlyingRustTuple<'a> = ();
20666            #[cfg(test)]
20667            #[allow(dead_code, unreachable_patterns)]
20668            fn _type_assertion(
20669                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20670            ) {
20671                match _t {
20672                    alloy_sol_types::private::AssertTypeEq::<
20673                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20674                    >(_) => {}
20675                }
20676            }
20677            #[automatically_derived]
20678            #[doc(hidden)]
20679            impl ::core::convert::From<updateConsensusKeysReturn>
20680            for UnderlyingRustTuple<'_> {
20681                fn from(value: updateConsensusKeysReturn) -> Self {
20682                    ()
20683                }
20684            }
20685            #[automatically_derived]
20686            #[doc(hidden)]
20687            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20688            for updateConsensusKeysReturn {
20689                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20690                    Self {}
20691                }
20692            }
20693        }
20694        impl updateConsensusKeysReturn {
20695            fn _tokenize(
20696                &self,
20697            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20698                ()
20699            }
20700        }
20701        #[automatically_derived]
20702        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
20703            type Parameters<'a> = (
20704                BN254::G2Point,
20705                EdOnBN254::EdOnBN254Point,
20706                BN254::G1Point,
20707            );
20708            type Token<'a> = <Self::Parameters<
20709                'a,
20710            > as alloy_sol_types::SolType>::Token<'a>;
20711            type Return = updateConsensusKeysReturn;
20712            type ReturnTuple<'a> = ();
20713            type ReturnToken<'a> = <Self::ReturnTuple<
20714                'a,
20715            > as alloy_sol_types::SolType>::Token<'a>;
20716            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
20717            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
20718            #[inline]
20719            fn new<'a>(
20720                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20721            ) -> Self {
20722                tuple.into()
20723            }
20724            #[inline]
20725            fn tokenize(&self) -> Self::Token<'_> {
20726                (
20727                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
20728                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
20729                        &self._1,
20730                    ),
20731                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
20732                )
20733            }
20734            #[inline]
20735            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20736                updateConsensusKeysReturn::_tokenize(ret)
20737            }
20738            #[inline]
20739            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20740                <Self::ReturnTuple<
20741                    '_,
20742                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20743                    .map(Into::into)
20744            }
20745            #[inline]
20746            fn abi_decode_returns_validate(
20747                data: &[u8],
20748            ) -> alloy_sol_types::Result<Self::Return> {
20749                <Self::ReturnTuple<
20750                    '_,
20751                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20752                    .map(Into::into)
20753            }
20754        }
20755    };
20756    #[derive(serde::Serialize, serde::Deserialize)]
20757    #[derive()]
20758    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
20759```solidity
20760function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
20761```*/
20762    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20763    #[derive(Clone)]
20764    pub struct updateConsensusKeysV2Call {
20765        #[allow(missing_docs)]
20766        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20767        #[allow(missing_docs)]
20768        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20769        #[allow(missing_docs)]
20770        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20771        #[allow(missing_docs)]
20772        pub schnorrSig: alloy::sol_types::private::Bytes,
20773    }
20774    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
20775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20776    #[derive(Clone)]
20777    pub struct updateConsensusKeysV2Return {}
20778    #[allow(
20779        non_camel_case_types,
20780        non_snake_case,
20781        clippy::pub_underscore_fields,
20782        clippy::style
20783    )]
20784    const _: () = {
20785        use alloy::sol_types as alloy_sol_types;
20786        {
20787            #[doc(hidden)]
20788            #[allow(dead_code)]
20789            type UnderlyingSolTuple<'a> = (
20790                BN254::G2Point,
20791                EdOnBN254::EdOnBN254Point,
20792                BN254::G1Point,
20793                alloy::sol_types::sol_data::Bytes,
20794            );
20795            #[doc(hidden)]
20796            type UnderlyingRustTuple<'a> = (
20797                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20798                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20799                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20800                alloy::sol_types::private::Bytes,
20801            );
20802            #[cfg(test)]
20803            #[allow(dead_code, unreachable_patterns)]
20804            fn _type_assertion(
20805                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20806            ) {
20807                match _t {
20808                    alloy_sol_types::private::AssertTypeEq::<
20809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20810                    >(_) => {}
20811                }
20812            }
20813            #[automatically_derived]
20814            #[doc(hidden)]
20815            impl ::core::convert::From<updateConsensusKeysV2Call>
20816            for UnderlyingRustTuple<'_> {
20817                fn from(value: updateConsensusKeysV2Call) -> Self {
20818                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
20819                }
20820            }
20821            #[automatically_derived]
20822            #[doc(hidden)]
20823            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20824            for updateConsensusKeysV2Call {
20825                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20826                    Self {
20827                        blsVK: tuple.0,
20828                        schnorrVK: tuple.1,
20829                        blsSig: tuple.2,
20830                        schnorrSig: tuple.3,
20831                    }
20832                }
20833            }
20834        }
20835        {
20836            #[doc(hidden)]
20837            #[allow(dead_code)]
20838            type UnderlyingSolTuple<'a> = ();
20839            #[doc(hidden)]
20840            type UnderlyingRustTuple<'a> = ();
20841            #[cfg(test)]
20842            #[allow(dead_code, unreachable_patterns)]
20843            fn _type_assertion(
20844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20845            ) {
20846                match _t {
20847                    alloy_sol_types::private::AssertTypeEq::<
20848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20849                    >(_) => {}
20850                }
20851            }
20852            #[automatically_derived]
20853            #[doc(hidden)]
20854            impl ::core::convert::From<updateConsensusKeysV2Return>
20855            for UnderlyingRustTuple<'_> {
20856                fn from(value: updateConsensusKeysV2Return) -> Self {
20857                    ()
20858                }
20859            }
20860            #[automatically_derived]
20861            #[doc(hidden)]
20862            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20863            for updateConsensusKeysV2Return {
20864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20865                    Self {}
20866                }
20867            }
20868        }
20869        impl updateConsensusKeysV2Return {
20870            fn _tokenize(
20871                &self,
20872            ) -> <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::ReturnToken<
20873                '_,
20874            > {
20875                ()
20876            }
20877        }
20878        #[automatically_derived]
20879        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
20880            type Parameters<'a> = (
20881                BN254::G2Point,
20882                EdOnBN254::EdOnBN254Point,
20883                BN254::G1Point,
20884                alloy::sol_types::sol_data::Bytes,
20885            );
20886            type Token<'a> = <Self::Parameters<
20887                'a,
20888            > as alloy_sol_types::SolType>::Token<'a>;
20889            type Return = updateConsensusKeysV2Return;
20890            type ReturnTuple<'a> = ();
20891            type ReturnToken<'a> = <Self::ReturnTuple<
20892                'a,
20893            > as alloy_sol_types::SolType>::Token<'a>;
20894            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
20895            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
20896            #[inline]
20897            fn new<'a>(
20898                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20899            ) -> Self {
20900                tuple.into()
20901            }
20902            #[inline]
20903            fn tokenize(&self) -> Self::Token<'_> {
20904                (
20905                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
20906                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
20907                        &self.schnorrVK,
20908                    ),
20909                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
20910                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
20911                        &self.schnorrSig,
20912                    ),
20913                )
20914            }
20915            #[inline]
20916            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20917                updateConsensusKeysV2Return::_tokenize(ret)
20918            }
20919            #[inline]
20920            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20921                <Self::ReturnTuple<
20922                    '_,
20923                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20924                    .map(Into::into)
20925            }
20926            #[inline]
20927            fn abi_decode_returns_validate(
20928                data: &[u8],
20929            ) -> alloy_sol_types::Result<Self::Return> {
20930                <Self::ReturnTuple<
20931                    '_,
20932                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20933                    .map(Into::into)
20934            }
20935        }
20936    };
20937    #[derive(serde::Serialize, serde::Deserialize)]
20938    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20939    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
20940```solidity
20941function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
20942```*/
20943    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20944    #[derive(Clone)]
20945    pub struct updateExitEscrowPeriodCall {
20946        #[allow(missing_docs)]
20947        pub newExitEscrowPeriod: u64,
20948    }
20949    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
20950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20951    #[derive(Clone)]
20952    pub struct updateExitEscrowPeriodReturn {}
20953    #[allow(
20954        non_camel_case_types,
20955        non_snake_case,
20956        clippy::pub_underscore_fields,
20957        clippy::style
20958    )]
20959    const _: () = {
20960        use alloy::sol_types as alloy_sol_types;
20961        {
20962            #[doc(hidden)]
20963            #[allow(dead_code)]
20964            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
20965            #[doc(hidden)]
20966            type UnderlyingRustTuple<'a> = (u64,);
20967            #[cfg(test)]
20968            #[allow(dead_code, unreachable_patterns)]
20969            fn _type_assertion(
20970                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20971            ) {
20972                match _t {
20973                    alloy_sol_types::private::AssertTypeEq::<
20974                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20975                    >(_) => {}
20976                }
20977            }
20978            #[automatically_derived]
20979            #[doc(hidden)]
20980            impl ::core::convert::From<updateExitEscrowPeriodCall>
20981            for UnderlyingRustTuple<'_> {
20982                fn from(value: updateExitEscrowPeriodCall) -> Self {
20983                    (value.newExitEscrowPeriod,)
20984                }
20985            }
20986            #[automatically_derived]
20987            #[doc(hidden)]
20988            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20989            for updateExitEscrowPeriodCall {
20990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20991                    Self {
20992                        newExitEscrowPeriod: tuple.0,
20993                    }
20994                }
20995            }
20996        }
20997        {
20998            #[doc(hidden)]
20999            #[allow(dead_code)]
21000            type UnderlyingSolTuple<'a> = ();
21001            #[doc(hidden)]
21002            type UnderlyingRustTuple<'a> = ();
21003            #[cfg(test)]
21004            #[allow(dead_code, unreachable_patterns)]
21005            fn _type_assertion(
21006                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21007            ) {
21008                match _t {
21009                    alloy_sol_types::private::AssertTypeEq::<
21010                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21011                    >(_) => {}
21012                }
21013            }
21014            #[automatically_derived]
21015            #[doc(hidden)]
21016            impl ::core::convert::From<updateExitEscrowPeriodReturn>
21017            for UnderlyingRustTuple<'_> {
21018                fn from(value: updateExitEscrowPeriodReturn) -> Self {
21019                    ()
21020                }
21021            }
21022            #[automatically_derived]
21023            #[doc(hidden)]
21024            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21025            for updateExitEscrowPeriodReturn {
21026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21027                    Self {}
21028                }
21029            }
21030        }
21031        impl updateExitEscrowPeriodReturn {
21032            fn _tokenize(
21033                &self,
21034            ) -> <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
21035                '_,
21036            > {
21037                ()
21038            }
21039        }
21040        #[automatically_derived]
21041        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
21042            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
21043            type Token<'a> = <Self::Parameters<
21044                'a,
21045            > as alloy_sol_types::SolType>::Token<'a>;
21046            type Return = updateExitEscrowPeriodReturn;
21047            type ReturnTuple<'a> = ();
21048            type ReturnToken<'a> = <Self::ReturnTuple<
21049                'a,
21050            > as alloy_sol_types::SolType>::Token<'a>;
21051            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
21052            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
21053            #[inline]
21054            fn new<'a>(
21055                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21056            ) -> Self {
21057                tuple.into()
21058            }
21059            #[inline]
21060            fn tokenize(&self) -> Self::Token<'_> {
21061                (
21062                    <alloy::sol_types::sol_data::Uint<
21063                        64,
21064                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
21065                )
21066            }
21067            #[inline]
21068            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21069                updateExitEscrowPeriodReturn::_tokenize(ret)
21070            }
21071            #[inline]
21072            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21073                <Self::ReturnTuple<
21074                    '_,
21075                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21076                    .map(Into::into)
21077            }
21078            #[inline]
21079            fn abi_decode_returns_validate(
21080                data: &[u8],
21081            ) -> alloy_sol_types::Result<Self::Return> {
21082                <Self::ReturnTuple<
21083                    '_,
21084                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21085                    .map(Into::into)
21086            }
21087        }
21088    };
21089    #[derive(serde::Serialize, serde::Deserialize)]
21090    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21091    /**Function with signature `updateMetadataUri(string)` and selector `0x870c8f26`.
21092```solidity
21093function updateMetadataUri(string memory metadataUri) external;
21094```*/
21095    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21096    #[derive(Clone)]
21097    pub struct updateMetadataUriCall {
21098        #[allow(missing_docs)]
21099        pub metadataUri: alloy::sol_types::private::String,
21100    }
21101    ///Container type for the return parameters of the [`updateMetadataUri(string)`](updateMetadataUriCall) function.
21102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21103    #[derive(Clone)]
21104    pub struct updateMetadataUriReturn {}
21105    #[allow(
21106        non_camel_case_types,
21107        non_snake_case,
21108        clippy::pub_underscore_fields,
21109        clippy::style
21110    )]
21111    const _: () = {
21112        use alloy::sol_types as alloy_sol_types;
21113        {
21114            #[doc(hidden)]
21115            #[allow(dead_code)]
21116            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
21117            #[doc(hidden)]
21118            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
21119            #[cfg(test)]
21120            #[allow(dead_code, unreachable_patterns)]
21121            fn _type_assertion(
21122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21123            ) {
21124                match _t {
21125                    alloy_sol_types::private::AssertTypeEq::<
21126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21127                    >(_) => {}
21128                }
21129            }
21130            #[automatically_derived]
21131            #[doc(hidden)]
21132            impl ::core::convert::From<updateMetadataUriCall>
21133            for UnderlyingRustTuple<'_> {
21134                fn from(value: updateMetadataUriCall) -> Self {
21135                    (value.metadataUri,)
21136                }
21137            }
21138            #[automatically_derived]
21139            #[doc(hidden)]
21140            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21141            for updateMetadataUriCall {
21142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21143                    Self { metadataUri: tuple.0 }
21144                }
21145            }
21146        }
21147        {
21148            #[doc(hidden)]
21149            #[allow(dead_code)]
21150            type UnderlyingSolTuple<'a> = ();
21151            #[doc(hidden)]
21152            type UnderlyingRustTuple<'a> = ();
21153            #[cfg(test)]
21154            #[allow(dead_code, unreachable_patterns)]
21155            fn _type_assertion(
21156                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21157            ) {
21158                match _t {
21159                    alloy_sol_types::private::AssertTypeEq::<
21160                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21161                    >(_) => {}
21162                }
21163            }
21164            #[automatically_derived]
21165            #[doc(hidden)]
21166            impl ::core::convert::From<updateMetadataUriReturn>
21167            for UnderlyingRustTuple<'_> {
21168                fn from(value: updateMetadataUriReturn) -> Self {
21169                    ()
21170                }
21171            }
21172            #[automatically_derived]
21173            #[doc(hidden)]
21174            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21175            for updateMetadataUriReturn {
21176                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21177                    Self {}
21178                }
21179            }
21180        }
21181        impl updateMetadataUriReturn {
21182            fn _tokenize(
21183                &self,
21184            ) -> <updateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21185                ()
21186            }
21187        }
21188        #[automatically_derived]
21189        impl alloy_sol_types::SolCall for updateMetadataUriCall {
21190            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
21191            type Token<'a> = <Self::Parameters<
21192                'a,
21193            > as alloy_sol_types::SolType>::Token<'a>;
21194            type Return = updateMetadataUriReturn;
21195            type ReturnTuple<'a> = ();
21196            type ReturnToken<'a> = <Self::ReturnTuple<
21197                'a,
21198            > as alloy_sol_types::SolType>::Token<'a>;
21199            const SIGNATURE: &'static str = "updateMetadataUri(string)";
21200            const SELECTOR: [u8; 4] = [135u8, 12u8, 143u8, 38u8];
21201            #[inline]
21202            fn new<'a>(
21203                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21204            ) -> Self {
21205                tuple.into()
21206            }
21207            #[inline]
21208            fn tokenize(&self) -> Self::Token<'_> {
21209                (
21210                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21211                        &self.metadataUri,
21212                    ),
21213                )
21214            }
21215            #[inline]
21216            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21217                updateMetadataUriReturn::_tokenize(ret)
21218            }
21219            #[inline]
21220            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21221                <Self::ReturnTuple<
21222                    '_,
21223                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21224                    .map(Into::into)
21225            }
21226            #[inline]
21227            fn abi_decode_returns_validate(
21228                data: &[u8],
21229            ) -> alloy_sol_types::Result<Self::Return> {
21230                <Self::ReturnTuple<
21231                    '_,
21232                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21233                    .map(Into::into)
21234            }
21235        }
21236    };
21237    #[derive(serde::Serialize, serde::Deserialize)]
21238    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21239    /**Function with signature `updateNetworkConfig(bytes32,string)` and selector `0x0cb29764`.
21240```solidity
21241function updateNetworkConfig(bytes32 x25519Key, string memory p2pAddr) external;
21242```*/
21243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21244    #[derive(Clone)]
21245    pub struct updateNetworkConfigCall {
21246        #[allow(missing_docs)]
21247        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
21248        #[allow(missing_docs)]
21249        pub p2pAddr: alloy::sol_types::private::String,
21250    }
21251    ///Container type for the return parameters of the [`updateNetworkConfig(bytes32,string)`](updateNetworkConfigCall) function.
21252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21253    #[derive(Clone)]
21254    pub struct updateNetworkConfigReturn {}
21255    #[allow(
21256        non_camel_case_types,
21257        non_snake_case,
21258        clippy::pub_underscore_fields,
21259        clippy::style
21260    )]
21261    const _: () = {
21262        use alloy::sol_types as alloy_sol_types;
21263        {
21264            #[doc(hidden)]
21265            #[allow(dead_code)]
21266            type UnderlyingSolTuple<'a> = (
21267                alloy::sol_types::sol_data::FixedBytes<32>,
21268                alloy::sol_types::sol_data::String,
21269            );
21270            #[doc(hidden)]
21271            type UnderlyingRustTuple<'a> = (
21272                alloy::sol_types::private::FixedBytes<32>,
21273                alloy::sol_types::private::String,
21274            );
21275            #[cfg(test)]
21276            #[allow(dead_code, unreachable_patterns)]
21277            fn _type_assertion(
21278                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21279            ) {
21280                match _t {
21281                    alloy_sol_types::private::AssertTypeEq::<
21282                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21283                    >(_) => {}
21284                }
21285            }
21286            #[automatically_derived]
21287            #[doc(hidden)]
21288            impl ::core::convert::From<updateNetworkConfigCall>
21289            for UnderlyingRustTuple<'_> {
21290                fn from(value: updateNetworkConfigCall) -> Self {
21291                    (value.x25519Key, value.p2pAddr)
21292                }
21293            }
21294            #[automatically_derived]
21295            #[doc(hidden)]
21296            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21297            for updateNetworkConfigCall {
21298                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21299                    Self {
21300                        x25519Key: tuple.0,
21301                        p2pAddr: tuple.1,
21302                    }
21303                }
21304            }
21305        }
21306        {
21307            #[doc(hidden)]
21308            #[allow(dead_code)]
21309            type UnderlyingSolTuple<'a> = ();
21310            #[doc(hidden)]
21311            type UnderlyingRustTuple<'a> = ();
21312            #[cfg(test)]
21313            #[allow(dead_code, unreachable_patterns)]
21314            fn _type_assertion(
21315                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21316            ) {
21317                match _t {
21318                    alloy_sol_types::private::AssertTypeEq::<
21319                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21320                    >(_) => {}
21321                }
21322            }
21323            #[automatically_derived]
21324            #[doc(hidden)]
21325            impl ::core::convert::From<updateNetworkConfigReturn>
21326            for UnderlyingRustTuple<'_> {
21327                fn from(value: updateNetworkConfigReturn) -> Self {
21328                    ()
21329                }
21330            }
21331            #[automatically_derived]
21332            #[doc(hidden)]
21333            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21334            for updateNetworkConfigReturn {
21335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21336                    Self {}
21337                }
21338            }
21339        }
21340        impl updateNetworkConfigReturn {
21341            fn _tokenize(
21342                &self,
21343            ) -> <updateNetworkConfigCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21344                ()
21345            }
21346        }
21347        #[automatically_derived]
21348        impl alloy_sol_types::SolCall for updateNetworkConfigCall {
21349            type Parameters<'a> = (
21350                alloy::sol_types::sol_data::FixedBytes<32>,
21351                alloy::sol_types::sol_data::String,
21352            );
21353            type Token<'a> = <Self::Parameters<
21354                'a,
21355            > as alloy_sol_types::SolType>::Token<'a>;
21356            type Return = updateNetworkConfigReturn;
21357            type ReturnTuple<'a> = ();
21358            type ReturnToken<'a> = <Self::ReturnTuple<
21359                'a,
21360            > as alloy_sol_types::SolType>::Token<'a>;
21361            const SIGNATURE: &'static str = "updateNetworkConfig(bytes32,string)";
21362            const SELECTOR: [u8; 4] = [12u8, 178u8, 151u8, 100u8];
21363            #[inline]
21364            fn new<'a>(
21365                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21366            ) -> Self {
21367                tuple.into()
21368            }
21369            #[inline]
21370            fn tokenize(&self) -> Self::Token<'_> {
21371                (
21372                    <alloy::sol_types::sol_data::FixedBytes<
21373                        32,
21374                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
21375                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21376                        &self.p2pAddr,
21377                    ),
21378                )
21379            }
21380            #[inline]
21381            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21382                updateNetworkConfigReturn::_tokenize(ret)
21383            }
21384            #[inline]
21385            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21386                <Self::ReturnTuple<
21387                    '_,
21388                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21389                    .map(Into::into)
21390            }
21391            #[inline]
21392            fn abi_decode_returns_validate(
21393                data: &[u8],
21394            ) -> alloy_sol_types::Result<Self::Return> {
21395                <Self::ReturnTuple<
21396                    '_,
21397                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21398                    .map(Into::into)
21399            }
21400        }
21401    };
21402    #[derive(serde::Serialize, serde::Deserialize)]
21403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21404    /**Function with signature `updateP2pAddr(string)` and selector `0x9ec9c138`.
21405```solidity
21406function updateP2pAddr(string memory p2pAddr) external;
21407```*/
21408    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21409    #[derive(Clone)]
21410    pub struct updateP2pAddrCall {
21411        #[allow(missing_docs)]
21412        pub p2pAddr: alloy::sol_types::private::String,
21413    }
21414    ///Container type for the return parameters of the [`updateP2pAddr(string)`](updateP2pAddrCall) function.
21415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21416    #[derive(Clone)]
21417    pub struct updateP2pAddrReturn {}
21418    #[allow(
21419        non_camel_case_types,
21420        non_snake_case,
21421        clippy::pub_underscore_fields,
21422        clippy::style
21423    )]
21424    const _: () = {
21425        use alloy::sol_types as alloy_sol_types;
21426        {
21427            #[doc(hidden)]
21428            #[allow(dead_code)]
21429            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
21430            #[doc(hidden)]
21431            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
21432            #[cfg(test)]
21433            #[allow(dead_code, unreachable_patterns)]
21434            fn _type_assertion(
21435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21436            ) {
21437                match _t {
21438                    alloy_sol_types::private::AssertTypeEq::<
21439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21440                    >(_) => {}
21441                }
21442            }
21443            #[automatically_derived]
21444            #[doc(hidden)]
21445            impl ::core::convert::From<updateP2pAddrCall> for UnderlyingRustTuple<'_> {
21446                fn from(value: updateP2pAddrCall) -> Self {
21447                    (value.p2pAddr,)
21448                }
21449            }
21450            #[automatically_derived]
21451            #[doc(hidden)]
21452            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateP2pAddrCall {
21453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21454                    Self { p2pAddr: tuple.0 }
21455                }
21456            }
21457        }
21458        {
21459            #[doc(hidden)]
21460            #[allow(dead_code)]
21461            type UnderlyingSolTuple<'a> = ();
21462            #[doc(hidden)]
21463            type UnderlyingRustTuple<'a> = ();
21464            #[cfg(test)]
21465            #[allow(dead_code, unreachable_patterns)]
21466            fn _type_assertion(
21467                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21468            ) {
21469                match _t {
21470                    alloy_sol_types::private::AssertTypeEq::<
21471                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21472                    >(_) => {}
21473                }
21474            }
21475            #[automatically_derived]
21476            #[doc(hidden)]
21477            impl ::core::convert::From<updateP2pAddrReturn> for UnderlyingRustTuple<'_> {
21478                fn from(value: updateP2pAddrReturn) -> Self {
21479                    ()
21480                }
21481            }
21482            #[automatically_derived]
21483            #[doc(hidden)]
21484            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateP2pAddrReturn {
21485                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21486                    Self {}
21487                }
21488            }
21489        }
21490        impl updateP2pAddrReturn {
21491            fn _tokenize(
21492                &self,
21493            ) -> <updateP2pAddrCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21494                ()
21495            }
21496        }
21497        #[automatically_derived]
21498        impl alloy_sol_types::SolCall for updateP2pAddrCall {
21499            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
21500            type Token<'a> = <Self::Parameters<
21501                'a,
21502            > as alloy_sol_types::SolType>::Token<'a>;
21503            type Return = updateP2pAddrReturn;
21504            type ReturnTuple<'a> = ();
21505            type ReturnToken<'a> = <Self::ReturnTuple<
21506                'a,
21507            > as alloy_sol_types::SolType>::Token<'a>;
21508            const SIGNATURE: &'static str = "updateP2pAddr(string)";
21509            const SELECTOR: [u8; 4] = [158u8, 201u8, 193u8, 56u8];
21510            #[inline]
21511            fn new<'a>(
21512                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21513            ) -> Self {
21514                tuple.into()
21515            }
21516            #[inline]
21517            fn tokenize(&self) -> Self::Token<'_> {
21518                (
21519                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21520                        &self.p2pAddr,
21521                    ),
21522                )
21523            }
21524            #[inline]
21525            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21526                updateP2pAddrReturn::_tokenize(ret)
21527            }
21528            #[inline]
21529            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21530                <Self::ReturnTuple<
21531                    '_,
21532                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21533                    .map(Into::into)
21534            }
21535            #[inline]
21536            fn abi_decode_returns_validate(
21537                data: &[u8],
21538            ) -> alloy_sol_types::Result<Self::Return> {
21539                <Self::ReturnTuple<
21540                    '_,
21541                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21542                    .map(Into::into)
21543            }
21544        }
21545    };
21546    #[derive(serde::Serialize, serde::Deserialize)]
21547    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21548    /**Function with signature `updateX25519Key(bytes32)` and selector `0x073d25fc`.
21549```solidity
21550function updateX25519Key(bytes32 x25519Key) external;
21551```*/
21552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21553    #[derive(Clone)]
21554    pub struct updateX25519KeyCall {
21555        #[allow(missing_docs)]
21556        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
21557    }
21558    ///Container type for the return parameters of the [`updateX25519Key(bytes32)`](updateX25519KeyCall) function.
21559    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21560    #[derive(Clone)]
21561    pub struct updateX25519KeyReturn {}
21562    #[allow(
21563        non_camel_case_types,
21564        non_snake_case,
21565        clippy::pub_underscore_fields,
21566        clippy::style
21567    )]
21568    const _: () = {
21569        use alloy::sol_types as alloy_sol_types;
21570        {
21571            #[doc(hidden)]
21572            #[allow(dead_code)]
21573            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
21574            #[doc(hidden)]
21575            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
21576            #[cfg(test)]
21577            #[allow(dead_code, unreachable_patterns)]
21578            fn _type_assertion(
21579                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21580            ) {
21581                match _t {
21582                    alloy_sol_types::private::AssertTypeEq::<
21583                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21584                    >(_) => {}
21585                }
21586            }
21587            #[automatically_derived]
21588            #[doc(hidden)]
21589            impl ::core::convert::From<updateX25519KeyCall> for UnderlyingRustTuple<'_> {
21590                fn from(value: updateX25519KeyCall) -> Self {
21591                    (value.x25519Key,)
21592                }
21593            }
21594            #[automatically_derived]
21595            #[doc(hidden)]
21596            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateX25519KeyCall {
21597                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21598                    Self { x25519Key: tuple.0 }
21599                }
21600            }
21601        }
21602        {
21603            #[doc(hidden)]
21604            #[allow(dead_code)]
21605            type UnderlyingSolTuple<'a> = ();
21606            #[doc(hidden)]
21607            type UnderlyingRustTuple<'a> = ();
21608            #[cfg(test)]
21609            #[allow(dead_code, unreachable_patterns)]
21610            fn _type_assertion(
21611                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21612            ) {
21613                match _t {
21614                    alloy_sol_types::private::AssertTypeEq::<
21615                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21616                    >(_) => {}
21617                }
21618            }
21619            #[automatically_derived]
21620            #[doc(hidden)]
21621            impl ::core::convert::From<updateX25519KeyReturn>
21622            for UnderlyingRustTuple<'_> {
21623                fn from(value: updateX25519KeyReturn) -> Self {
21624                    ()
21625                }
21626            }
21627            #[automatically_derived]
21628            #[doc(hidden)]
21629            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21630            for updateX25519KeyReturn {
21631                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21632                    Self {}
21633                }
21634            }
21635        }
21636        impl updateX25519KeyReturn {
21637            fn _tokenize(
21638                &self,
21639            ) -> <updateX25519KeyCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21640                ()
21641            }
21642        }
21643        #[automatically_derived]
21644        impl alloy_sol_types::SolCall for updateX25519KeyCall {
21645            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
21646            type Token<'a> = <Self::Parameters<
21647                'a,
21648            > as alloy_sol_types::SolType>::Token<'a>;
21649            type Return = updateX25519KeyReturn;
21650            type ReturnTuple<'a> = ();
21651            type ReturnToken<'a> = <Self::ReturnTuple<
21652                'a,
21653            > as alloy_sol_types::SolType>::Token<'a>;
21654            const SIGNATURE: &'static str = "updateX25519Key(bytes32)";
21655            const SELECTOR: [u8; 4] = [7u8, 61u8, 37u8, 252u8];
21656            #[inline]
21657            fn new<'a>(
21658                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21659            ) -> Self {
21660                tuple.into()
21661            }
21662            #[inline]
21663            fn tokenize(&self) -> Self::Token<'_> {
21664                (
21665                    <alloy::sol_types::sol_data::FixedBytes<
21666                        32,
21667                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
21668                )
21669            }
21670            #[inline]
21671            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21672                updateX25519KeyReturn::_tokenize(ret)
21673            }
21674            #[inline]
21675            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21676                <Self::ReturnTuple<
21677                    '_,
21678                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21679                    .map(Into::into)
21680            }
21681            #[inline]
21682            fn abi_decode_returns_validate(
21683                data: &[u8],
21684            ) -> alloy_sol_types::Result<Self::Return> {
21685                <Self::ReturnTuple<
21686                    '_,
21687                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21688                    .map(Into::into)
21689            }
21690        }
21691    };
21692    #[derive(serde::Serialize, serde::Deserialize)]
21693    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21694    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
21695```solidity
21696function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
21697```*/
21698    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21699    #[derive(Clone)]
21700    pub struct upgradeToAndCallCall {
21701        #[allow(missing_docs)]
21702        pub newImplementation: alloy::sol_types::private::Address,
21703        #[allow(missing_docs)]
21704        pub data: alloy::sol_types::private::Bytes,
21705    }
21706    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
21707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21708    #[derive(Clone)]
21709    pub struct upgradeToAndCallReturn {}
21710    #[allow(
21711        non_camel_case_types,
21712        non_snake_case,
21713        clippy::pub_underscore_fields,
21714        clippy::style
21715    )]
21716    const _: () = {
21717        use alloy::sol_types as alloy_sol_types;
21718        {
21719            #[doc(hidden)]
21720            #[allow(dead_code)]
21721            type UnderlyingSolTuple<'a> = (
21722                alloy::sol_types::sol_data::Address,
21723                alloy::sol_types::sol_data::Bytes,
21724            );
21725            #[doc(hidden)]
21726            type UnderlyingRustTuple<'a> = (
21727                alloy::sol_types::private::Address,
21728                alloy::sol_types::private::Bytes,
21729            );
21730            #[cfg(test)]
21731            #[allow(dead_code, unreachable_patterns)]
21732            fn _type_assertion(
21733                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21734            ) {
21735                match _t {
21736                    alloy_sol_types::private::AssertTypeEq::<
21737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21738                    >(_) => {}
21739                }
21740            }
21741            #[automatically_derived]
21742            #[doc(hidden)]
21743            impl ::core::convert::From<upgradeToAndCallCall>
21744            for UnderlyingRustTuple<'_> {
21745                fn from(value: upgradeToAndCallCall) -> Self {
21746                    (value.newImplementation, value.data)
21747                }
21748            }
21749            #[automatically_derived]
21750            #[doc(hidden)]
21751            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21752            for upgradeToAndCallCall {
21753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21754                    Self {
21755                        newImplementation: tuple.0,
21756                        data: tuple.1,
21757                    }
21758                }
21759            }
21760        }
21761        {
21762            #[doc(hidden)]
21763            #[allow(dead_code)]
21764            type UnderlyingSolTuple<'a> = ();
21765            #[doc(hidden)]
21766            type UnderlyingRustTuple<'a> = ();
21767            #[cfg(test)]
21768            #[allow(dead_code, unreachable_patterns)]
21769            fn _type_assertion(
21770                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21771            ) {
21772                match _t {
21773                    alloy_sol_types::private::AssertTypeEq::<
21774                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21775                    >(_) => {}
21776                }
21777            }
21778            #[automatically_derived]
21779            #[doc(hidden)]
21780            impl ::core::convert::From<upgradeToAndCallReturn>
21781            for UnderlyingRustTuple<'_> {
21782                fn from(value: upgradeToAndCallReturn) -> Self {
21783                    ()
21784                }
21785            }
21786            #[automatically_derived]
21787            #[doc(hidden)]
21788            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21789            for upgradeToAndCallReturn {
21790                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21791                    Self {}
21792                }
21793            }
21794        }
21795        impl upgradeToAndCallReturn {
21796            fn _tokenize(
21797                &self,
21798            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21799                ()
21800            }
21801        }
21802        #[automatically_derived]
21803        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
21804            type Parameters<'a> = (
21805                alloy::sol_types::sol_data::Address,
21806                alloy::sol_types::sol_data::Bytes,
21807            );
21808            type Token<'a> = <Self::Parameters<
21809                'a,
21810            > as alloy_sol_types::SolType>::Token<'a>;
21811            type Return = upgradeToAndCallReturn;
21812            type ReturnTuple<'a> = ();
21813            type ReturnToken<'a> = <Self::ReturnTuple<
21814                'a,
21815            > as alloy_sol_types::SolType>::Token<'a>;
21816            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
21817            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
21818            #[inline]
21819            fn new<'a>(
21820                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21821            ) -> Self {
21822                tuple.into()
21823            }
21824            #[inline]
21825            fn tokenize(&self) -> Self::Token<'_> {
21826                (
21827                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
21828                        &self.newImplementation,
21829                    ),
21830                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
21831                        &self.data,
21832                    ),
21833                )
21834            }
21835            #[inline]
21836            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21837                upgradeToAndCallReturn::_tokenize(ret)
21838            }
21839            #[inline]
21840            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21841                <Self::ReturnTuple<
21842                    '_,
21843                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21844                    .map(Into::into)
21845            }
21846            #[inline]
21847            fn abi_decode_returns_validate(
21848                data: &[u8],
21849            ) -> alloy_sol_types::Result<Self::Return> {
21850                <Self::ReturnTuple<
21851                    '_,
21852                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21853                    .map(Into::into)
21854            }
21855        }
21856    };
21857    #[derive(serde::Serialize, serde::Deserialize)]
21858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21859    /**Function with signature `validateMetadataUri(string)` and selector `0xe3f237e6`.
21860```solidity
21861function validateMetadataUri(string memory metadataUri) external pure;
21862```*/
21863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21864    #[derive(Clone)]
21865    pub struct validateMetadataUriCall {
21866        #[allow(missing_docs)]
21867        pub metadataUri: alloy::sol_types::private::String,
21868    }
21869    ///Container type for the return parameters of the [`validateMetadataUri(string)`](validateMetadataUriCall) function.
21870    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21871    #[derive(Clone)]
21872    pub struct validateMetadataUriReturn {}
21873    #[allow(
21874        non_camel_case_types,
21875        non_snake_case,
21876        clippy::pub_underscore_fields,
21877        clippy::style
21878    )]
21879    const _: () = {
21880        use alloy::sol_types as alloy_sol_types;
21881        {
21882            #[doc(hidden)]
21883            #[allow(dead_code)]
21884            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
21885            #[doc(hidden)]
21886            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
21887            #[cfg(test)]
21888            #[allow(dead_code, unreachable_patterns)]
21889            fn _type_assertion(
21890                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21891            ) {
21892                match _t {
21893                    alloy_sol_types::private::AssertTypeEq::<
21894                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21895                    >(_) => {}
21896                }
21897            }
21898            #[automatically_derived]
21899            #[doc(hidden)]
21900            impl ::core::convert::From<validateMetadataUriCall>
21901            for UnderlyingRustTuple<'_> {
21902                fn from(value: validateMetadataUriCall) -> Self {
21903                    (value.metadataUri,)
21904                }
21905            }
21906            #[automatically_derived]
21907            #[doc(hidden)]
21908            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21909            for validateMetadataUriCall {
21910                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21911                    Self { metadataUri: tuple.0 }
21912                }
21913            }
21914        }
21915        {
21916            #[doc(hidden)]
21917            #[allow(dead_code)]
21918            type UnderlyingSolTuple<'a> = ();
21919            #[doc(hidden)]
21920            type UnderlyingRustTuple<'a> = ();
21921            #[cfg(test)]
21922            #[allow(dead_code, unreachable_patterns)]
21923            fn _type_assertion(
21924                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21925            ) {
21926                match _t {
21927                    alloy_sol_types::private::AssertTypeEq::<
21928                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21929                    >(_) => {}
21930                }
21931            }
21932            #[automatically_derived]
21933            #[doc(hidden)]
21934            impl ::core::convert::From<validateMetadataUriReturn>
21935            for UnderlyingRustTuple<'_> {
21936                fn from(value: validateMetadataUriReturn) -> Self {
21937                    ()
21938                }
21939            }
21940            #[automatically_derived]
21941            #[doc(hidden)]
21942            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21943            for validateMetadataUriReturn {
21944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21945                    Self {}
21946                }
21947            }
21948        }
21949        impl validateMetadataUriReturn {
21950            fn _tokenize(
21951                &self,
21952            ) -> <validateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21953                ()
21954            }
21955        }
21956        #[automatically_derived]
21957        impl alloy_sol_types::SolCall for validateMetadataUriCall {
21958            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
21959            type Token<'a> = <Self::Parameters<
21960                'a,
21961            > as alloy_sol_types::SolType>::Token<'a>;
21962            type Return = validateMetadataUriReturn;
21963            type ReturnTuple<'a> = ();
21964            type ReturnToken<'a> = <Self::ReturnTuple<
21965                'a,
21966            > as alloy_sol_types::SolType>::Token<'a>;
21967            const SIGNATURE: &'static str = "validateMetadataUri(string)";
21968            const SELECTOR: [u8; 4] = [227u8, 242u8, 55u8, 230u8];
21969            #[inline]
21970            fn new<'a>(
21971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21972            ) -> Self {
21973                tuple.into()
21974            }
21975            #[inline]
21976            fn tokenize(&self) -> Self::Token<'_> {
21977                (
21978                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21979                        &self.metadataUri,
21980                    ),
21981                )
21982            }
21983            #[inline]
21984            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21985                validateMetadataUriReturn::_tokenize(ret)
21986            }
21987            #[inline]
21988            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21989                <Self::ReturnTuple<
21990                    '_,
21991                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21992                    .map(Into::into)
21993            }
21994            #[inline]
21995            fn abi_decode_returns_validate(
21996                data: &[u8],
21997            ) -> alloy_sol_types::Result<Self::Return> {
21998                <Self::ReturnTuple<
21999                    '_,
22000                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
22001                    .map(Into::into)
22002            }
22003        }
22004    };
22005    #[derive(serde::Serialize, serde::Deserialize)]
22006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22007    /**Function with signature `validateP2pAddr(string)` and selector `0x15f31835`.
22008```solidity
22009function validateP2pAddr(string memory p2pAddr) external pure;
22010```*/
22011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22012    #[derive(Clone)]
22013    pub struct validateP2pAddrCall {
22014        #[allow(missing_docs)]
22015        pub p2pAddr: alloy::sol_types::private::String,
22016    }
22017    ///Container type for the return parameters of the [`validateP2pAddr(string)`](validateP2pAddrCall) function.
22018    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22019    #[derive(Clone)]
22020    pub struct validateP2pAddrReturn {}
22021    #[allow(
22022        non_camel_case_types,
22023        non_snake_case,
22024        clippy::pub_underscore_fields,
22025        clippy::style
22026    )]
22027    const _: () = {
22028        use alloy::sol_types as alloy_sol_types;
22029        {
22030            #[doc(hidden)]
22031            #[allow(dead_code)]
22032            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
22033            #[doc(hidden)]
22034            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
22035            #[cfg(test)]
22036            #[allow(dead_code, unreachable_patterns)]
22037            fn _type_assertion(
22038                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22039            ) {
22040                match _t {
22041                    alloy_sol_types::private::AssertTypeEq::<
22042                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22043                    >(_) => {}
22044                }
22045            }
22046            #[automatically_derived]
22047            #[doc(hidden)]
22048            impl ::core::convert::From<validateP2pAddrCall> for UnderlyingRustTuple<'_> {
22049                fn from(value: validateP2pAddrCall) -> Self {
22050                    (value.p2pAddr,)
22051                }
22052            }
22053            #[automatically_derived]
22054            #[doc(hidden)]
22055            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validateP2pAddrCall {
22056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22057                    Self { p2pAddr: tuple.0 }
22058                }
22059            }
22060        }
22061        {
22062            #[doc(hidden)]
22063            #[allow(dead_code)]
22064            type UnderlyingSolTuple<'a> = ();
22065            #[doc(hidden)]
22066            type UnderlyingRustTuple<'a> = ();
22067            #[cfg(test)]
22068            #[allow(dead_code, unreachable_patterns)]
22069            fn _type_assertion(
22070                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22071            ) {
22072                match _t {
22073                    alloy_sol_types::private::AssertTypeEq::<
22074                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22075                    >(_) => {}
22076                }
22077            }
22078            #[automatically_derived]
22079            #[doc(hidden)]
22080            impl ::core::convert::From<validateP2pAddrReturn>
22081            for UnderlyingRustTuple<'_> {
22082                fn from(value: validateP2pAddrReturn) -> Self {
22083                    ()
22084                }
22085            }
22086            #[automatically_derived]
22087            #[doc(hidden)]
22088            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22089            for validateP2pAddrReturn {
22090                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22091                    Self {}
22092                }
22093            }
22094        }
22095        impl validateP2pAddrReturn {
22096            fn _tokenize(
22097                &self,
22098            ) -> <validateP2pAddrCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22099                ()
22100            }
22101        }
22102        #[automatically_derived]
22103        impl alloy_sol_types::SolCall for validateP2pAddrCall {
22104            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
22105            type Token<'a> = <Self::Parameters<
22106                'a,
22107            > as alloy_sol_types::SolType>::Token<'a>;
22108            type Return = validateP2pAddrReturn;
22109            type ReturnTuple<'a> = ();
22110            type ReturnToken<'a> = <Self::ReturnTuple<
22111                'a,
22112            > as alloy_sol_types::SolType>::Token<'a>;
22113            const SIGNATURE: &'static str = "validateP2pAddr(string)";
22114            const SELECTOR: [u8; 4] = [21u8, 243u8, 24u8, 53u8];
22115            #[inline]
22116            fn new<'a>(
22117                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22118            ) -> Self {
22119                tuple.into()
22120            }
22121            #[inline]
22122            fn tokenize(&self) -> Self::Token<'_> {
22123                (
22124                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
22125                        &self.p2pAddr,
22126                    ),
22127                )
22128            }
22129            #[inline]
22130            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22131                validateP2pAddrReturn::_tokenize(ret)
22132            }
22133            #[inline]
22134            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22135                <Self::ReturnTuple<
22136                    '_,
22137                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22138                    .map(Into::into)
22139            }
22140            #[inline]
22141            fn abi_decode_returns_validate(
22142                data: &[u8],
22143            ) -> alloy_sol_types::Result<Self::Return> {
22144                <Self::ReturnTuple<
22145                    '_,
22146                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
22147                    .map(Into::into)
22148            }
22149        }
22150    };
22151    #[derive(serde::Serialize, serde::Deserialize)]
22152    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22153    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
22154```solidity
22155function validatorExits(address validator) external view returns (uint256 unlocksAt);
22156```*/
22157    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22158    #[derive(Clone)]
22159    pub struct validatorExitsCall {
22160        #[allow(missing_docs)]
22161        pub validator: alloy::sol_types::private::Address,
22162    }
22163    #[derive(serde::Serialize, serde::Deserialize)]
22164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22165    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
22166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22167    #[derive(Clone)]
22168    pub struct validatorExitsReturn {
22169        #[allow(missing_docs)]
22170        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
22171    }
22172    #[allow(
22173        non_camel_case_types,
22174        non_snake_case,
22175        clippy::pub_underscore_fields,
22176        clippy::style
22177    )]
22178    const _: () = {
22179        use alloy::sol_types as alloy_sol_types;
22180        {
22181            #[doc(hidden)]
22182            #[allow(dead_code)]
22183            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
22184            #[doc(hidden)]
22185            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
22186            #[cfg(test)]
22187            #[allow(dead_code, unreachable_patterns)]
22188            fn _type_assertion(
22189                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22190            ) {
22191                match _t {
22192                    alloy_sol_types::private::AssertTypeEq::<
22193                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22194                    >(_) => {}
22195                }
22196            }
22197            #[automatically_derived]
22198            #[doc(hidden)]
22199            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
22200                fn from(value: validatorExitsCall) -> Self {
22201                    (value.validator,)
22202                }
22203            }
22204            #[automatically_derived]
22205            #[doc(hidden)]
22206            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
22207                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22208                    Self { validator: tuple.0 }
22209                }
22210            }
22211        }
22212        {
22213            #[doc(hidden)]
22214            #[allow(dead_code)]
22215            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
22216            #[doc(hidden)]
22217            type UnderlyingRustTuple<'a> = (
22218                alloy::sol_types::private::primitives::aliases::U256,
22219            );
22220            #[cfg(test)]
22221            #[allow(dead_code, unreachable_patterns)]
22222            fn _type_assertion(
22223                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22224            ) {
22225                match _t {
22226                    alloy_sol_types::private::AssertTypeEq::<
22227                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22228                    >(_) => {}
22229                }
22230            }
22231            #[automatically_derived]
22232            #[doc(hidden)]
22233            impl ::core::convert::From<validatorExitsReturn>
22234            for UnderlyingRustTuple<'_> {
22235                fn from(value: validatorExitsReturn) -> Self {
22236                    (value.unlocksAt,)
22237                }
22238            }
22239            #[automatically_derived]
22240            #[doc(hidden)]
22241            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22242            for validatorExitsReturn {
22243                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22244                    Self { unlocksAt: tuple.0 }
22245                }
22246            }
22247        }
22248        #[automatically_derived]
22249        impl alloy_sol_types::SolCall for validatorExitsCall {
22250            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
22251            type Token<'a> = <Self::Parameters<
22252                'a,
22253            > as alloy_sol_types::SolType>::Token<'a>;
22254            type Return = alloy::sol_types::private::primitives::aliases::U256;
22255            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
22256            type ReturnToken<'a> = <Self::ReturnTuple<
22257                'a,
22258            > as alloy_sol_types::SolType>::Token<'a>;
22259            const SIGNATURE: &'static str = "validatorExits(address)";
22260            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
22261            #[inline]
22262            fn new<'a>(
22263                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22264            ) -> Self {
22265                tuple.into()
22266            }
22267            #[inline]
22268            fn tokenize(&self) -> Self::Token<'_> {
22269                (
22270                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
22271                        &self.validator,
22272                    ),
22273                )
22274            }
22275            #[inline]
22276            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22277                (
22278                    <alloy::sol_types::sol_data::Uint<
22279                        256,
22280                    > as alloy_sol_types::SolType>::tokenize(ret),
22281                )
22282            }
22283            #[inline]
22284            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22285                <Self::ReturnTuple<
22286                    '_,
22287                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22288                    .map(|r| {
22289                        let r: validatorExitsReturn = r.into();
22290                        r.unlocksAt
22291                    })
22292            }
22293            #[inline]
22294            fn abi_decode_returns_validate(
22295                data: &[u8],
22296            ) -> alloy_sol_types::Result<Self::Return> {
22297                <Self::ReturnTuple<
22298                    '_,
22299                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
22300                    .map(|r| {
22301                        let r: validatorExitsReturn = r.into();
22302                        r.unlocksAt
22303                    })
22304            }
22305        }
22306    };
22307    #[derive(serde::Serialize, serde::Deserialize)]
22308    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22309    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
22310```solidity
22311function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
22312```*/
22313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22314    #[derive(Clone)]
22315    pub struct validatorsCall {
22316        #[allow(missing_docs)]
22317        pub account: alloy::sol_types::private::Address,
22318    }
22319    #[derive(serde::Serialize, serde::Deserialize)]
22320    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22321    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
22322    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22323    #[derive(Clone)]
22324    pub struct validatorsReturn {
22325        #[allow(missing_docs)]
22326        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
22327        #[allow(missing_docs)]
22328        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
22329    }
22330    #[allow(
22331        non_camel_case_types,
22332        non_snake_case,
22333        clippy::pub_underscore_fields,
22334        clippy::style
22335    )]
22336    const _: () = {
22337        use alloy::sol_types as alloy_sol_types;
22338        {
22339            #[doc(hidden)]
22340            #[allow(dead_code)]
22341            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
22342            #[doc(hidden)]
22343            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
22344            #[cfg(test)]
22345            #[allow(dead_code, unreachable_patterns)]
22346            fn _type_assertion(
22347                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22348            ) {
22349                match _t {
22350                    alloy_sol_types::private::AssertTypeEq::<
22351                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22352                    >(_) => {}
22353                }
22354            }
22355            #[automatically_derived]
22356            #[doc(hidden)]
22357            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
22358                fn from(value: validatorsCall) -> Self {
22359                    (value.account,)
22360                }
22361            }
22362            #[automatically_derived]
22363            #[doc(hidden)]
22364            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
22365                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22366                    Self { account: tuple.0 }
22367                }
22368            }
22369        }
22370        {
22371            #[doc(hidden)]
22372            #[allow(dead_code)]
22373            type UnderlyingSolTuple<'a> = (
22374                alloy::sol_types::sol_data::Uint<256>,
22375                StakeTable::ValidatorStatus,
22376            );
22377            #[doc(hidden)]
22378            type UnderlyingRustTuple<'a> = (
22379                alloy::sol_types::private::primitives::aliases::U256,
22380                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
22381            );
22382            #[cfg(test)]
22383            #[allow(dead_code, unreachable_patterns)]
22384            fn _type_assertion(
22385                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22386            ) {
22387                match _t {
22388                    alloy_sol_types::private::AssertTypeEq::<
22389                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22390                    >(_) => {}
22391                }
22392            }
22393            #[automatically_derived]
22394            #[doc(hidden)]
22395            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
22396                fn from(value: validatorsReturn) -> Self {
22397                    (value.delegatedAmount, value.status)
22398                }
22399            }
22400            #[automatically_derived]
22401            #[doc(hidden)]
22402            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
22403                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22404                    Self {
22405                        delegatedAmount: tuple.0,
22406                        status: tuple.1,
22407                    }
22408                }
22409            }
22410        }
22411        impl validatorsReturn {
22412            fn _tokenize(
22413                &self,
22414            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22415                (
22416                    <alloy::sol_types::sol_data::Uint<
22417                        256,
22418                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
22419                    <StakeTable::ValidatorStatus as alloy_sol_types::SolType>::tokenize(
22420                        &self.status,
22421                    ),
22422                )
22423            }
22424        }
22425        #[automatically_derived]
22426        impl alloy_sol_types::SolCall for validatorsCall {
22427            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
22428            type Token<'a> = <Self::Parameters<
22429                'a,
22430            > as alloy_sol_types::SolType>::Token<'a>;
22431            type Return = validatorsReturn;
22432            type ReturnTuple<'a> = (
22433                alloy::sol_types::sol_data::Uint<256>,
22434                StakeTable::ValidatorStatus,
22435            );
22436            type ReturnToken<'a> = <Self::ReturnTuple<
22437                'a,
22438            > as alloy_sol_types::SolType>::Token<'a>;
22439            const SIGNATURE: &'static str = "validators(address)";
22440            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
22441            #[inline]
22442            fn new<'a>(
22443                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22444            ) -> Self {
22445                tuple.into()
22446            }
22447            #[inline]
22448            fn tokenize(&self) -> Self::Token<'_> {
22449                (
22450                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
22451                        &self.account,
22452                    ),
22453                )
22454            }
22455            #[inline]
22456            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22457                validatorsReturn::_tokenize(ret)
22458            }
22459            #[inline]
22460            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22461                <Self::ReturnTuple<
22462                    '_,
22463                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22464                    .map(Into::into)
22465            }
22466            #[inline]
22467            fn abi_decode_returns_validate(
22468                data: &[u8],
22469            ) -> alloy_sol_types::Result<Self::Return> {
22470                <Self::ReturnTuple<
22471                    '_,
22472                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
22473                    .map(Into::into)
22474            }
22475        }
22476    };
22477    #[derive(serde::Serialize, serde::Deserialize)]
22478    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22479    /**Function with signature `x25519Keys(bytes32)` and selector `0x5a2f51fd`.
22480```solidity
22481function x25519Keys(bytes32 x25519Key) external view returns (bool used);
22482```*/
22483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22484    #[derive(Clone)]
22485    pub struct x25519KeysCall {
22486        #[allow(missing_docs)]
22487        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
22488    }
22489    #[derive(serde::Serialize, serde::Deserialize)]
22490    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22491    ///Container type for the return parameters of the [`x25519Keys(bytes32)`](x25519KeysCall) function.
22492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22493    #[derive(Clone)]
22494    pub struct x25519KeysReturn {
22495        #[allow(missing_docs)]
22496        pub used: bool,
22497    }
22498    #[allow(
22499        non_camel_case_types,
22500        non_snake_case,
22501        clippy::pub_underscore_fields,
22502        clippy::style
22503    )]
22504    const _: () = {
22505        use alloy::sol_types as alloy_sol_types;
22506        {
22507            #[doc(hidden)]
22508            #[allow(dead_code)]
22509            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
22510            #[doc(hidden)]
22511            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
22512            #[cfg(test)]
22513            #[allow(dead_code, unreachable_patterns)]
22514            fn _type_assertion(
22515                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22516            ) {
22517                match _t {
22518                    alloy_sol_types::private::AssertTypeEq::<
22519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22520                    >(_) => {}
22521                }
22522            }
22523            #[automatically_derived]
22524            #[doc(hidden)]
22525            impl ::core::convert::From<x25519KeysCall> for UnderlyingRustTuple<'_> {
22526                fn from(value: x25519KeysCall) -> Self {
22527                    (value.x25519Key,)
22528                }
22529            }
22530            #[automatically_derived]
22531            #[doc(hidden)]
22532            impl ::core::convert::From<UnderlyingRustTuple<'_>> for x25519KeysCall {
22533                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22534                    Self { x25519Key: tuple.0 }
22535                }
22536            }
22537        }
22538        {
22539            #[doc(hidden)]
22540            #[allow(dead_code)]
22541            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
22542            #[doc(hidden)]
22543            type UnderlyingRustTuple<'a> = (bool,);
22544            #[cfg(test)]
22545            #[allow(dead_code, unreachable_patterns)]
22546            fn _type_assertion(
22547                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22548            ) {
22549                match _t {
22550                    alloy_sol_types::private::AssertTypeEq::<
22551                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22552                    >(_) => {}
22553                }
22554            }
22555            #[automatically_derived]
22556            #[doc(hidden)]
22557            impl ::core::convert::From<x25519KeysReturn> for UnderlyingRustTuple<'_> {
22558                fn from(value: x25519KeysReturn) -> Self {
22559                    (value.used,)
22560                }
22561            }
22562            #[automatically_derived]
22563            #[doc(hidden)]
22564            impl ::core::convert::From<UnderlyingRustTuple<'_>> for x25519KeysReturn {
22565                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22566                    Self { used: tuple.0 }
22567                }
22568            }
22569        }
22570        #[automatically_derived]
22571        impl alloy_sol_types::SolCall for x25519KeysCall {
22572            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
22573            type Token<'a> = <Self::Parameters<
22574                'a,
22575            > as alloy_sol_types::SolType>::Token<'a>;
22576            type Return = bool;
22577            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
22578            type ReturnToken<'a> = <Self::ReturnTuple<
22579                'a,
22580            > as alloy_sol_types::SolType>::Token<'a>;
22581            const SIGNATURE: &'static str = "x25519Keys(bytes32)";
22582            const SELECTOR: [u8; 4] = [90u8, 47u8, 81u8, 253u8];
22583            #[inline]
22584            fn new<'a>(
22585                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22586            ) -> Self {
22587                tuple.into()
22588            }
22589            #[inline]
22590            fn tokenize(&self) -> Self::Token<'_> {
22591                (
22592                    <alloy::sol_types::sol_data::FixedBytes<
22593                        32,
22594                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
22595                )
22596            }
22597            #[inline]
22598            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22599                (
22600                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
22601                        ret,
22602                    ),
22603                )
22604            }
22605            #[inline]
22606            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22607                <Self::ReturnTuple<
22608                    '_,
22609                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22610                    .map(|r| {
22611                        let r: x25519KeysReturn = r.into();
22612                        r.used
22613                    })
22614            }
22615            #[inline]
22616            fn abi_decode_returns_validate(
22617                data: &[u8],
22618            ) -> alloy_sol_types::Result<Self::Return> {
22619                <Self::ReturnTuple<
22620                    '_,
22621                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
22622                    .map(|r| {
22623                        let r: x25519KeysReturn = r.into();
22624                        r.used
22625                    })
22626            }
22627        }
22628    };
22629    ///Container for all the [`StakeTableV3`](self) function calls.
22630    #[derive(Clone)]
22631    #[derive(serde::Serialize, serde::Deserialize)]
22632    #[derive()]
22633    pub enum StakeTableV3Calls {
22634        #[allow(missing_docs)]
22635        CURVE25519_P(CURVE25519_PCall),
22636        #[allow(missing_docs)]
22637        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
22638        #[allow(missing_docs)]
22639        MAX_COMMISSION_BPS(MAX_COMMISSION_BPSCall),
22640        #[allow(missing_docs)]
22641        MAX_EXIT_ESCROW_PERIOD(MAX_EXIT_ESCROW_PERIODCall),
22642        #[allow(missing_docs)]
22643        MAX_METADATA_URI_LENGTH(MAX_METADATA_URI_LENGTHCall),
22644        #[allow(missing_docs)]
22645        MAX_P2P_ADDR_LENGTH(MAX_P2P_ADDR_LENGTHCall),
22646        #[allow(missing_docs)]
22647        MIN_EXIT_ESCROW_PERIOD(MIN_EXIT_ESCROW_PERIODCall),
22648        #[allow(missing_docs)]
22649        PAUSER_ROLE(PAUSER_ROLECall),
22650        #[allow(missing_docs)]
22651        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
22652        #[allow(missing_docs)]
22653        _hashBlsKey(_hashBlsKeyCall),
22654        #[allow(missing_docs)]
22655        activeStake(activeStakeCall),
22656        #[allow(missing_docs)]
22657        blsKeys(blsKeysCall),
22658        #[allow(missing_docs)]
22659        claimValidatorExit(claimValidatorExitCall),
22660        #[allow(missing_docs)]
22661        claimWithdrawal(claimWithdrawalCall),
22662        #[allow(missing_docs)]
22663        commissionTracking(commissionTrackingCall),
22664        #[allow(missing_docs)]
22665        delegate(delegateCall),
22666        #[allow(missing_docs)]
22667        delegations(delegationsCall),
22668        #[allow(missing_docs)]
22669        deregisterValidator(deregisterValidatorCall),
22670        #[allow(missing_docs)]
22671        exitEscrowPeriod(exitEscrowPeriodCall),
22672        #[allow(missing_docs)]
22673        getRoleAdmin(getRoleAdminCall),
22674        #[allow(missing_docs)]
22675        getUndelegation(getUndelegationCall),
22676        #[allow(missing_docs)]
22677        getVersion(getVersionCall),
22678        #[allow(missing_docs)]
22679        grantRole(grantRoleCall),
22680        #[allow(missing_docs)]
22681        hasRole(hasRoleCall),
22682        #[allow(missing_docs)]
22683        initialize(initializeCall),
22684        #[allow(missing_docs)]
22685        initializeV2(initializeV2Call),
22686        #[allow(missing_docs)]
22687        initializeV3(initializeV3Call),
22688        #[allow(missing_docs)]
22689        initializedAtBlock(initializedAtBlockCall),
22690        #[allow(missing_docs)]
22691        lightClient(lightClientCall),
22692        #[allow(missing_docs)]
22693        maxCommissionIncrease(maxCommissionIncreaseCall),
22694        #[allow(missing_docs)]
22695        minCommissionIncreaseInterval(minCommissionIncreaseIntervalCall),
22696        #[allow(missing_docs)]
22697        minDelegateAmount(minDelegateAmountCall),
22698        #[allow(missing_docs)]
22699        owner(ownerCall),
22700        #[allow(missing_docs)]
22701        pause(pauseCall),
22702        #[allow(missing_docs)]
22703        paused(pausedCall),
22704        #[allow(missing_docs)]
22705        proxiableUUID(proxiableUUIDCall),
22706        #[allow(missing_docs)]
22707        registerValidator(registerValidatorCall),
22708        #[allow(missing_docs)]
22709        registerValidatorV2(registerValidatorV2Call),
22710        #[allow(missing_docs)]
22711        registerValidatorV3(registerValidatorV3Call),
22712        #[allow(missing_docs)]
22713        renounceOwnership(renounceOwnershipCall),
22714        #[allow(missing_docs)]
22715        renounceRole(renounceRoleCall),
22716        #[allow(missing_docs)]
22717        revokeRole(revokeRoleCall),
22718        #[allow(missing_docs)]
22719        schnorrKeys(schnorrKeysCall),
22720        #[allow(missing_docs)]
22721        setMaxCommissionIncrease(setMaxCommissionIncreaseCall),
22722        #[allow(missing_docs)]
22723        setMinCommissionUpdateInterval(setMinCommissionUpdateIntervalCall),
22724        #[allow(missing_docs)]
22725        setMinDelegateAmount(setMinDelegateAmountCall),
22726        #[allow(missing_docs)]
22727        supportsInterface(supportsInterfaceCall),
22728        #[allow(missing_docs)]
22729        token(tokenCall),
22730        #[allow(missing_docs)]
22731        transferOwnership(transferOwnershipCall),
22732        #[allow(missing_docs)]
22733        undelegate(undelegateCall),
22734        #[allow(missing_docs)]
22735        undelegations(undelegationsCall),
22736        #[allow(missing_docs)]
22737        unpause(unpauseCall),
22738        #[allow(missing_docs)]
22739        updateCommission(updateCommissionCall),
22740        #[allow(missing_docs)]
22741        updateConsensusKeys(updateConsensusKeysCall),
22742        #[allow(missing_docs)]
22743        updateConsensusKeysV2(updateConsensusKeysV2Call),
22744        #[allow(missing_docs)]
22745        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
22746        #[allow(missing_docs)]
22747        updateMetadataUri(updateMetadataUriCall),
22748        #[allow(missing_docs)]
22749        updateNetworkConfig(updateNetworkConfigCall),
22750        #[allow(missing_docs)]
22751        updateP2pAddr(updateP2pAddrCall),
22752        #[allow(missing_docs)]
22753        updateX25519Key(updateX25519KeyCall),
22754        #[allow(missing_docs)]
22755        upgradeToAndCall(upgradeToAndCallCall),
22756        #[allow(missing_docs)]
22757        validateMetadataUri(validateMetadataUriCall),
22758        #[allow(missing_docs)]
22759        validateP2pAddr(validateP2pAddrCall),
22760        #[allow(missing_docs)]
22761        validatorExits(validatorExitsCall),
22762        #[allow(missing_docs)]
22763        validators(validatorsCall),
22764        #[allow(missing_docs)]
22765        x25519Keys(x25519KeysCall),
22766    }
22767    impl StakeTableV3Calls {
22768        /// All the selectors of this enum.
22769        ///
22770        /// Note that the selectors might not be in the same order as the variants.
22771        /// No guarantees are made about the order of the selectors.
22772        ///
22773        /// Prefer using `SolInterface` methods instead.
22774        pub const SELECTORS: &'static [[u8; 4usize]] = &[
22775            [1u8, 255u8, 201u8, 167u8],
22776            [2u8, 110u8, 64u8, 43u8],
22777            [7u8, 61u8, 37u8, 252u8],
22778            [12u8, 178u8, 151u8, 100u8],
22779            [13u8, 142u8, 110u8, 44u8],
22780            [19u8, 185u8, 5u8, 122u8],
22781            [21u8, 243u8, 24u8, 53u8],
22782            [26u8, 32u8, 205u8, 99u8],
22783            [33u8, 64u8, 254u8, 205u8],
22784            [36u8, 138u8, 156u8, 163u8],
22785            [43u8, 158u8, 92u8, 138u8],
22786            [45u8, 201u8, 186u8, 198u8],
22787            [47u8, 47u8, 241u8, 93u8],
22788            [47u8, 226u8, 135u8, 89u8],
22789            [54u8, 86u8, 138u8, 190u8],
22790            [56u8, 228u8, 84u8, 177u8],
22791            [57u8, 75u8, 52u8, 143u8],
22792            [59u8, 43u8, 127u8, 250u8],
22793            [62u8, 115u8, 46u8, 186u8],
22794            [62u8, 157u8, 249u8, 181u8],
22795            [63u8, 59u8, 179u8, 102u8],
22796            [63u8, 75u8, 168u8, 58u8],
22797            [77u8, 153u8, 221u8, 22u8],
22798            [79u8, 30u8, 242u8, 134u8],
22799            [82u8, 120u8, 11u8, 110u8],
22800            [82u8, 209u8, 144u8, 45u8],
22801            [85u8, 68u8, 194u8, 241u8],
22802            [90u8, 47u8, 81u8, 253u8],
22803            [92u8, 151u8, 90u8, 187u8],
22804            [95u8, 135u8, 84u8, 166u8],
22805            [97u8, 112u8, 102u8, 229u8],
22806            [104u8, 135u8, 205u8, 54u8],
22807            [106u8, 145u8, 28u8, 207u8],
22808            [106u8, 210u8, 142u8, 159u8],
22809            [113u8, 80u8, 24u8, 166u8],
22810            [114u8, 233u8, 201u8, 52u8],
22811            [132u8, 86u8, 203u8, 89u8],
22812            [135u8, 12u8, 143u8, 38u8],
22813            [141u8, 165u8, 203u8, 91u8],
22814            [145u8, 209u8, 72u8, 84u8],
22815            [155u8, 48u8, 165u8, 230u8],
22816            [158u8, 154u8, 143u8, 49u8],
22817            [158u8, 201u8, 193u8, 56u8],
22818            [159u8, 251u8, 107u8, 67u8],
22819            [162u8, 23u8, 253u8, 223u8],
22820            [162u8, 215u8, 141u8, 213u8],
22821            [163u8, 6u8, 106u8, 171u8],
22822            [172u8, 92u8, 42u8, 208u8],
22823            [173u8, 60u8, 177u8, 204u8],
22824            [179u8, 230u8, 235u8, 213u8],
22825            [181u8, 112u8, 14u8, 104u8],
22826            [181u8, 236u8, 179u8, 68u8],
22827            [187u8, 96u8, 191u8, 176u8],
22828            [189u8, 73u8, 195u8, 95u8],
22829            [190u8, 32u8, 48u8, 148u8],
22830            [198u8, 72u8, 20u8, 221u8],
22831            [213u8, 71u8, 116u8, 31u8],
22832            [217u8, 204u8, 125u8, 38u8],
22833            [227u8, 242u8, 55u8, 230u8],
22834            [228u8, 209u8, 251u8, 148u8],
22835            [230u8, 41u8, 119u8, 248u8],
22836            [230u8, 58u8, 177u8, 233u8],
22837            [242u8, 253u8, 227u8, 139u8],
22838            [246u8, 119u8, 122u8, 16u8],
22839            [250u8, 82u8, 199u8, 216u8],
22840            [252u8, 12u8, 84u8, 106u8],
22841        ];
22842        /// The names of the variants in the same order as `SELECTORS`.
22843        pub const VARIANT_NAMES: &'static [&'static str] = &[
22844            ::core::stringify!(supportsInterface),
22845            ::core::stringify!(delegate),
22846            ::core::stringify!(updateX25519Key),
22847            ::core::stringify!(updateNetworkConfig),
22848            ::core::stringify!(getVersion),
22849            ::core::stringify!(registerValidator),
22850            ::core::stringify!(validateP2pAddr),
22851            ::core::stringify!(updateExitEscrowPeriod),
22852            ::core::stringify!(claimValidatorExit),
22853            ::core::stringify!(getRoleAdmin),
22854            ::core::stringify!(registerValidatorV2),
22855            ::core::stringify!(setMaxCommissionIncrease),
22856            ::core::stringify!(grantRole),
22857            ::core::stringify!(MAX_METADATA_URI_LENGTH),
22858            ::core::stringify!(renounceRole),
22859            ::core::stringify!(initializeV3),
22860            ::core::stringify!(setMinCommissionUpdateInterval),
22861            ::core::stringify!(updateCommission),
22862            ::core::stringify!(setMinDelegateAmount),
22863            ::core::stringify!(initializedAtBlock),
22864            ::core::stringify!(maxCommissionIncrease),
22865            ::core::stringify!(unpause),
22866            ::core::stringify!(undelegate),
22867            ::core::stringify!(upgradeToAndCall),
22868            ::core::stringify!(initializeV2),
22869            ::core::stringify!(proxiableUUID),
22870            ::core::stringify!(updateConsensusKeys),
22871            ::core::stringify!(x25519Keys),
22872            ::core::stringify!(paused),
22873            ::core::stringify!(schnorrKeys),
22874            ::core::stringify!(MAX_P2P_ADDR_LENGTH),
22875            ::core::stringify!(registerValidatorV3),
22876            ::core::stringify!(deregisterValidator),
22877            ::core::stringify!(MIN_EXIT_ESCROW_PERIOD),
22878            ::core::stringify!(renounceOwnership),
22879            ::core::stringify!(minDelegateAmount),
22880            ::core::stringify!(pause),
22881            ::core::stringify!(updateMetadataUri),
22882            ::core::stringify!(owner),
22883            ::core::stringify!(hasRole),
22884            ::core::stringify!(_hashBlsKey),
22885            ::core::stringify!(exitEscrowPeriod),
22886            ::core::stringify!(updateP2pAddr),
22887            ::core::stringify!(commissionTracking),
22888            ::core::stringify!(DEFAULT_ADMIN_ROLE),
22889            ::core::stringify!(undelegations),
22890            ::core::stringify!(claimWithdrawal),
22891            ::core::stringify!(updateConsensusKeysV2),
22892            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
22893            ::core::stringify!(blsKeys),
22894            ::core::stringify!(lightClient),
22895            ::core::stringify!(validatorExits),
22896            ::core::stringify!(getUndelegation),
22897            ::core::stringify!(activeStake),
22898            ::core::stringify!(initialize),
22899            ::core::stringify!(delegations),
22900            ::core::stringify!(revokeRole),
22901            ::core::stringify!(minCommissionIncreaseInterval),
22902            ::core::stringify!(validateMetadataUri),
22903            ::core::stringify!(MAX_EXIT_ESCROW_PERIOD),
22904            ::core::stringify!(MAX_COMMISSION_BPS),
22905            ::core::stringify!(PAUSER_ROLE),
22906            ::core::stringify!(transferOwnership),
22907            ::core::stringify!(CURVE25519_P),
22908            ::core::stringify!(validators),
22909            ::core::stringify!(token),
22910        ];
22911        /// The signatures in the same order as `SELECTORS`.
22912        pub const SIGNATURES: &'static [&'static str] = &[
22913            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
22914            <delegateCall as alloy_sol_types::SolCall>::SIGNATURE,
22915            <updateX25519KeyCall as alloy_sol_types::SolCall>::SIGNATURE,
22916            <updateNetworkConfigCall as alloy_sol_types::SolCall>::SIGNATURE,
22917            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
22918            <registerValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
22919            <validateP2pAddrCall as alloy_sol_types::SolCall>::SIGNATURE,
22920            <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
22921            <claimValidatorExitCall as alloy_sol_types::SolCall>::SIGNATURE,
22922            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
22923            <registerValidatorV2Call as alloy_sol_types::SolCall>::SIGNATURE,
22924            <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
22925            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
22926            <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
22927            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
22928            <initializeV3Call as alloy_sol_types::SolCall>::SIGNATURE,
22929            <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
22930            <updateCommissionCall as alloy_sol_types::SolCall>::SIGNATURE,
22931            <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
22932            <initializedAtBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
22933            <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
22934            <unpauseCall as alloy_sol_types::SolCall>::SIGNATURE,
22935            <undelegateCall as alloy_sol_types::SolCall>::SIGNATURE,
22936            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
22937            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
22938            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
22939            <updateConsensusKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
22940            <x25519KeysCall as alloy_sol_types::SolCall>::SIGNATURE,
22941            <pausedCall as alloy_sol_types::SolCall>::SIGNATURE,
22942            <schnorrKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
22943            <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
22944            <registerValidatorV3Call as alloy_sol_types::SolCall>::SIGNATURE,
22945            <deregisterValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
22946            <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
22947            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
22948            <minDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
22949            <pauseCall as alloy_sol_types::SolCall>::SIGNATURE,
22950            <updateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
22951            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
22952            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
22953            <_hashBlsKeyCall as alloy_sol_types::SolCall>::SIGNATURE,
22954            <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
22955            <updateP2pAddrCall as alloy_sol_types::SolCall>::SIGNATURE,
22956            <commissionTrackingCall as alloy_sol_types::SolCall>::SIGNATURE,
22957            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
22958            <undelegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
22959            <claimWithdrawalCall as alloy_sol_types::SolCall>::SIGNATURE,
22960            <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SIGNATURE,
22961            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
22962            <blsKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
22963            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
22964            <validatorExitsCall as alloy_sol_types::SolCall>::SIGNATURE,
22965            <getUndelegationCall as alloy_sol_types::SolCall>::SIGNATURE,
22966            <activeStakeCall as alloy_sol_types::SolCall>::SIGNATURE,
22967            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
22968            <delegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
22969            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
22970            <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
22971            <validateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
22972            <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
22973            <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SIGNATURE,
22974            <PAUSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
22975            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
22976            <CURVE25519_PCall as alloy_sol_types::SolCall>::SIGNATURE,
22977            <validatorsCall as alloy_sol_types::SolCall>::SIGNATURE,
22978            <tokenCall as alloy_sol_types::SolCall>::SIGNATURE,
22979        ];
22980        /// Returns the signature for the given selector, if known.
22981        #[inline]
22982        pub fn signature_by_selector(
22983            selector: [u8; 4usize],
22984        ) -> ::core::option::Option<&'static str> {
22985            match Self::SELECTORS.binary_search(&selector) {
22986                ::core::result::Result::Ok(idx) => {
22987                    ::core::option::Option::Some(Self::SIGNATURES[idx])
22988                }
22989                ::core::result::Result::Err(_) => ::core::option::Option::None,
22990            }
22991        }
22992        /// Returns the enum variant name for the given selector, if known.
22993        #[inline]
22994        pub fn name_by_selector(
22995            selector: [u8; 4usize],
22996        ) -> ::core::option::Option<&'static str> {
22997            let sig = Self::signature_by_selector(selector)?;
22998            sig.split_once('(').map(|(name, _)| name)
22999        }
23000    }
23001    #[automatically_derived]
23002    impl alloy_sol_types::SolInterface for StakeTableV3Calls {
23003        const NAME: &'static str = "StakeTableV3Calls";
23004        const MIN_DATA_LENGTH: usize = 0usize;
23005        const COUNT: usize = 66usize;
23006        #[inline]
23007        fn selector(&self) -> [u8; 4] {
23008            match self {
23009                Self::CURVE25519_P(_) => {
23010                    <CURVE25519_PCall as alloy_sol_types::SolCall>::SELECTOR
23011                }
23012                Self::DEFAULT_ADMIN_ROLE(_) => {
23013                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
23014                }
23015                Self::MAX_COMMISSION_BPS(_) => {
23016                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SELECTOR
23017                }
23018                Self::MAX_EXIT_ESCROW_PERIOD(_) => {
23019                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
23020                }
23021                Self::MAX_METADATA_URI_LENGTH(_) => {
23022                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
23023                }
23024                Self::MAX_P2P_ADDR_LENGTH(_) => {
23025                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
23026                }
23027                Self::MIN_EXIT_ESCROW_PERIOD(_) => {
23028                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
23029                }
23030                Self::PAUSER_ROLE(_) => {
23031                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
23032                }
23033                Self::UPGRADE_INTERFACE_VERSION(_) => {
23034                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
23035                }
23036                Self::_hashBlsKey(_) => {
23037                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
23038                }
23039                Self::activeStake(_) => {
23040                    <activeStakeCall as alloy_sol_types::SolCall>::SELECTOR
23041                }
23042                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
23043                Self::claimValidatorExit(_) => {
23044                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
23045                }
23046                Self::claimWithdrawal(_) => {
23047                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
23048                }
23049                Self::commissionTracking(_) => {
23050                    <commissionTrackingCall as alloy_sol_types::SolCall>::SELECTOR
23051                }
23052                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
23053                Self::delegations(_) => {
23054                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
23055                }
23056                Self::deregisterValidator(_) => {
23057                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
23058                }
23059                Self::exitEscrowPeriod(_) => {
23060                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
23061                }
23062                Self::getRoleAdmin(_) => {
23063                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
23064                }
23065                Self::getUndelegation(_) => {
23066                    <getUndelegationCall as alloy_sol_types::SolCall>::SELECTOR
23067                }
23068                Self::getVersion(_) => {
23069                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
23070                }
23071                Self::grantRole(_) => {
23072                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
23073                }
23074                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
23075                Self::initialize(_) => {
23076                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
23077                }
23078                Self::initializeV2(_) => {
23079                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
23080                }
23081                Self::initializeV3(_) => {
23082                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
23083                }
23084                Self::initializedAtBlock(_) => {
23085                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
23086                }
23087                Self::lightClient(_) => {
23088                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
23089                }
23090                Self::maxCommissionIncrease(_) => {
23091                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
23092                }
23093                Self::minCommissionIncreaseInterval(_) => {
23094                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SELECTOR
23095                }
23096                Self::minDelegateAmount(_) => {
23097                    <minDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
23098                }
23099                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
23100                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
23101                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
23102                Self::proxiableUUID(_) => {
23103                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
23104                }
23105                Self::registerValidator(_) => {
23106                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
23107                }
23108                Self::registerValidatorV2(_) => {
23109                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
23110                }
23111                Self::registerValidatorV3(_) => {
23112                    <registerValidatorV3Call as alloy_sol_types::SolCall>::SELECTOR
23113                }
23114                Self::renounceOwnership(_) => {
23115                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
23116                }
23117                Self::renounceRole(_) => {
23118                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
23119                }
23120                Self::revokeRole(_) => {
23121                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
23122                }
23123                Self::schnorrKeys(_) => {
23124                    <schnorrKeysCall as alloy_sol_types::SolCall>::SELECTOR
23125                }
23126                Self::setMaxCommissionIncrease(_) => {
23127                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
23128                }
23129                Self::setMinCommissionUpdateInterval(_) => {
23130                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SELECTOR
23131                }
23132                Self::setMinDelegateAmount(_) => {
23133                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
23134                }
23135                Self::supportsInterface(_) => {
23136                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
23137                }
23138                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
23139                Self::transferOwnership(_) => {
23140                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
23141                }
23142                Self::undelegate(_) => {
23143                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
23144                }
23145                Self::undelegations(_) => {
23146                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
23147                }
23148                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
23149                Self::updateCommission(_) => {
23150                    <updateCommissionCall as alloy_sol_types::SolCall>::SELECTOR
23151                }
23152                Self::updateConsensusKeys(_) => {
23153                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
23154                }
23155                Self::updateConsensusKeysV2(_) => {
23156                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
23157                }
23158                Self::updateExitEscrowPeriod(_) => {
23159                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
23160                }
23161                Self::updateMetadataUri(_) => {
23162                    <updateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
23163                }
23164                Self::updateNetworkConfig(_) => {
23165                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::SELECTOR
23166                }
23167                Self::updateP2pAddr(_) => {
23168                    <updateP2pAddrCall as alloy_sol_types::SolCall>::SELECTOR
23169                }
23170                Self::updateX25519Key(_) => {
23171                    <updateX25519KeyCall as alloy_sol_types::SolCall>::SELECTOR
23172                }
23173                Self::upgradeToAndCall(_) => {
23174                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
23175                }
23176                Self::validateMetadataUri(_) => {
23177                    <validateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
23178                }
23179                Self::validateP2pAddr(_) => {
23180                    <validateP2pAddrCall as alloy_sol_types::SolCall>::SELECTOR
23181                }
23182                Self::validatorExits(_) => {
23183                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
23184                }
23185                Self::validators(_) => {
23186                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
23187                }
23188                Self::x25519Keys(_) => {
23189                    <x25519KeysCall as alloy_sol_types::SolCall>::SELECTOR
23190                }
23191            }
23192        }
23193        #[inline]
23194        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
23195            Self::SELECTORS.get(i).copied()
23196        }
23197        #[inline]
23198        fn valid_selector(selector: [u8; 4]) -> bool {
23199            Self::SELECTORS.binary_search(&selector).is_ok()
23200        }
23201        #[inline]
23202        #[allow(non_snake_case)]
23203        fn abi_decode_raw(
23204            selector: [u8; 4],
23205            data: &[u8],
23206        ) -> alloy_sol_types::Result<Self> {
23207            static DECODE_SHIMS: &[fn(
23208                &[u8],
23209            ) -> alloy_sol_types::Result<StakeTableV3Calls>] = &[
23210                {
23211                    fn supportsInterface(
23212                        data: &[u8],
23213                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23214                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
23215                                data,
23216                            )
23217                            .map(StakeTableV3Calls::supportsInterface)
23218                    }
23219                    supportsInterface
23220                },
23221                {
23222                    fn delegate(
23223                        data: &[u8],
23224                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23225                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23226                            .map(StakeTableV3Calls::delegate)
23227                    }
23228                    delegate
23229                },
23230                {
23231                    fn updateX25519Key(
23232                        data: &[u8],
23233                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23234                        <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
23235                                data,
23236                            )
23237                            .map(StakeTableV3Calls::updateX25519Key)
23238                    }
23239                    updateX25519Key
23240                },
23241                {
23242                    fn updateNetworkConfig(
23243                        data: &[u8],
23244                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23245                        <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_decode_raw(
23246                                data,
23247                            )
23248                            .map(StakeTableV3Calls::updateNetworkConfig)
23249                    }
23250                    updateNetworkConfig
23251                },
23252                {
23253                    fn getVersion(
23254                        data: &[u8],
23255                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23256                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
23257                                data,
23258                            )
23259                            .map(StakeTableV3Calls::getVersion)
23260                    }
23261                    getVersion
23262                },
23263                {
23264                    fn registerValidator(
23265                        data: &[u8],
23266                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23267                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
23268                                data,
23269                            )
23270                            .map(StakeTableV3Calls::registerValidator)
23271                    }
23272                    registerValidator
23273                },
23274                {
23275                    fn validateP2pAddr(
23276                        data: &[u8],
23277                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23278                        <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw(
23279                                data,
23280                            )
23281                            .map(StakeTableV3Calls::validateP2pAddr)
23282                    }
23283                    validateP2pAddr
23284                },
23285                {
23286                    fn updateExitEscrowPeriod(
23287                        data: &[u8],
23288                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23289                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
23290                                data,
23291                            )
23292                            .map(StakeTableV3Calls::updateExitEscrowPeriod)
23293                    }
23294                    updateExitEscrowPeriod
23295                },
23296                {
23297                    fn claimValidatorExit(
23298                        data: &[u8],
23299                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23300                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
23301                                data,
23302                            )
23303                            .map(StakeTableV3Calls::claimValidatorExit)
23304                    }
23305                    claimValidatorExit
23306                },
23307                {
23308                    fn getRoleAdmin(
23309                        data: &[u8],
23310                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23311                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
23312                                data,
23313                            )
23314                            .map(StakeTableV3Calls::getRoleAdmin)
23315                    }
23316                    getRoleAdmin
23317                },
23318                {
23319                    fn registerValidatorV2(
23320                        data: &[u8],
23321                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23322                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
23323                                data,
23324                            )
23325                            .map(StakeTableV3Calls::registerValidatorV2)
23326                    }
23327                    registerValidatorV2
23328                },
23329                {
23330                    fn setMaxCommissionIncrease(
23331                        data: &[u8],
23332                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23333                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
23334                                data,
23335                            )
23336                            .map(StakeTableV3Calls::setMaxCommissionIncrease)
23337                    }
23338                    setMaxCommissionIncrease
23339                },
23340                {
23341                    fn grantRole(
23342                        data: &[u8],
23343                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23344                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23345                            .map(StakeTableV3Calls::grantRole)
23346                    }
23347                    grantRole
23348                },
23349                {
23350                    fn MAX_METADATA_URI_LENGTH(
23351                        data: &[u8],
23352                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23353                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
23354                                data,
23355                            )
23356                            .map(StakeTableV3Calls::MAX_METADATA_URI_LENGTH)
23357                    }
23358                    MAX_METADATA_URI_LENGTH
23359                },
23360                {
23361                    fn renounceRole(
23362                        data: &[u8],
23363                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23364                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
23365                                data,
23366                            )
23367                            .map(StakeTableV3Calls::renounceRole)
23368                    }
23369                    renounceRole
23370                },
23371                {
23372                    fn initializeV3(
23373                        data: &[u8],
23374                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23375                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
23376                                data,
23377                            )
23378                            .map(StakeTableV3Calls::initializeV3)
23379                    }
23380                    initializeV3
23381                },
23382                {
23383                    fn setMinCommissionUpdateInterval(
23384                        data: &[u8],
23385                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23386                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
23387                                data,
23388                            )
23389                            .map(StakeTableV3Calls::setMinCommissionUpdateInterval)
23390                    }
23391                    setMinCommissionUpdateInterval
23392                },
23393                {
23394                    fn updateCommission(
23395                        data: &[u8],
23396                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23397                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
23398                                data,
23399                            )
23400                            .map(StakeTableV3Calls::updateCommission)
23401                    }
23402                    updateCommission
23403                },
23404                {
23405                    fn setMinDelegateAmount(
23406                        data: &[u8],
23407                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23408                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
23409                                data,
23410                            )
23411                            .map(StakeTableV3Calls::setMinDelegateAmount)
23412                    }
23413                    setMinDelegateAmount
23414                },
23415                {
23416                    fn initializedAtBlock(
23417                        data: &[u8],
23418                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23419                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
23420                                data,
23421                            )
23422                            .map(StakeTableV3Calls::initializedAtBlock)
23423                    }
23424                    initializedAtBlock
23425                },
23426                {
23427                    fn maxCommissionIncrease(
23428                        data: &[u8],
23429                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23430                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
23431                                data,
23432                            )
23433                            .map(StakeTableV3Calls::maxCommissionIncrease)
23434                    }
23435                    maxCommissionIncrease
23436                },
23437                {
23438                    fn unpause(
23439                        data: &[u8],
23440                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23441                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23442                            .map(StakeTableV3Calls::unpause)
23443                    }
23444                    unpause
23445                },
23446                {
23447                    fn undelegate(
23448                        data: &[u8],
23449                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23450                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
23451                                data,
23452                            )
23453                            .map(StakeTableV3Calls::undelegate)
23454                    }
23455                    undelegate
23456                },
23457                {
23458                    fn upgradeToAndCall(
23459                        data: &[u8],
23460                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23461                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
23462                                data,
23463                            )
23464                            .map(StakeTableV3Calls::upgradeToAndCall)
23465                    }
23466                    upgradeToAndCall
23467                },
23468                {
23469                    fn initializeV2(
23470                        data: &[u8],
23471                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23472                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
23473                                data,
23474                            )
23475                            .map(StakeTableV3Calls::initializeV2)
23476                    }
23477                    initializeV2
23478                },
23479                {
23480                    fn proxiableUUID(
23481                        data: &[u8],
23482                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23483                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
23484                                data,
23485                            )
23486                            .map(StakeTableV3Calls::proxiableUUID)
23487                    }
23488                    proxiableUUID
23489                },
23490                {
23491                    fn updateConsensusKeys(
23492                        data: &[u8],
23493                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23494                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
23495                                data,
23496                            )
23497                            .map(StakeTableV3Calls::updateConsensusKeys)
23498                    }
23499                    updateConsensusKeys
23500                },
23501                {
23502                    fn x25519Keys(
23503                        data: &[u8],
23504                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23505                        <x25519KeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
23506                                data,
23507                            )
23508                            .map(StakeTableV3Calls::x25519Keys)
23509                    }
23510                    x25519Keys
23511                },
23512                {
23513                    fn paused(
23514                        data: &[u8],
23515                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23516                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23517                            .map(StakeTableV3Calls::paused)
23518                    }
23519                    paused
23520                },
23521                {
23522                    fn schnorrKeys(
23523                        data: &[u8],
23524                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23525                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
23526                                data,
23527                            )
23528                            .map(StakeTableV3Calls::schnorrKeys)
23529                    }
23530                    schnorrKeys
23531                },
23532                {
23533                    fn MAX_P2P_ADDR_LENGTH(
23534                        data: &[u8],
23535                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23536                        <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
23537                                data,
23538                            )
23539                            .map(StakeTableV3Calls::MAX_P2P_ADDR_LENGTH)
23540                    }
23541                    MAX_P2P_ADDR_LENGTH
23542                },
23543                {
23544                    fn registerValidatorV3(
23545                        data: &[u8],
23546                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23547                        <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
23548                                data,
23549                            )
23550                            .map(StakeTableV3Calls::registerValidatorV3)
23551                    }
23552                    registerValidatorV3
23553                },
23554                {
23555                    fn deregisterValidator(
23556                        data: &[u8],
23557                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23558                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
23559                                data,
23560                            )
23561                            .map(StakeTableV3Calls::deregisterValidator)
23562                    }
23563                    deregisterValidator
23564                },
23565                {
23566                    fn MIN_EXIT_ESCROW_PERIOD(
23567                        data: &[u8],
23568                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23569                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
23570                                data,
23571                            )
23572                            .map(StakeTableV3Calls::MIN_EXIT_ESCROW_PERIOD)
23573                    }
23574                    MIN_EXIT_ESCROW_PERIOD
23575                },
23576                {
23577                    fn renounceOwnership(
23578                        data: &[u8],
23579                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23580                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
23581                                data,
23582                            )
23583                            .map(StakeTableV3Calls::renounceOwnership)
23584                    }
23585                    renounceOwnership
23586                },
23587                {
23588                    fn minDelegateAmount(
23589                        data: &[u8],
23590                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23591                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
23592                                data,
23593                            )
23594                            .map(StakeTableV3Calls::minDelegateAmount)
23595                    }
23596                    minDelegateAmount
23597                },
23598                {
23599                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
23600                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23601                            .map(StakeTableV3Calls::pause)
23602                    }
23603                    pause
23604                },
23605                {
23606                    fn updateMetadataUri(
23607                        data: &[u8],
23608                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23609                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
23610                                data,
23611                            )
23612                            .map(StakeTableV3Calls::updateMetadataUri)
23613                    }
23614                    updateMetadataUri
23615                },
23616                {
23617                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
23618                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23619                            .map(StakeTableV3Calls::owner)
23620                    }
23621                    owner
23622                },
23623                {
23624                    fn hasRole(
23625                        data: &[u8],
23626                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23627                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23628                            .map(StakeTableV3Calls::hasRole)
23629                    }
23630                    hasRole
23631                },
23632                {
23633                    fn _hashBlsKey(
23634                        data: &[u8],
23635                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23636                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
23637                                data,
23638                            )
23639                            .map(StakeTableV3Calls::_hashBlsKey)
23640                    }
23641                    _hashBlsKey
23642                },
23643                {
23644                    fn exitEscrowPeriod(
23645                        data: &[u8],
23646                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23647                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
23648                                data,
23649                            )
23650                            .map(StakeTableV3Calls::exitEscrowPeriod)
23651                    }
23652                    exitEscrowPeriod
23653                },
23654                {
23655                    fn updateP2pAddr(
23656                        data: &[u8],
23657                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23658                        <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw(
23659                                data,
23660                            )
23661                            .map(StakeTableV3Calls::updateP2pAddr)
23662                    }
23663                    updateP2pAddr
23664                },
23665                {
23666                    fn commissionTracking(
23667                        data: &[u8],
23668                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23669                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw(
23670                                data,
23671                            )
23672                            .map(StakeTableV3Calls::commissionTracking)
23673                    }
23674                    commissionTracking
23675                },
23676                {
23677                    fn DEFAULT_ADMIN_ROLE(
23678                        data: &[u8],
23679                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23680                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
23681                                data,
23682                            )
23683                            .map(StakeTableV3Calls::DEFAULT_ADMIN_ROLE)
23684                    }
23685                    DEFAULT_ADMIN_ROLE
23686                },
23687                {
23688                    fn undelegations(
23689                        data: &[u8],
23690                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23691                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
23692                                data,
23693                            )
23694                            .map(StakeTableV3Calls::undelegations)
23695                    }
23696                    undelegations
23697                },
23698                {
23699                    fn claimWithdrawal(
23700                        data: &[u8],
23701                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23702                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
23703                                data,
23704                            )
23705                            .map(StakeTableV3Calls::claimWithdrawal)
23706                    }
23707                    claimWithdrawal
23708                },
23709                {
23710                    fn updateConsensusKeysV2(
23711                        data: &[u8],
23712                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23713                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
23714                                data,
23715                            )
23716                            .map(StakeTableV3Calls::updateConsensusKeysV2)
23717                    }
23718                    updateConsensusKeysV2
23719                },
23720                {
23721                    fn UPGRADE_INTERFACE_VERSION(
23722                        data: &[u8],
23723                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23724                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
23725                                data,
23726                            )
23727                            .map(StakeTableV3Calls::UPGRADE_INTERFACE_VERSION)
23728                    }
23729                    UPGRADE_INTERFACE_VERSION
23730                },
23731                {
23732                    fn blsKeys(
23733                        data: &[u8],
23734                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23735                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23736                            .map(StakeTableV3Calls::blsKeys)
23737                    }
23738                    blsKeys
23739                },
23740                {
23741                    fn lightClient(
23742                        data: &[u8],
23743                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23744                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
23745                                data,
23746                            )
23747                            .map(StakeTableV3Calls::lightClient)
23748                    }
23749                    lightClient
23750                },
23751                {
23752                    fn validatorExits(
23753                        data: &[u8],
23754                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23755                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
23756                                data,
23757                            )
23758                            .map(StakeTableV3Calls::validatorExits)
23759                    }
23760                    validatorExits
23761                },
23762                {
23763                    fn getUndelegation(
23764                        data: &[u8],
23765                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23766                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
23767                                data,
23768                            )
23769                            .map(StakeTableV3Calls::getUndelegation)
23770                    }
23771                    getUndelegation
23772                },
23773                {
23774                    fn activeStake(
23775                        data: &[u8],
23776                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23777                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
23778                                data,
23779                            )
23780                            .map(StakeTableV3Calls::activeStake)
23781                    }
23782                    activeStake
23783                },
23784                {
23785                    fn initialize(
23786                        data: &[u8],
23787                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23788                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
23789                                data,
23790                            )
23791                            .map(StakeTableV3Calls::initialize)
23792                    }
23793                    initialize
23794                },
23795                {
23796                    fn delegations(
23797                        data: &[u8],
23798                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23799                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
23800                                data,
23801                            )
23802                            .map(StakeTableV3Calls::delegations)
23803                    }
23804                    delegations
23805                },
23806                {
23807                    fn revokeRole(
23808                        data: &[u8],
23809                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23810                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
23811                                data,
23812                            )
23813                            .map(StakeTableV3Calls::revokeRole)
23814                    }
23815                    revokeRole
23816                },
23817                {
23818                    fn minCommissionIncreaseInterval(
23819                        data: &[u8],
23820                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23821                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
23822                                data,
23823                            )
23824                            .map(StakeTableV3Calls::minCommissionIncreaseInterval)
23825                    }
23826                    minCommissionIncreaseInterval
23827                },
23828                {
23829                    fn validateMetadataUri(
23830                        data: &[u8],
23831                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23832                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
23833                                data,
23834                            )
23835                            .map(StakeTableV3Calls::validateMetadataUri)
23836                    }
23837                    validateMetadataUri
23838                },
23839                {
23840                    fn MAX_EXIT_ESCROW_PERIOD(
23841                        data: &[u8],
23842                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23843                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
23844                                data,
23845                            )
23846                            .map(StakeTableV3Calls::MAX_EXIT_ESCROW_PERIOD)
23847                    }
23848                    MAX_EXIT_ESCROW_PERIOD
23849                },
23850                {
23851                    fn MAX_COMMISSION_BPS(
23852                        data: &[u8],
23853                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23854                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw(
23855                                data,
23856                            )
23857                            .map(StakeTableV3Calls::MAX_COMMISSION_BPS)
23858                    }
23859                    MAX_COMMISSION_BPS
23860                },
23861                {
23862                    fn PAUSER_ROLE(
23863                        data: &[u8],
23864                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23865                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
23866                                data,
23867                            )
23868                            .map(StakeTableV3Calls::PAUSER_ROLE)
23869                    }
23870                    PAUSER_ROLE
23871                },
23872                {
23873                    fn transferOwnership(
23874                        data: &[u8],
23875                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23876                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
23877                                data,
23878                            )
23879                            .map(StakeTableV3Calls::transferOwnership)
23880                    }
23881                    transferOwnership
23882                },
23883                {
23884                    fn CURVE25519_P(
23885                        data: &[u8],
23886                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23887                        <CURVE25519_PCall as alloy_sol_types::SolCall>::abi_decode_raw(
23888                                data,
23889                            )
23890                            .map(StakeTableV3Calls::CURVE25519_P)
23891                    }
23892                    CURVE25519_P
23893                },
23894                {
23895                    fn validators(
23896                        data: &[u8],
23897                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23898                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
23899                                data,
23900                            )
23901                            .map(StakeTableV3Calls::validators)
23902                    }
23903                    validators
23904                },
23905                {
23906                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
23907                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23908                            .map(StakeTableV3Calls::token)
23909                    }
23910                    token
23911                },
23912            ];
23913            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
23914                return Err(
23915                    alloy_sol_types::Error::unknown_selector(
23916                        <Self as alloy_sol_types::SolInterface>::NAME,
23917                        selector,
23918                    ),
23919                );
23920            };
23921            DECODE_SHIMS[idx](data)
23922        }
23923        #[inline]
23924        #[allow(non_snake_case)]
23925        fn abi_decode_raw_validate(
23926            selector: [u8; 4],
23927            data: &[u8],
23928        ) -> alloy_sol_types::Result<Self> {
23929            static DECODE_VALIDATE_SHIMS: &[fn(
23930                &[u8],
23931            ) -> alloy_sol_types::Result<StakeTableV3Calls>] = &[
23932                {
23933                    fn supportsInterface(
23934                        data: &[u8],
23935                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23936                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23937                                data,
23938                            )
23939                            .map(StakeTableV3Calls::supportsInterface)
23940                    }
23941                    supportsInterface
23942                },
23943                {
23944                    fn delegate(
23945                        data: &[u8],
23946                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23947                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23948                                data,
23949                            )
23950                            .map(StakeTableV3Calls::delegate)
23951                    }
23952                    delegate
23953                },
23954                {
23955                    fn updateX25519Key(
23956                        data: &[u8],
23957                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23958                        <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23959                                data,
23960                            )
23961                            .map(StakeTableV3Calls::updateX25519Key)
23962                    }
23963                    updateX25519Key
23964                },
23965                {
23966                    fn updateNetworkConfig(
23967                        data: &[u8],
23968                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23969                        <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23970                                data,
23971                            )
23972                            .map(StakeTableV3Calls::updateNetworkConfig)
23973                    }
23974                    updateNetworkConfig
23975                },
23976                {
23977                    fn getVersion(
23978                        data: &[u8],
23979                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23980                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23981                                data,
23982                            )
23983                            .map(StakeTableV3Calls::getVersion)
23984                    }
23985                    getVersion
23986                },
23987                {
23988                    fn registerValidator(
23989                        data: &[u8],
23990                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23991                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23992                                data,
23993                            )
23994                            .map(StakeTableV3Calls::registerValidator)
23995                    }
23996                    registerValidator
23997                },
23998                {
23999                    fn validateP2pAddr(
24000                        data: &[u8],
24001                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24002                        <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24003                                data,
24004                            )
24005                            .map(StakeTableV3Calls::validateP2pAddr)
24006                    }
24007                    validateP2pAddr
24008                },
24009                {
24010                    fn updateExitEscrowPeriod(
24011                        data: &[u8],
24012                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24013                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24014                                data,
24015                            )
24016                            .map(StakeTableV3Calls::updateExitEscrowPeriod)
24017                    }
24018                    updateExitEscrowPeriod
24019                },
24020                {
24021                    fn claimValidatorExit(
24022                        data: &[u8],
24023                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24024                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24025                                data,
24026                            )
24027                            .map(StakeTableV3Calls::claimValidatorExit)
24028                    }
24029                    claimValidatorExit
24030                },
24031                {
24032                    fn getRoleAdmin(
24033                        data: &[u8],
24034                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24035                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24036                                data,
24037                            )
24038                            .map(StakeTableV3Calls::getRoleAdmin)
24039                    }
24040                    getRoleAdmin
24041                },
24042                {
24043                    fn registerValidatorV2(
24044                        data: &[u8],
24045                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24046                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24047                                data,
24048                            )
24049                            .map(StakeTableV3Calls::registerValidatorV2)
24050                    }
24051                    registerValidatorV2
24052                },
24053                {
24054                    fn setMaxCommissionIncrease(
24055                        data: &[u8],
24056                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24057                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24058                                data,
24059                            )
24060                            .map(StakeTableV3Calls::setMaxCommissionIncrease)
24061                    }
24062                    setMaxCommissionIncrease
24063                },
24064                {
24065                    fn grantRole(
24066                        data: &[u8],
24067                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24068                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24069                                data,
24070                            )
24071                            .map(StakeTableV3Calls::grantRole)
24072                    }
24073                    grantRole
24074                },
24075                {
24076                    fn MAX_METADATA_URI_LENGTH(
24077                        data: &[u8],
24078                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24079                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24080                                data,
24081                            )
24082                            .map(StakeTableV3Calls::MAX_METADATA_URI_LENGTH)
24083                    }
24084                    MAX_METADATA_URI_LENGTH
24085                },
24086                {
24087                    fn renounceRole(
24088                        data: &[u8],
24089                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24090                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24091                                data,
24092                            )
24093                            .map(StakeTableV3Calls::renounceRole)
24094                    }
24095                    renounceRole
24096                },
24097                {
24098                    fn initializeV3(
24099                        data: &[u8],
24100                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24101                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24102                                data,
24103                            )
24104                            .map(StakeTableV3Calls::initializeV3)
24105                    }
24106                    initializeV3
24107                },
24108                {
24109                    fn setMinCommissionUpdateInterval(
24110                        data: &[u8],
24111                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24112                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24113                                data,
24114                            )
24115                            .map(StakeTableV3Calls::setMinCommissionUpdateInterval)
24116                    }
24117                    setMinCommissionUpdateInterval
24118                },
24119                {
24120                    fn updateCommission(
24121                        data: &[u8],
24122                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24123                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24124                                data,
24125                            )
24126                            .map(StakeTableV3Calls::updateCommission)
24127                    }
24128                    updateCommission
24129                },
24130                {
24131                    fn setMinDelegateAmount(
24132                        data: &[u8],
24133                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24134                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24135                                data,
24136                            )
24137                            .map(StakeTableV3Calls::setMinDelegateAmount)
24138                    }
24139                    setMinDelegateAmount
24140                },
24141                {
24142                    fn initializedAtBlock(
24143                        data: &[u8],
24144                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24145                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24146                                data,
24147                            )
24148                            .map(StakeTableV3Calls::initializedAtBlock)
24149                    }
24150                    initializedAtBlock
24151                },
24152                {
24153                    fn maxCommissionIncrease(
24154                        data: &[u8],
24155                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24156                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24157                                data,
24158                            )
24159                            .map(StakeTableV3Calls::maxCommissionIncrease)
24160                    }
24161                    maxCommissionIncrease
24162                },
24163                {
24164                    fn unpause(
24165                        data: &[u8],
24166                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24167                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24168                                data,
24169                            )
24170                            .map(StakeTableV3Calls::unpause)
24171                    }
24172                    unpause
24173                },
24174                {
24175                    fn undelegate(
24176                        data: &[u8],
24177                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24178                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24179                                data,
24180                            )
24181                            .map(StakeTableV3Calls::undelegate)
24182                    }
24183                    undelegate
24184                },
24185                {
24186                    fn upgradeToAndCall(
24187                        data: &[u8],
24188                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24189                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24190                                data,
24191                            )
24192                            .map(StakeTableV3Calls::upgradeToAndCall)
24193                    }
24194                    upgradeToAndCall
24195                },
24196                {
24197                    fn initializeV2(
24198                        data: &[u8],
24199                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24200                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24201                                data,
24202                            )
24203                            .map(StakeTableV3Calls::initializeV2)
24204                    }
24205                    initializeV2
24206                },
24207                {
24208                    fn proxiableUUID(
24209                        data: &[u8],
24210                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24211                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24212                                data,
24213                            )
24214                            .map(StakeTableV3Calls::proxiableUUID)
24215                    }
24216                    proxiableUUID
24217                },
24218                {
24219                    fn updateConsensusKeys(
24220                        data: &[u8],
24221                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24222                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24223                                data,
24224                            )
24225                            .map(StakeTableV3Calls::updateConsensusKeys)
24226                    }
24227                    updateConsensusKeys
24228                },
24229                {
24230                    fn x25519Keys(
24231                        data: &[u8],
24232                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24233                        <x25519KeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24234                                data,
24235                            )
24236                            .map(StakeTableV3Calls::x25519Keys)
24237                    }
24238                    x25519Keys
24239                },
24240                {
24241                    fn paused(
24242                        data: &[u8],
24243                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24244                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24245                                data,
24246                            )
24247                            .map(StakeTableV3Calls::paused)
24248                    }
24249                    paused
24250                },
24251                {
24252                    fn schnorrKeys(
24253                        data: &[u8],
24254                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24255                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24256                                data,
24257                            )
24258                            .map(StakeTableV3Calls::schnorrKeys)
24259                    }
24260                    schnorrKeys
24261                },
24262                {
24263                    fn MAX_P2P_ADDR_LENGTH(
24264                        data: &[u8],
24265                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24266                        <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24267                                data,
24268                            )
24269                            .map(StakeTableV3Calls::MAX_P2P_ADDR_LENGTH)
24270                    }
24271                    MAX_P2P_ADDR_LENGTH
24272                },
24273                {
24274                    fn registerValidatorV3(
24275                        data: &[u8],
24276                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24277                        <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24278                                data,
24279                            )
24280                            .map(StakeTableV3Calls::registerValidatorV3)
24281                    }
24282                    registerValidatorV3
24283                },
24284                {
24285                    fn deregisterValidator(
24286                        data: &[u8],
24287                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24288                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24289                                data,
24290                            )
24291                            .map(StakeTableV3Calls::deregisterValidator)
24292                    }
24293                    deregisterValidator
24294                },
24295                {
24296                    fn MIN_EXIT_ESCROW_PERIOD(
24297                        data: &[u8],
24298                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24299                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24300                                data,
24301                            )
24302                            .map(StakeTableV3Calls::MIN_EXIT_ESCROW_PERIOD)
24303                    }
24304                    MIN_EXIT_ESCROW_PERIOD
24305                },
24306                {
24307                    fn renounceOwnership(
24308                        data: &[u8],
24309                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24310                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24311                                data,
24312                            )
24313                            .map(StakeTableV3Calls::renounceOwnership)
24314                    }
24315                    renounceOwnership
24316                },
24317                {
24318                    fn minDelegateAmount(
24319                        data: &[u8],
24320                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24321                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24322                                data,
24323                            )
24324                            .map(StakeTableV3Calls::minDelegateAmount)
24325                    }
24326                    minDelegateAmount
24327                },
24328                {
24329                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
24330                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24331                                data,
24332                            )
24333                            .map(StakeTableV3Calls::pause)
24334                    }
24335                    pause
24336                },
24337                {
24338                    fn updateMetadataUri(
24339                        data: &[u8],
24340                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24341                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24342                                data,
24343                            )
24344                            .map(StakeTableV3Calls::updateMetadataUri)
24345                    }
24346                    updateMetadataUri
24347                },
24348                {
24349                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
24350                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24351                                data,
24352                            )
24353                            .map(StakeTableV3Calls::owner)
24354                    }
24355                    owner
24356                },
24357                {
24358                    fn hasRole(
24359                        data: &[u8],
24360                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24361                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24362                                data,
24363                            )
24364                            .map(StakeTableV3Calls::hasRole)
24365                    }
24366                    hasRole
24367                },
24368                {
24369                    fn _hashBlsKey(
24370                        data: &[u8],
24371                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24372                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24373                                data,
24374                            )
24375                            .map(StakeTableV3Calls::_hashBlsKey)
24376                    }
24377                    _hashBlsKey
24378                },
24379                {
24380                    fn exitEscrowPeriod(
24381                        data: &[u8],
24382                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24383                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24384                                data,
24385                            )
24386                            .map(StakeTableV3Calls::exitEscrowPeriod)
24387                    }
24388                    exitEscrowPeriod
24389                },
24390                {
24391                    fn updateP2pAddr(
24392                        data: &[u8],
24393                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24394                        <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24395                                data,
24396                            )
24397                            .map(StakeTableV3Calls::updateP2pAddr)
24398                    }
24399                    updateP2pAddr
24400                },
24401                {
24402                    fn commissionTracking(
24403                        data: &[u8],
24404                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24405                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24406                                data,
24407                            )
24408                            .map(StakeTableV3Calls::commissionTracking)
24409                    }
24410                    commissionTracking
24411                },
24412                {
24413                    fn DEFAULT_ADMIN_ROLE(
24414                        data: &[u8],
24415                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24416                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24417                                data,
24418                            )
24419                            .map(StakeTableV3Calls::DEFAULT_ADMIN_ROLE)
24420                    }
24421                    DEFAULT_ADMIN_ROLE
24422                },
24423                {
24424                    fn undelegations(
24425                        data: &[u8],
24426                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24427                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24428                                data,
24429                            )
24430                            .map(StakeTableV3Calls::undelegations)
24431                    }
24432                    undelegations
24433                },
24434                {
24435                    fn claimWithdrawal(
24436                        data: &[u8],
24437                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24438                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24439                                data,
24440                            )
24441                            .map(StakeTableV3Calls::claimWithdrawal)
24442                    }
24443                    claimWithdrawal
24444                },
24445                {
24446                    fn updateConsensusKeysV2(
24447                        data: &[u8],
24448                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24449                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24450                                data,
24451                            )
24452                            .map(StakeTableV3Calls::updateConsensusKeysV2)
24453                    }
24454                    updateConsensusKeysV2
24455                },
24456                {
24457                    fn UPGRADE_INTERFACE_VERSION(
24458                        data: &[u8],
24459                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24460                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24461                                data,
24462                            )
24463                            .map(StakeTableV3Calls::UPGRADE_INTERFACE_VERSION)
24464                    }
24465                    UPGRADE_INTERFACE_VERSION
24466                },
24467                {
24468                    fn blsKeys(
24469                        data: &[u8],
24470                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24471                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24472                                data,
24473                            )
24474                            .map(StakeTableV3Calls::blsKeys)
24475                    }
24476                    blsKeys
24477                },
24478                {
24479                    fn lightClient(
24480                        data: &[u8],
24481                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24482                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24483                                data,
24484                            )
24485                            .map(StakeTableV3Calls::lightClient)
24486                    }
24487                    lightClient
24488                },
24489                {
24490                    fn validatorExits(
24491                        data: &[u8],
24492                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24493                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24494                                data,
24495                            )
24496                            .map(StakeTableV3Calls::validatorExits)
24497                    }
24498                    validatorExits
24499                },
24500                {
24501                    fn getUndelegation(
24502                        data: &[u8],
24503                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24504                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24505                                data,
24506                            )
24507                            .map(StakeTableV3Calls::getUndelegation)
24508                    }
24509                    getUndelegation
24510                },
24511                {
24512                    fn activeStake(
24513                        data: &[u8],
24514                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24515                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24516                                data,
24517                            )
24518                            .map(StakeTableV3Calls::activeStake)
24519                    }
24520                    activeStake
24521                },
24522                {
24523                    fn initialize(
24524                        data: &[u8],
24525                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24526                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24527                                data,
24528                            )
24529                            .map(StakeTableV3Calls::initialize)
24530                    }
24531                    initialize
24532                },
24533                {
24534                    fn delegations(
24535                        data: &[u8],
24536                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24537                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24538                                data,
24539                            )
24540                            .map(StakeTableV3Calls::delegations)
24541                    }
24542                    delegations
24543                },
24544                {
24545                    fn revokeRole(
24546                        data: &[u8],
24547                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24548                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24549                                data,
24550                            )
24551                            .map(StakeTableV3Calls::revokeRole)
24552                    }
24553                    revokeRole
24554                },
24555                {
24556                    fn minCommissionIncreaseInterval(
24557                        data: &[u8],
24558                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24559                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24560                                data,
24561                            )
24562                            .map(StakeTableV3Calls::minCommissionIncreaseInterval)
24563                    }
24564                    minCommissionIncreaseInterval
24565                },
24566                {
24567                    fn validateMetadataUri(
24568                        data: &[u8],
24569                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24570                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24571                                data,
24572                            )
24573                            .map(StakeTableV3Calls::validateMetadataUri)
24574                    }
24575                    validateMetadataUri
24576                },
24577                {
24578                    fn MAX_EXIT_ESCROW_PERIOD(
24579                        data: &[u8],
24580                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24581                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24582                                data,
24583                            )
24584                            .map(StakeTableV3Calls::MAX_EXIT_ESCROW_PERIOD)
24585                    }
24586                    MAX_EXIT_ESCROW_PERIOD
24587                },
24588                {
24589                    fn MAX_COMMISSION_BPS(
24590                        data: &[u8],
24591                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24592                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24593                                data,
24594                            )
24595                            .map(StakeTableV3Calls::MAX_COMMISSION_BPS)
24596                    }
24597                    MAX_COMMISSION_BPS
24598                },
24599                {
24600                    fn PAUSER_ROLE(
24601                        data: &[u8],
24602                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24603                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24604                                data,
24605                            )
24606                            .map(StakeTableV3Calls::PAUSER_ROLE)
24607                    }
24608                    PAUSER_ROLE
24609                },
24610                {
24611                    fn transferOwnership(
24612                        data: &[u8],
24613                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24614                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24615                                data,
24616                            )
24617                            .map(StakeTableV3Calls::transferOwnership)
24618                    }
24619                    transferOwnership
24620                },
24621                {
24622                    fn CURVE25519_P(
24623                        data: &[u8],
24624                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24625                        <CURVE25519_PCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24626                                data,
24627                            )
24628                            .map(StakeTableV3Calls::CURVE25519_P)
24629                    }
24630                    CURVE25519_P
24631                },
24632                {
24633                    fn validators(
24634                        data: &[u8],
24635                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24636                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24637                                data,
24638                            )
24639                            .map(StakeTableV3Calls::validators)
24640                    }
24641                    validators
24642                },
24643                {
24644                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
24645                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24646                                data,
24647                            )
24648                            .map(StakeTableV3Calls::token)
24649                    }
24650                    token
24651                },
24652            ];
24653            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
24654                return Err(
24655                    alloy_sol_types::Error::unknown_selector(
24656                        <Self as alloy_sol_types::SolInterface>::NAME,
24657                        selector,
24658                    ),
24659                );
24660            };
24661            DECODE_VALIDATE_SHIMS[idx](data)
24662        }
24663        #[inline]
24664        fn abi_encoded_size(&self) -> usize {
24665            match self {
24666                Self::CURVE25519_P(inner) => {
24667                    <CURVE25519_PCall as alloy_sol_types::SolCall>::abi_encoded_size(
24668                        inner,
24669                    )
24670                }
24671                Self::DEFAULT_ADMIN_ROLE(inner) => {
24672                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
24673                        inner,
24674                    )
24675                }
24676                Self::MAX_COMMISSION_BPS(inner) => {
24677                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encoded_size(
24678                        inner,
24679                    )
24680                }
24681                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
24682                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
24683                        inner,
24684                    )
24685                }
24686                Self::MAX_METADATA_URI_LENGTH(inner) => {
24687                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
24688                        inner,
24689                    )
24690                }
24691                Self::MAX_P2P_ADDR_LENGTH(inner) => {
24692                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
24693                        inner,
24694                    )
24695                }
24696                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
24697                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
24698                        inner,
24699                    )
24700                }
24701                Self::PAUSER_ROLE(inner) => {
24702                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
24703                        inner,
24704                    )
24705                }
24706                Self::UPGRADE_INTERFACE_VERSION(inner) => {
24707                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
24708                        inner,
24709                    )
24710                }
24711                Self::_hashBlsKey(inner) => {
24712                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
24713                        inner,
24714                    )
24715                }
24716                Self::activeStake(inner) => {
24717                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
24718                        inner,
24719                    )
24720                }
24721                Self::blsKeys(inner) => {
24722                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24723                }
24724                Self::claimValidatorExit(inner) => {
24725                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
24726                        inner,
24727                    )
24728                }
24729                Self::claimWithdrawal(inner) => {
24730                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
24731                        inner,
24732                    )
24733                }
24734                Self::commissionTracking(inner) => {
24735                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encoded_size(
24736                        inner,
24737                    )
24738                }
24739                Self::delegate(inner) => {
24740                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24741                }
24742                Self::delegations(inner) => {
24743                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
24744                        inner,
24745                    )
24746                }
24747                Self::deregisterValidator(inner) => {
24748                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
24749                        inner,
24750                    )
24751                }
24752                Self::exitEscrowPeriod(inner) => {
24753                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
24754                        inner,
24755                    )
24756                }
24757                Self::getRoleAdmin(inner) => {
24758                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
24759                        inner,
24760                    )
24761                }
24762                Self::getUndelegation(inner) => {
24763                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encoded_size(
24764                        inner,
24765                    )
24766                }
24767                Self::getVersion(inner) => {
24768                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24769                }
24770                Self::grantRole(inner) => {
24771                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24772                }
24773                Self::hasRole(inner) => {
24774                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24775                }
24776                Self::initialize(inner) => {
24777                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24778                }
24779                Self::initializeV2(inner) => {
24780                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
24781                        inner,
24782                    )
24783                }
24784                Self::initializeV3(inner) => {
24785                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
24786                        inner,
24787                    )
24788                }
24789                Self::initializedAtBlock(inner) => {
24790                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
24791                        inner,
24792                    )
24793                }
24794                Self::lightClient(inner) => {
24795                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
24796                        inner,
24797                    )
24798                }
24799                Self::maxCommissionIncrease(inner) => {
24800                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
24801                        inner,
24802                    )
24803                }
24804                Self::minCommissionIncreaseInterval(inner) => {
24805                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
24806                        inner,
24807                    )
24808                }
24809                Self::minDelegateAmount(inner) => {
24810                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
24811                        inner,
24812                    )
24813                }
24814                Self::owner(inner) => {
24815                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24816                }
24817                Self::pause(inner) => {
24818                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24819                }
24820                Self::paused(inner) => {
24821                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24822                }
24823                Self::proxiableUUID(inner) => {
24824                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
24825                        inner,
24826                    )
24827                }
24828                Self::registerValidator(inner) => {
24829                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
24830                        inner,
24831                    )
24832                }
24833                Self::registerValidatorV2(inner) => {
24834                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
24835                        inner,
24836                    )
24837                }
24838                Self::registerValidatorV3(inner) => {
24839                    <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
24840                        inner,
24841                    )
24842                }
24843                Self::renounceOwnership(inner) => {
24844                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
24845                        inner,
24846                    )
24847                }
24848                Self::renounceRole(inner) => {
24849                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
24850                        inner,
24851                    )
24852                }
24853                Self::revokeRole(inner) => {
24854                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24855                }
24856                Self::schnorrKeys(inner) => {
24857                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
24858                        inner,
24859                    )
24860                }
24861                Self::setMaxCommissionIncrease(inner) => {
24862                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
24863                        inner,
24864                    )
24865                }
24866                Self::setMinCommissionUpdateInterval(inner) => {
24867                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
24868                        inner,
24869                    )
24870                }
24871                Self::setMinDelegateAmount(inner) => {
24872                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
24873                        inner,
24874                    )
24875                }
24876                Self::supportsInterface(inner) => {
24877                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
24878                        inner,
24879                    )
24880                }
24881                Self::token(inner) => {
24882                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24883                }
24884                Self::transferOwnership(inner) => {
24885                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
24886                        inner,
24887                    )
24888                }
24889                Self::undelegate(inner) => {
24890                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24891                }
24892                Self::undelegations(inner) => {
24893                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
24894                        inner,
24895                    )
24896                }
24897                Self::unpause(inner) => {
24898                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24899                }
24900                Self::updateCommission(inner) => {
24901                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
24902                        inner,
24903                    )
24904                }
24905                Self::updateConsensusKeys(inner) => {
24906                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
24907                        inner,
24908                    )
24909                }
24910                Self::updateConsensusKeysV2(inner) => {
24911                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
24912                        inner,
24913                    )
24914                }
24915                Self::updateExitEscrowPeriod(inner) => {
24916                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
24917                        inner,
24918                    )
24919                }
24920                Self::updateMetadataUri(inner) => {
24921                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
24922                        inner,
24923                    )
24924                }
24925                Self::updateNetworkConfig(inner) => {
24926                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_encoded_size(
24927                        inner,
24928                    )
24929                }
24930                Self::updateP2pAddr(inner) => {
24931                    <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_encoded_size(
24932                        inner,
24933                    )
24934                }
24935                Self::updateX25519Key(inner) => {
24936                    <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
24937                        inner,
24938                    )
24939                }
24940                Self::upgradeToAndCall(inner) => {
24941                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
24942                        inner,
24943                    )
24944                }
24945                Self::validateMetadataUri(inner) => {
24946                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
24947                        inner,
24948                    )
24949                }
24950                Self::validateP2pAddr(inner) => {
24951                    <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_encoded_size(
24952                        inner,
24953                    )
24954                }
24955                Self::validatorExits(inner) => {
24956                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
24957                        inner,
24958                    )
24959                }
24960                Self::validators(inner) => {
24961                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24962                }
24963                Self::x25519Keys(inner) => {
24964                    <x25519KeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24965                }
24966            }
24967        }
24968        #[inline]
24969        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
24970            match self {
24971                Self::CURVE25519_P(inner) => {
24972                    <CURVE25519_PCall as alloy_sol_types::SolCall>::abi_encode_raw(
24973                        inner,
24974                        out,
24975                    )
24976                }
24977                Self::DEFAULT_ADMIN_ROLE(inner) => {
24978                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
24979                        inner,
24980                        out,
24981                    )
24982                }
24983                Self::MAX_COMMISSION_BPS(inner) => {
24984                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encode_raw(
24985                        inner,
24986                        out,
24987                    )
24988                }
24989                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
24990                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
24991                        inner,
24992                        out,
24993                    )
24994                }
24995                Self::MAX_METADATA_URI_LENGTH(inner) => {
24996                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
24997                        inner,
24998                        out,
24999                    )
25000                }
25001                Self::MAX_P2P_ADDR_LENGTH(inner) => {
25002                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
25003                        inner,
25004                        out,
25005                    )
25006                }
25007                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
25008                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
25009                        inner,
25010                        out,
25011                    )
25012                }
25013                Self::PAUSER_ROLE(inner) => {
25014                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
25015                        inner,
25016                        out,
25017                    )
25018                }
25019                Self::UPGRADE_INTERFACE_VERSION(inner) => {
25020                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
25021                        inner,
25022                        out,
25023                    )
25024                }
25025                Self::_hashBlsKey(inner) => {
25026                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
25027                        inner,
25028                        out,
25029                    )
25030                }
25031                Self::activeStake(inner) => {
25032                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
25033                        inner,
25034                        out,
25035                    )
25036                }
25037                Self::blsKeys(inner) => {
25038                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25039                }
25040                Self::claimValidatorExit(inner) => {
25041                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
25042                        inner,
25043                        out,
25044                    )
25045                }
25046                Self::claimWithdrawal(inner) => {
25047                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
25048                        inner,
25049                        out,
25050                    )
25051                }
25052                Self::commissionTracking(inner) => {
25053                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encode_raw(
25054                        inner,
25055                        out,
25056                    )
25057                }
25058                Self::delegate(inner) => {
25059                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
25060                        inner,
25061                        out,
25062                    )
25063                }
25064                Self::delegations(inner) => {
25065                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
25066                        inner,
25067                        out,
25068                    )
25069                }
25070                Self::deregisterValidator(inner) => {
25071                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
25072                        inner,
25073                        out,
25074                    )
25075                }
25076                Self::exitEscrowPeriod(inner) => {
25077                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
25078                        inner,
25079                        out,
25080                    )
25081                }
25082                Self::getRoleAdmin(inner) => {
25083                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
25084                        inner,
25085                        out,
25086                    )
25087                }
25088                Self::getUndelegation(inner) => {
25089                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
25090                        inner,
25091                        out,
25092                    )
25093                }
25094                Self::getVersion(inner) => {
25095                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
25096                        inner,
25097                        out,
25098                    )
25099                }
25100                Self::grantRole(inner) => {
25101                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
25102                        inner,
25103                        out,
25104                    )
25105                }
25106                Self::hasRole(inner) => {
25107                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25108                }
25109                Self::initialize(inner) => {
25110                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
25111                        inner,
25112                        out,
25113                    )
25114                }
25115                Self::initializeV2(inner) => {
25116                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
25117                        inner,
25118                        out,
25119                    )
25120                }
25121                Self::initializeV3(inner) => {
25122                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
25123                        inner,
25124                        out,
25125                    )
25126                }
25127                Self::initializedAtBlock(inner) => {
25128                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
25129                        inner,
25130                        out,
25131                    )
25132                }
25133                Self::lightClient(inner) => {
25134                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
25135                        inner,
25136                        out,
25137                    )
25138                }
25139                Self::maxCommissionIncrease(inner) => {
25140                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
25141                        inner,
25142                        out,
25143                    )
25144                }
25145                Self::minCommissionIncreaseInterval(inner) => {
25146                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
25147                        inner,
25148                        out,
25149                    )
25150                }
25151                Self::minDelegateAmount(inner) => {
25152                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
25153                        inner,
25154                        out,
25155                    )
25156                }
25157                Self::owner(inner) => {
25158                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25159                }
25160                Self::pause(inner) => {
25161                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25162                }
25163                Self::paused(inner) => {
25164                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25165                }
25166                Self::proxiableUUID(inner) => {
25167                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
25168                        inner,
25169                        out,
25170                    )
25171                }
25172                Self::registerValidator(inner) => {
25173                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
25174                        inner,
25175                        out,
25176                    )
25177                }
25178                Self::registerValidatorV2(inner) => {
25179                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
25180                        inner,
25181                        out,
25182                    )
25183                }
25184                Self::registerValidatorV3(inner) => {
25185                    <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
25186                        inner,
25187                        out,
25188                    )
25189                }
25190                Self::renounceOwnership(inner) => {
25191                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
25192                        inner,
25193                        out,
25194                    )
25195                }
25196                Self::renounceRole(inner) => {
25197                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
25198                        inner,
25199                        out,
25200                    )
25201                }
25202                Self::revokeRole(inner) => {
25203                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
25204                        inner,
25205                        out,
25206                    )
25207                }
25208                Self::schnorrKeys(inner) => {
25209                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
25210                        inner,
25211                        out,
25212                    )
25213                }
25214                Self::setMaxCommissionIncrease(inner) => {
25215                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
25216                        inner,
25217                        out,
25218                    )
25219                }
25220                Self::setMinCommissionUpdateInterval(inner) => {
25221                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
25222                        inner,
25223                        out,
25224                    )
25225                }
25226                Self::setMinDelegateAmount(inner) => {
25227                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
25228                        inner,
25229                        out,
25230                    )
25231                }
25232                Self::supportsInterface(inner) => {
25233                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
25234                        inner,
25235                        out,
25236                    )
25237                }
25238                Self::token(inner) => {
25239                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25240                }
25241                Self::transferOwnership(inner) => {
25242                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
25243                        inner,
25244                        out,
25245                    )
25246                }
25247                Self::undelegate(inner) => {
25248                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
25249                        inner,
25250                        out,
25251                    )
25252                }
25253                Self::undelegations(inner) => {
25254                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
25255                        inner,
25256                        out,
25257                    )
25258                }
25259                Self::unpause(inner) => {
25260                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25261                }
25262                Self::updateCommission(inner) => {
25263                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
25264                        inner,
25265                        out,
25266                    )
25267                }
25268                Self::updateConsensusKeys(inner) => {
25269                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
25270                        inner,
25271                        out,
25272                    )
25273                }
25274                Self::updateConsensusKeysV2(inner) => {
25275                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
25276                        inner,
25277                        out,
25278                    )
25279                }
25280                Self::updateExitEscrowPeriod(inner) => {
25281                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
25282                        inner,
25283                        out,
25284                    )
25285                }
25286                Self::updateMetadataUri(inner) => {
25287                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
25288                        inner,
25289                        out,
25290                    )
25291                }
25292                Self::updateNetworkConfig(inner) => {
25293                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_encode_raw(
25294                        inner,
25295                        out,
25296                    )
25297                }
25298                Self::updateP2pAddr(inner) => {
25299                    <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_encode_raw(
25300                        inner,
25301                        out,
25302                    )
25303                }
25304                Self::updateX25519Key(inner) => {
25305                    <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
25306                        inner,
25307                        out,
25308                    )
25309                }
25310                Self::upgradeToAndCall(inner) => {
25311                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
25312                        inner,
25313                        out,
25314                    )
25315                }
25316                Self::validateMetadataUri(inner) => {
25317                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
25318                        inner,
25319                        out,
25320                    )
25321                }
25322                Self::validateP2pAddr(inner) => {
25323                    <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_encode_raw(
25324                        inner,
25325                        out,
25326                    )
25327                }
25328                Self::validatorExits(inner) => {
25329                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
25330                        inner,
25331                        out,
25332                    )
25333                }
25334                Self::validators(inner) => {
25335                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
25336                        inner,
25337                        out,
25338                    )
25339                }
25340                Self::x25519Keys(inner) => {
25341                    <x25519KeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
25342                        inner,
25343                        out,
25344                    )
25345                }
25346            }
25347        }
25348    }
25349    ///Container for all the [`StakeTableV3`](self) custom errors.
25350    #[derive(Clone)]
25351    #[derive(serde::Serialize, serde::Deserialize)]
25352    #[derive(Debug, PartialEq, Eq, Hash)]
25353    pub enum StakeTableV3Errors {
25354        #[allow(missing_docs)]
25355        AccessControlBadConfirmation(AccessControlBadConfirmation),
25356        #[allow(missing_docs)]
25357        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
25358        #[allow(missing_docs)]
25359        AddressEmptyCode(AddressEmptyCode),
25360        #[allow(missing_docs)]
25361        BLSSigIsInfinity(BLSSigIsInfinity),
25362        #[allow(missing_docs)]
25363        BLSSigVerificationFailed(BLSSigVerificationFailed),
25364        #[allow(missing_docs)]
25365        BLSVKIsInfinity(BLSVKIsInfinity),
25366        #[allow(missing_docs)]
25367        BN254PairingProdFailed(BN254PairingProdFailed),
25368        #[allow(missing_docs)]
25369        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
25370        #[allow(missing_docs)]
25371        CommissionAlreadyInitialized(CommissionAlreadyInitialized),
25372        #[allow(missing_docs)]
25373        CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax),
25374        #[allow(missing_docs)]
25375        CommissionUnchanged(CommissionUnchanged),
25376        #[allow(missing_docs)]
25377        CommissionUpdateTooSoon(CommissionUpdateTooSoon),
25378        #[allow(missing_docs)]
25379        DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced),
25380        #[allow(missing_docs)]
25381        DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked),
25382        #[allow(missing_docs)]
25383        DelegateAmountTooSmall(DelegateAmountTooSmall),
25384        #[allow(missing_docs)]
25385        DeprecatedFunction(DeprecatedFunction),
25386        #[allow(missing_docs)]
25387        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
25388        #[allow(missing_docs)]
25389        ERC1967NonPayable(ERC1967NonPayable),
25390        #[allow(missing_docs)]
25391        EnforcedPause(EnforcedPause),
25392        #[allow(missing_docs)]
25393        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
25394        #[allow(missing_docs)]
25395        ExpectedPause(ExpectedPause),
25396        #[allow(missing_docs)]
25397        FailedInnerCall(FailedInnerCall),
25398        #[allow(missing_docs)]
25399        InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance),
25400        #[allow(missing_docs)]
25401        InsufficientAllowance(InsufficientAllowance),
25402        #[allow(missing_docs)]
25403        InsufficientBalance(InsufficientBalance),
25404        #[allow(missing_docs)]
25405        InvalidCommission(InvalidCommission),
25406        #[allow(missing_docs)]
25407        InvalidG1(InvalidG1),
25408        #[allow(missing_docs)]
25409        InvalidInitialization(InvalidInitialization),
25410        #[allow(missing_docs)]
25411        InvalidMetadataUriLength(InvalidMetadataUriLength),
25412        #[allow(missing_docs)]
25413        InvalidP2pAddr(InvalidP2pAddr),
25414        #[allow(missing_docs)]
25415        InvalidRateLimitParameters(InvalidRateLimitParameters),
25416        #[allow(missing_docs)]
25417        InvalidSchnorrSig(InvalidSchnorrSig),
25418        #[allow(missing_docs)]
25419        InvalidSchnorrVK(InvalidSchnorrVK),
25420        #[allow(missing_docs)]
25421        InvalidX25519Key(InvalidX25519Key),
25422        #[allow(missing_docs)]
25423        MinDelegateAmountTooSmall(MinDelegateAmountTooSmall),
25424        #[allow(missing_docs)]
25425        NoUndelegationFound(NoUndelegationFound),
25426        #[allow(missing_docs)]
25427        NotInitializing(NotInitializing),
25428        #[allow(missing_docs)]
25429        NothingToWithdraw(NothingToWithdraw),
25430        #[allow(missing_docs)]
25431        OwnableInvalidOwner(OwnableInvalidOwner),
25432        #[allow(missing_docs)]
25433        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
25434        #[allow(missing_docs)]
25435        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
25436        #[allow(missing_docs)]
25437        PowPrecompileFailed(PowPrecompileFailed),
25438        #[allow(missing_docs)]
25439        PrematureWithdrawal(PrematureWithdrawal),
25440        #[allow(missing_docs)]
25441        SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed),
25442        #[allow(missing_docs)]
25443        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
25444        #[allow(missing_docs)]
25445        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
25446        #[allow(missing_docs)]
25447        UndelegationAlreadyExists(UndelegationAlreadyExists),
25448        #[allow(missing_docs)]
25449        ValidatorAlreadyExited(ValidatorAlreadyExited),
25450        #[allow(missing_docs)]
25451        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
25452        #[allow(missing_docs)]
25453        ValidatorInactive(ValidatorInactive),
25454        #[allow(missing_docs)]
25455        ValidatorNotExited(ValidatorNotExited),
25456        #[allow(missing_docs)]
25457        X25519KeyAlreadyUsed(X25519KeyAlreadyUsed),
25458        #[allow(missing_docs)]
25459        ZeroAddress(ZeroAddress),
25460        #[allow(missing_docs)]
25461        ZeroAmount(ZeroAmount),
25462    }
25463    impl StakeTableV3Errors {
25464        /// All the selectors of this enum.
25465        ///
25466        /// Note that the selectors might not be in the same order as the variants.
25467        /// No guarantees are made about the order of the selectors.
25468        ///
25469        /// Prefer using `SolInterface` methods instead.
25470        pub const SELECTORS: &'static [[u8; 4usize]] = &[
25471            [1u8, 181u8, 20u8, 174u8],
25472            [6u8, 207u8, 67u8, 143u8],
25473            [12u8, 237u8, 62u8, 80u8],
25474            [17u8, 140u8, 218u8, 167u8],
25475            [20u8, 37u8, 234u8, 66u8],
25476            [22u8, 235u8, 148u8, 203u8],
25477            [30u8, 79u8, 189u8, 247u8],
25478            [31u8, 42u8, 32u8, 5u8],
25479            [35u8, 159u8, 245u8, 127u8],
25480            [37u8, 173u8, 72u8, 202u8],
25481            [42u8, 27u8, 45u8, 216u8],
25482            [47u8, 171u8, 146u8, 202u8],
25483            [50u8, 116u8, 250u8, 100u8],
25484            [62u8, 75u8, 161u8, 63u8],
25485            [66u8, 71u8, 6u8, 135u8],
25486            [76u8, 156u8, 140u8, 227u8],
25487            [80u8, 129u8, 78u8, 16u8],
25488            [80u8, 138u8, 121u8, 63u8],
25489            [90u8, 119u8, 67u8, 87u8],
25490            [102u8, 151u8, 178u8, 50u8],
25491            [103u8, 78u8, 142u8, 243u8],
25492            [116u8, 39u8, 35u8, 50u8],
25493            [121u8, 121u8, 13u8, 124u8],
25494            [123u8, 38u8, 158u8, 146u8],
25495            [125u8, 41u8, 135u8, 49u8],
25496            [139u8, 120u8, 99u8, 29u8],
25497            [141u8, 252u8, 32u8, 43u8],
25498            [144u8, 184u8, 103u8, 138u8],
25499            [146u8, 102u8, 83u8, 81u8],
25500            [153u8, 115u8, 247u8, 216u8],
25501            [153u8, 150u8, 179u8, 21u8],
25502            [158u8, 120u8, 209u8, 76u8],
25503            [170u8, 29u8, 73u8, 164u8],
25504            [174u8, 73u8, 59u8, 3u8],
25505            [176u8, 181u8, 251u8, 153u8],
25506            [178u8, 54u8, 64u8, 236u8],
25507            [179u8, 152u8, 151u8, 159u8],
25508            [181u8, 36u8, 253u8, 106u8],
25509            [181u8, 126u8, 33u8, 223u8],
25510            [188u8, 134u8, 197u8, 154u8],
25511            [194u8, 6u8, 51u8, 79u8],
25512            [194u8, 11u8, 172u8, 148u8],
25513            [194u8, 215u8, 248u8, 19u8],
25514            [208u8, 208u8, 79u8, 96u8],
25515            [212u8, 35u8, 164u8, 241u8],
25516            [215u8, 230u8, 188u8, 248u8],
25517            [217u8, 46u8, 35u8, 61u8],
25518            [217u8, 60u8, 6u8, 101u8],
25519            [220u8, 129u8, 219u8, 133u8],
25520            [224u8, 124u8, 141u8, 186u8],
25521            [226u8, 81u8, 125u8, 63u8],
25522            [234u8, 180u8, 169u8, 99u8],
25523            [242u8, 83u8, 20u8, 166u8],
25524            [249u8, 46u8, 232u8, 169u8],
25525        ];
25526        /// The names of the variants in the same order as `SELECTORS`.
25527        pub const VARIANT_NAMES: &'static [&'static str] = &[
25528            ::core::stringify!(BlsKeyAlreadyUsed),
25529            ::core::stringify!(InvalidSchnorrVK),
25530            ::core::stringify!(BLSSigVerificationFailed),
25531            ::core::stringify!(OwnableUnauthorizedAccount),
25532            ::core::stringify!(FailedInnerCall),
25533            ::core::stringify!(CommissionUpdateTooSoon),
25534            ::core::stringify!(OwnableInvalidOwner),
25535            ::core::stringify!(ZeroAmount),
25536            ::core::stringify!(InvalidMetadataUriLength),
25537            ::core::stringify!(CommissionIncreaseExceedsMax),
25538            ::core::stringify!(InsufficientAllowance),
25539            ::core::stringify!(OwnershipCannotBeRenounced),
25540            ::core::stringify!(PowPrecompileFailed),
25541            ::core::stringify!(InvalidX25519Key),
25542            ::core::stringify!(InvalidSchnorrSig),
25543            ::core::stringify!(ERC1967InvalidImplementation),
25544            ::core::stringify!(CommissionAlreadyInitialized),
25545            ::core::stringify!(ValidatorInactive),
25546            ::core::stringify!(PrematureWithdrawal),
25547            ::core::stringify!(AccessControlBadConfirmation),
25548            ::core::stringify!(InvalidRateLimitParameters),
25549            ::core::stringify!(BLSSigIsInfinity),
25550            ::core::stringify!(InvalidP2pAddr),
25551            ::core::stringify!(InitialActiveStakeExceedsBalance),
25552            ::core::stringify!(DelegateAmountTooSmall),
25553            ::core::stringify!(DefaultAdminCannotBeRenounced),
25554            ::core::stringify!(ExpectedPause),
25555            ::core::stringify!(MinDelegateAmountTooSmall),
25556            ::core::stringify!(InsufficientBalance),
25557            ::core::stringify!(ValidatorAlreadyRegistered),
25558            ::core::stringify!(AddressEmptyCode),
25559            ::core::stringify!(InvalidG1),
25560            ::core::stringify!(UUPSUnsupportedProxiableUUID),
25561            ::core::stringify!(SchnorrKeyAlreadyUsed),
25562            ::core::stringify!(DefaultAdminCannotBeRevoked),
25563            ::core::stringify!(X25519KeyAlreadyUsed),
25564            ::core::stringify!(ERC1967NonPayable),
25565            ::core::stringify!(NoUndelegationFound),
25566            ::core::stringify!(ExitEscrowPeriodInvalid),
25567            ::core::stringify!(BLSVKIsInfinity),
25568            ::core::stringify!(BN254PairingProdFailed),
25569            ::core::stringify!(CommissionUnchanged),
25570            ::core::stringify!(DeprecatedFunction),
25571            ::core::stringify!(NothingToWithdraw),
25572            ::core::stringify!(UndelegationAlreadyExists),
25573            ::core::stringify!(NotInitializing),
25574            ::core::stringify!(ZeroAddress),
25575            ::core::stringify!(EnforcedPause),
25576            ::core::stringify!(InvalidCommission),
25577            ::core::stringify!(UUPSUnauthorizedCallContext),
25578            ::core::stringify!(AccessControlUnauthorizedAccount),
25579            ::core::stringify!(ValidatorAlreadyExited),
25580            ::core::stringify!(ValidatorNotExited),
25581            ::core::stringify!(InvalidInitialization),
25582        ];
25583        /// The signatures in the same order as `SELECTORS`.
25584        pub const SIGNATURES: &'static [&'static str] = &[
25585            <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25586            <InvalidSchnorrVK as alloy_sol_types::SolError>::SIGNATURE,
25587            <BLSSigVerificationFailed as alloy_sol_types::SolError>::SIGNATURE,
25588            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
25589            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
25590            <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SIGNATURE,
25591            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
25592            <ZeroAmount as alloy_sol_types::SolError>::SIGNATURE,
25593            <InvalidMetadataUriLength as alloy_sol_types::SolError>::SIGNATURE,
25594            <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SIGNATURE,
25595            <InsufficientAllowance as alloy_sol_types::SolError>::SIGNATURE,
25596            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
25597            <PowPrecompileFailed as alloy_sol_types::SolError>::SIGNATURE,
25598            <InvalidX25519Key as alloy_sol_types::SolError>::SIGNATURE,
25599            <InvalidSchnorrSig as alloy_sol_types::SolError>::SIGNATURE,
25600            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
25601            <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SIGNATURE,
25602            <ValidatorInactive as alloy_sol_types::SolError>::SIGNATURE,
25603            <PrematureWithdrawal as alloy_sol_types::SolError>::SIGNATURE,
25604            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
25605            <InvalidRateLimitParameters as alloy_sol_types::SolError>::SIGNATURE,
25606            <BLSSigIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
25607            <InvalidP2pAddr as alloy_sol_types::SolError>::SIGNATURE,
25608            <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SIGNATURE,
25609            <DelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
25610            <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
25611            <ExpectedPause as alloy_sol_types::SolError>::SIGNATURE,
25612            <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
25613            <InsufficientBalance as alloy_sol_types::SolError>::SIGNATURE,
25614            <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SIGNATURE,
25615            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
25616            <InvalidG1 as alloy_sol_types::SolError>::SIGNATURE,
25617            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
25618            <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25619            <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SIGNATURE,
25620            <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25621            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
25622            <NoUndelegationFound as alloy_sol_types::SolError>::SIGNATURE,
25623            <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SIGNATURE,
25624            <BLSVKIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
25625            <BN254PairingProdFailed as alloy_sol_types::SolError>::SIGNATURE,
25626            <CommissionUnchanged as alloy_sol_types::SolError>::SIGNATURE,
25627            <DeprecatedFunction as alloy_sol_types::SolError>::SIGNATURE,
25628            <NothingToWithdraw as alloy_sol_types::SolError>::SIGNATURE,
25629            <UndelegationAlreadyExists as alloy_sol_types::SolError>::SIGNATURE,
25630            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
25631            <ZeroAddress as alloy_sol_types::SolError>::SIGNATURE,
25632            <EnforcedPause as alloy_sol_types::SolError>::SIGNATURE,
25633            <InvalidCommission as alloy_sol_types::SolError>::SIGNATURE,
25634            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
25635            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
25636            <ValidatorAlreadyExited as alloy_sol_types::SolError>::SIGNATURE,
25637            <ValidatorNotExited as alloy_sol_types::SolError>::SIGNATURE,
25638            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
25639        ];
25640        /// Returns the signature for the given selector, if known.
25641        #[inline]
25642        pub fn signature_by_selector(
25643            selector: [u8; 4usize],
25644        ) -> ::core::option::Option<&'static str> {
25645            match Self::SELECTORS.binary_search(&selector) {
25646                ::core::result::Result::Ok(idx) => {
25647                    ::core::option::Option::Some(Self::SIGNATURES[idx])
25648                }
25649                ::core::result::Result::Err(_) => ::core::option::Option::None,
25650            }
25651        }
25652        /// Returns the enum variant name for the given selector, if known.
25653        #[inline]
25654        pub fn name_by_selector(
25655            selector: [u8; 4usize],
25656        ) -> ::core::option::Option<&'static str> {
25657            let sig = Self::signature_by_selector(selector)?;
25658            sig.split_once('(').map(|(name, _)| name)
25659        }
25660    }
25661    #[automatically_derived]
25662    impl alloy_sol_types::SolInterface for StakeTableV3Errors {
25663        const NAME: &'static str = "StakeTableV3Errors";
25664        const MIN_DATA_LENGTH: usize = 0usize;
25665        const COUNT: usize = 54usize;
25666        #[inline]
25667        fn selector(&self) -> [u8; 4] {
25668            match self {
25669                Self::AccessControlBadConfirmation(_) => {
25670                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
25671                }
25672                Self::AccessControlUnauthorizedAccount(_) => {
25673                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
25674                }
25675                Self::AddressEmptyCode(_) => {
25676                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
25677                }
25678                Self::BLSSigIsInfinity(_) => {
25679                    <BLSSigIsInfinity as alloy_sol_types::SolError>::SELECTOR
25680                }
25681                Self::BLSSigVerificationFailed(_) => {
25682                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
25683                }
25684                Self::BLSVKIsInfinity(_) => {
25685                    <BLSVKIsInfinity as alloy_sol_types::SolError>::SELECTOR
25686                }
25687                Self::BN254PairingProdFailed(_) => {
25688                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
25689                }
25690                Self::BlsKeyAlreadyUsed(_) => {
25691                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
25692                }
25693                Self::CommissionAlreadyInitialized(_) => {
25694                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SELECTOR
25695                }
25696                Self::CommissionIncreaseExceedsMax(_) => {
25697                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SELECTOR
25698                }
25699                Self::CommissionUnchanged(_) => {
25700                    <CommissionUnchanged as alloy_sol_types::SolError>::SELECTOR
25701                }
25702                Self::CommissionUpdateTooSoon(_) => {
25703                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SELECTOR
25704                }
25705                Self::DefaultAdminCannotBeRenounced(_) => {
25706                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
25707                }
25708                Self::DefaultAdminCannotBeRevoked(_) => {
25709                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SELECTOR
25710                }
25711                Self::DelegateAmountTooSmall(_) => {
25712                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
25713                }
25714                Self::DeprecatedFunction(_) => {
25715                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
25716                }
25717                Self::ERC1967InvalidImplementation(_) => {
25718                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
25719                }
25720                Self::ERC1967NonPayable(_) => {
25721                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
25722                }
25723                Self::EnforcedPause(_) => {
25724                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
25725                }
25726                Self::ExitEscrowPeriodInvalid(_) => {
25727                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
25728                }
25729                Self::ExpectedPause(_) => {
25730                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
25731                }
25732                Self::FailedInnerCall(_) => {
25733                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
25734                }
25735                Self::InitialActiveStakeExceedsBalance(_) => {
25736                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SELECTOR
25737                }
25738                Self::InsufficientAllowance(_) => {
25739                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
25740                }
25741                Self::InsufficientBalance(_) => {
25742                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
25743                }
25744                Self::InvalidCommission(_) => {
25745                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
25746                }
25747                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
25748                Self::InvalidInitialization(_) => {
25749                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
25750                }
25751                Self::InvalidMetadataUriLength(_) => {
25752                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::SELECTOR
25753                }
25754                Self::InvalidP2pAddr(_) => {
25755                    <InvalidP2pAddr as alloy_sol_types::SolError>::SELECTOR
25756                }
25757                Self::InvalidRateLimitParameters(_) => {
25758                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::SELECTOR
25759                }
25760                Self::InvalidSchnorrSig(_) => {
25761                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
25762                }
25763                Self::InvalidSchnorrVK(_) => {
25764                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
25765                }
25766                Self::InvalidX25519Key(_) => {
25767                    <InvalidX25519Key as alloy_sol_types::SolError>::SELECTOR
25768                }
25769                Self::MinDelegateAmountTooSmall(_) => {
25770                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
25771                }
25772                Self::NoUndelegationFound(_) => {
25773                    <NoUndelegationFound as alloy_sol_types::SolError>::SELECTOR
25774                }
25775                Self::NotInitializing(_) => {
25776                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
25777                }
25778                Self::NothingToWithdraw(_) => {
25779                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
25780                }
25781                Self::OwnableInvalidOwner(_) => {
25782                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
25783                }
25784                Self::OwnableUnauthorizedAccount(_) => {
25785                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
25786                }
25787                Self::OwnershipCannotBeRenounced(_) => {
25788                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
25789                }
25790                Self::PowPrecompileFailed(_) => {
25791                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
25792                }
25793                Self::PrematureWithdrawal(_) => {
25794                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
25795                }
25796                Self::SchnorrKeyAlreadyUsed(_) => {
25797                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
25798                }
25799                Self::UUPSUnauthorizedCallContext(_) => {
25800                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
25801                }
25802                Self::UUPSUnsupportedProxiableUUID(_) => {
25803                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
25804                }
25805                Self::UndelegationAlreadyExists(_) => {
25806                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
25807                }
25808                Self::ValidatorAlreadyExited(_) => {
25809                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
25810                }
25811                Self::ValidatorAlreadyRegistered(_) => {
25812                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
25813                }
25814                Self::ValidatorInactive(_) => {
25815                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
25816                }
25817                Self::ValidatorNotExited(_) => {
25818                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
25819                }
25820                Self::X25519KeyAlreadyUsed(_) => {
25821                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
25822                }
25823                Self::ZeroAddress(_) => {
25824                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
25825                }
25826                Self::ZeroAmount(_) => {
25827                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
25828                }
25829            }
25830        }
25831        #[inline]
25832        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
25833            Self::SELECTORS.get(i).copied()
25834        }
25835        #[inline]
25836        fn valid_selector(selector: [u8; 4]) -> bool {
25837            Self::SELECTORS.binary_search(&selector).is_ok()
25838        }
25839        #[inline]
25840        #[allow(non_snake_case)]
25841        fn abi_decode_raw(
25842            selector: [u8; 4],
25843            data: &[u8],
25844        ) -> alloy_sol_types::Result<Self> {
25845            static DECODE_SHIMS: &[fn(
25846                &[u8],
25847            ) -> alloy_sol_types::Result<StakeTableV3Errors>] = &[
25848                {
25849                    fn BlsKeyAlreadyUsed(
25850                        data: &[u8],
25851                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25852                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
25853                                data,
25854                            )
25855                            .map(StakeTableV3Errors::BlsKeyAlreadyUsed)
25856                    }
25857                    BlsKeyAlreadyUsed
25858                },
25859                {
25860                    fn InvalidSchnorrVK(
25861                        data: &[u8],
25862                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25863                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
25864                                data,
25865                            )
25866                            .map(StakeTableV3Errors::InvalidSchnorrVK)
25867                    }
25868                    InvalidSchnorrVK
25869                },
25870                {
25871                    fn BLSSigVerificationFailed(
25872                        data: &[u8],
25873                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25874                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
25875                                data,
25876                            )
25877                            .map(StakeTableV3Errors::BLSSigVerificationFailed)
25878                    }
25879                    BLSSigVerificationFailed
25880                },
25881                {
25882                    fn OwnableUnauthorizedAccount(
25883                        data: &[u8],
25884                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25885                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
25886                                data,
25887                            )
25888                            .map(StakeTableV3Errors::OwnableUnauthorizedAccount)
25889                    }
25890                    OwnableUnauthorizedAccount
25891                },
25892                {
25893                    fn FailedInnerCall(
25894                        data: &[u8],
25895                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25896                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
25897                                data,
25898                            )
25899                            .map(StakeTableV3Errors::FailedInnerCall)
25900                    }
25901                    FailedInnerCall
25902                },
25903                {
25904                    fn CommissionUpdateTooSoon(
25905                        data: &[u8],
25906                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25907                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw(
25908                                data,
25909                            )
25910                            .map(StakeTableV3Errors::CommissionUpdateTooSoon)
25911                    }
25912                    CommissionUpdateTooSoon
25913                },
25914                {
25915                    fn OwnableInvalidOwner(
25916                        data: &[u8],
25917                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25918                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
25919                                data,
25920                            )
25921                            .map(StakeTableV3Errors::OwnableInvalidOwner)
25922                    }
25923                    OwnableInvalidOwner
25924                },
25925                {
25926                    fn ZeroAmount(
25927                        data: &[u8],
25928                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25929                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
25930                            .map(StakeTableV3Errors::ZeroAmount)
25931                    }
25932                    ZeroAmount
25933                },
25934                {
25935                    fn InvalidMetadataUriLength(
25936                        data: &[u8],
25937                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25938                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw(
25939                                data,
25940                            )
25941                            .map(StakeTableV3Errors::InvalidMetadataUriLength)
25942                    }
25943                    InvalidMetadataUriLength
25944                },
25945                {
25946                    fn CommissionIncreaseExceedsMax(
25947                        data: &[u8],
25948                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25949                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw(
25950                                data,
25951                            )
25952                            .map(StakeTableV3Errors::CommissionIncreaseExceedsMax)
25953                    }
25954                    CommissionIncreaseExceedsMax
25955                },
25956                {
25957                    fn InsufficientAllowance(
25958                        data: &[u8],
25959                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25960                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
25961                                data,
25962                            )
25963                            .map(StakeTableV3Errors::InsufficientAllowance)
25964                    }
25965                    InsufficientAllowance
25966                },
25967                {
25968                    fn OwnershipCannotBeRenounced(
25969                        data: &[u8],
25970                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25971                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
25972                                data,
25973                            )
25974                            .map(StakeTableV3Errors::OwnershipCannotBeRenounced)
25975                    }
25976                    OwnershipCannotBeRenounced
25977                },
25978                {
25979                    fn PowPrecompileFailed(
25980                        data: &[u8],
25981                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25982                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
25983                                data,
25984                            )
25985                            .map(StakeTableV3Errors::PowPrecompileFailed)
25986                    }
25987                    PowPrecompileFailed
25988                },
25989                {
25990                    fn InvalidX25519Key(
25991                        data: &[u8],
25992                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25993                        <InvalidX25519Key as alloy_sol_types::SolError>::abi_decode_raw(
25994                                data,
25995                            )
25996                            .map(StakeTableV3Errors::InvalidX25519Key)
25997                    }
25998                    InvalidX25519Key
25999                },
26000                {
26001                    fn InvalidSchnorrSig(
26002                        data: &[u8],
26003                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26004                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw(
26005                                data,
26006                            )
26007                            .map(StakeTableV3Errors::InvalidSchnorrSig)
26008                    }
26009                    InvalidSchnorrSig
26010                },
26011                {
26012                    fn ERC1967InvalidImplementation(
26013                        data: &[u8],
26014                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26015                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
26016                                data,
26017                            )
26018                            .map(StakeTableV3Errors::ERC1967InvalidImplementation)
26019                    }
26020                    ERC1967InvalidImplementation
26021                },
26022                {
26023                    fn CommissionAlreadyInitialized(
26024                        data: &[u8],
26025                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26026                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw(
26027                                data,
26028                            )
26029                            .map(StakeTableV3Errors::CommissionAlreadyInitialized)
26030                    }
26031                    CommissionAlreadyInitialized
26032                },
26033                {
26034                    fn ValidatorInactive(
26035                        data: &[u8],
26036                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26037                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
26038                                data,
26039                            )
26040                            .map(StakeTableV3Errors::ValidatorInactive)
26041                    }
26042                    ValidatorInactive
26043                },
26044                {
26045                    fn PrematureWithdrawal(
26046                        data: &[u8],
26047                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26048                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
26049                                data,
26050                            )
26051                            .map(StakeTableV3Errors::PrematureWithdrawal)
26052                    }
26053                    PrematureWithdrawal
26054                },
26055                {
26056                    fn AccessControlBadConfirmation(
26057                        data: &[u8],
26058                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26059                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
26060                                data,
26061                            )
26062                            .map(StakeTableV3Errors::AccessControlBadConfirmation)
26063                    }
26064                    AccessControlBadConfirmation
26065                },
26066                {
26067                    fn InvalidRateLimitParameters(
26068                        data: &[u8],
26069                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26070                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw(
26071                                data,
26072                            )
26073                            .map(StakeTableV3Errors::InvalidRateLimitParameters)
26074                    }
26075                    InvalidRateLimitParameters
26076                },
26077                {
26078                    fn BLSSigIsInfinity(
26079                        data: &[u8],
26080                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26081                        <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_decode_raw(
26082                                data,
26083                            )
26084                            .map(StakeTableV3Errors::BLSSigIsInfinity)
26085                    }
26086                    BLSSigIsInfinity
26087                },
26088                {
26089                    fn InvalidP2pAddr(
26090                        data: &[u8],
26091                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26092                        <InvalidP2pAddr as alloy_sol_types::SolError>::abi_decode_raw(
26093                                data,
26094                            )
26095                            .map(StakeTableV3Errors::InvalidP2pAddr)
26096                    }
26097                    InvalidP2pAddr
26098                },
26099                {
26100                    fn InitialActiveStakeExceedsBalance(
26101                        data: &[u8],
26102                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26103                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw(
26104                                data,
26105                            )
26106                            .map(StakeTableV3Errors::InitialActiveStakeExceedsBalance)
26107                    }
26108                    InitialActiveStakeExceedsBalance
26109                },
26110                {
26111                    fn DelegateAmountTooSmall(
26112                        data: &[u8],
26113                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26114                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
26115                                data,
26116                            )
26117                            .map(StakeTableV3Errors::DelegateAmountTooSmall)
26118                    }
26119                    DelegateAmountTooSmall
26120                },
26121                {
26122                    fn DefaultAdminCannotBeRenounced(
26123                        data: &[u8],
26124                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26125                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
26126                                data,
26127                            )
26128                            .map(StakeTableV3Errors::DefaultAdminCannotBeRenounced)
26129                    }
26130                    DefaultAdminCannotBeRenounced
26131                },
26132                {
26133                    fn ExpectedPause(
26134                        data: &[u8],
26135                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26136                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
26137                                data,
26138                            )
26139                            .map(StakeTableV3Errors::ExpectedPause)
26140                    }
26141                    ExpectedPause
26142                },
26143                {
26144                    fn MinDelegateAmountTooSmall(
26145                        data: &[u8],
26146                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26147                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
26148                                data,
26149                            )
26150                            .map(StakeTableV3Errors::MinDelegateAmountTooSmall)
26151                    }
26152                    MinDelegateAmountTooSmall
26153                },
26154                {
26155                    fn InsufficientBalance(
26156                        data: &[u8],
26157                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26158                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
26159                                data,
26160                            )
26161                            .map(StakeTableV3Errors::InsufficientBalance)
26162                    }
26163                    InsufficientBalance
26164                },
26165                {
26166                    fn ValidatorAlreadyRegistered(
26167                        data: &[u8],
26168                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26169                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
26170                                data,
26171                            )
26172                            .map(StakeTableV3Errors::ValidatorAlreadyRegistered)
26173                    }
26174                    ValidatorAlreadyRegistered
26175                },
26176                {
26177                    fn AddressEmptyCode(
26178                        data: &[u8],
26179                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26180                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
26181                                data,
26182                            )
26183                            .map(StakeTableV3Errors::AddressEmptyCode)
26184                    }
26185                    AddressEmptyCode
26186                },
26187                {
26188                    fn InvalidG1(
26189                        data: &[u8],
26190                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26191                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
26192                            .map(StakeTableV3Errors::InvalidG1)
26193                    }
26194                    InvalidG1
26195                },
26196                {
26197                    fn UUPSUnsupportedProxiableUUID(
26198                        data: &[u8],
26199                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26200                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
26201                                data,
26202                            )
26203                            .map(StakeTableV3Errors::UUPSUnsupportedProxiableUUID)
26204                    }
26205                    UUPSUnsupportedProxiableUUID
26206                },
26207                {
26208                    fn SchnorrKeyAlreadyUsed(
26209                        data: &[u8],
26210                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26211                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
26212                                data,
26213                            )
26214                            .map(StakeTableV3Errors::SchnorrKeyAlreadyUsed)
26215                    }
26216                    SchnorrKeyAlreadyUsed
26217                },
26218                {
26219                    fn DefaultAdminCannotBeRevoked(
26220                        data: &[u8],
26221                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26222                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw(
26223                                data,
26224                            )
26225                            .map(StakeTableV3Errors::DefaultAdminCannotBeRevoked)
26226                    }
26227                    DefaultAdminCannotBeRevoked
26228                },
26229                {
26230                    fn X25519KeyAlreadyUsed(
26231                        data: &[u8],
26232                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26233                        <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
26234                                data,
26235                            )
26236                            .map(StakeTableV3Errors::X25519KeyAlreadyUsed)
26237                    }
26238                    X25519KeyAlreadyUsed
26239                },
26240                {
26241                    fn ERC1967NonPayable(
26242                        data: &[u8],
26243                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26244                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
26245                                data,
26246                            )
26247                            .map(StakeTableV3Errors::ERC1967NonPayable)
26248                    }
26249                    ERC1967NonPayable
26250                },
26251                {
26252                    fn NoUndelegationFound(
26253                        data: &[u8],
26254                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26255                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw(
26256                                data,
26257                            )
26258                            .map(StakeTableV3Errors::NoUndelegationFound)
26259                    }
26260                    NoUndelegationFound
26261                },
26262                {
26263                    fn ExitEscrowPeriodInvalid(
26264                        data: &[u8],
26265                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26266                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
26267                                data,
26268                            )
26269                            .map(StakeTableV3Errors::ExitEscrowPeriodInvalid)
26270                    }
26271                    ExitEscrowPeriodInvalid
26272                },
26273                {
26274                    fn BLSVKIsInfinity(
26275                        data: &[u8],
26276                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26277                        <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_decode_raw(
26278                                data,
26279                            )
26280                            .map(StakeTableV3Errors::BLSVKIsInfinity)
26281                    }
26282                    BLSVKIsInfinity
26283                },
26284                {
26285                    fn BN254PairingProdFailed(
26286                        data: &[u8],
26287                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26288                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
26289                                data,
26290                            )
26291                            .map(StakeTableV3Errors::BN254PairingProdFailed)
26292                    }
26293                    BN254PairingProdFailed
26294                },
26295                {
26296                    fn CommissionUnchanged(
26297                        data: &[u8],
26298                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26299                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw(
26300                                data,
26301                            )
26302                            .map(StakeTableV3Errors::CommissionUnchanged)
26303                    }
26304                    CommissionUnchanged
26305                },
26306                {
26307                    fn DeprecatedFunction(
26308                        data: &[u8],
26309                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26310                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw(
26311                                data,
26312                            )
26313                            .map(StakeTableV3Errors::DeprecatedFunction)
26314                    }
26315                    DeprecatedFunction
26316                },
26317                {
26318                    fn NothingToWithdraw(
26319                        data: &[u8],
26320                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26321                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
26322                                data,
26323                            )
26324                            .map(StakeTableV3Errors::NothingToWithdraw)
26325                    }
26326                    NothingToWithdraw
26327                },
26328                {
26329                    fn UndelegationAlreadyExists(
26330                        data: &[u8],
26331                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26332                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
26333                                data,
26334                            )
26335                            .map(StakeTableV3Errors::UndelegationAlreadyExists)
26336                    }
26337                    UndelegationAlreadyExists
26338                },
26339                {
26340                    fn NotInitializing(
26341                        data: &[u8],
26342                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26343                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
26344                                data,
26345                            )
26346                            .map(StakeTableV3Errors::NotInitializing)
26347                    }
26348                    NotInitializing
26349                },
26350                {
26351                    fn ZeroAddress(
26352                        data: &[u8],
26353                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26354                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
26355                            .map(StakeTableV3Errors::ZeroAddress)
26356                    }
26357                    ZeroAddress
26358                },
26359                {
26360                    fn EnforcedPause(
26361                        data: &[u8],
26362                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26363                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
26364                                data,
26365                            )
26366                            .map(StakeTableV3Errors::EnforcedPause)
26367                    }
26368                    EnforcedPause
26369                },
26370                {
26371                    fn InvalidCommission(
26372                        data: &[u8],
26373                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26374                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
26375                                data,
26376                            )
26377                            .map(StakeTableV3Errors::InvalidCommission)
26378                    }
26379                    InvalidCommission
26380                },
26381                {
26382                    fn UUPSUnauthorizedCallContext(
26383                        data: &[u8],
26384                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26385                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
26386                                data,
26387                            )
26388                            .map(StakeTableV3Errors::UUPSUnauthorizedCallContext)
26389                    }
26390                    UUPSUnauthorizedCallContext
26391                },
26392                {
26393                    fn AccessControlUnauthorizedAccount(
26394                        data: &[u8],
26395                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26396                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
26397                                data,
26398                            )
26399                            .map(StakeTableV3Errors::AccessControlUnauthorizedAccount)
26400                    }
26401                    AccessControlUnauthorizedAccount
26402                },
26403                {
26404                    fn ValidatorAlreadyExited(
26405                        data: &[u8],
26406                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26407                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
26408                                data,
26409                            )
26410                            .map(StakeTableV3Errors::ValidatorAlreadyExited)
26411                    }
26412                    ValidatorAlreadyExited
26413                },
26414                {
26415                    fn ValidatorNotExited(
26416                        data: &[u8],
26417                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26418                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
26419                                data,
26420                            )
26421                            .map(StakeTableV3Errors::ValidatorNotExited)
26422                    }
26423                    ValidatorNotExited
26424                },
26425                {
26426                    fn InvalidInitialization(
26427                        data: &[u8],
26428                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26429                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
26430                                data,
26431                            )
26432                            .map(StakeTableV3Errors::InvalidInitialization)
26433                    }
26434                    InvalidInitialization
26435                },
26436            ];
26437            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
26438                return Err(
26439                    alloy_sol_types::Error::unknown_selector(
26440                        <Self as alloy_sol_types::SolInterface>::NAME,
26441                        selector,
26442                    ),
26443                );
26444            };
26445            DECODE_SHIMS[idx](data)
26446        }
26447        #[inline]
26448        #[allow(non_snake_case)]
26449        fn abi_decode_raw_validate(
26450            selector: [u8; 4],
26451            data: &[u8],
26452        ) -> alloy_sol_types::Result<Self> {
26453            static DECODE_VALIDATE_SHIMS: &[fn(
26454                &[u8],
26455            ) -> alloy_sol_types::Result<StakeTableV3Errors>] = &[
26456                {
26457                    fn BlsKeyAlreadyUsed(
26458                        data: &[u8],
26459                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26460                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26461                                data,
26462                            )
26463                            .map(StakeTableV3Errors::BlsKeyAlreadyUsed)
26464                    }
26465                    BlsKeyAlreadyUsed
26466                },
26467                {
26468                    fn InvalidSchnorrVK(
26469                        data: &[u8],
26470                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26471                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
26472                                data,
26473                            )
26474                            .map(StakeTableV3Errors::InvalidSchnorrVK)
26475                    }
26476                    InvalidSchnorrVK
26477                },
26478                {
26479                    fn BLSSigVerificationFailed(
26480                        data: &[u8],
26481                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26482                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26483                                data,
26484                            )
26485                            .map(StakeTableV3Errors::BLSSigVerificationFailed)
26486                    }
26487                    BLSSigVerificationFailed
26488                },
26489                {
26490                    fn OwnableUnauthorizedAccount(
26491                        data: &[u8],
26492                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26493                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
26494                                data,
26495                            )
26496                            .map(StakeTableV3Errors::OwnableUnauthorizedAccount)
26497                    }
26498                    OwnableUnauthorizedAccount
26499                },
26500                {
26501                    fn FailedInnerCall(
26502                        data: &[u8],
26503                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26504                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
26505                                data,
26506                            )
26507                            .map(StakeTableV3Errors::FailedInnerCall)
26508                    }
26509                    FailedInnerCall
26510                },
26511                {
26512                    fn CommissionUpdateTooSoon(
26513                        data: &[u8],
26514                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26515                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw_validate(
26516                                data,
26517                            )
26518                            .map(StakeTableV3Errors::CommissionUpdateTooSoon)
26519                    }
26520                    CommissionUpdateTooSoon
26521                },
26522                {
26523                    fn OwnableInvalidOwner(
26524                        data: &[u8],
26525                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26526                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
26527                                data,
26528                            )
26529                            .map(StakeTableV3Errors::OwnableInvalidOwner)
26530                    }
26531                    OwnableInvalidOwner
26532                },
26533                {
26534                    fn ZeroAmount(
26535                        data: &[u8],
26536                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26537                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
26538                                data,
26539                            )
26540                            .map(StakeTableV3Errors::ZeroAmount)
26541                    }
26542                    ZeroAmount
26543                },
26544                {
26545                    fn InvalidMetadataUriLength(
26546                        data: &[u8],
26547                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26548                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
26549                                data,
26550                            )
26551                            .map(StakeTableV3Errors::InvalidMetadataUriLength)
26552                    }
26553                    InvalidMetadataUriLength
26554                },
26555                {
26556                    fn CommissionIncreaseExceedsMax(
26557                        data: &[u8],
26558                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26559                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw_validate(
26560                                data,
26561                            )
26562                            .map(StakeTableV3Errors::CommissionIncreaseExceedsMax)
26563                    }
26564                    CommissionIncreaseExceedsMax
26565                },
26566                {
26567                    fn InsufficientAllowance(
26568                        data: &[u8],
26569                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26570                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
26571                                data,
26572                            )
26573                            .map(StakeTableV3Errors::InsufficientAllowance)
26574                    }
26575                    InsufficientAllowance
26576                },
26577                {
26578                    fn OwnershipCannotBeRenounced(
26579                        data: &[u8],
26580                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26581                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
26582                                data,
26583                            )
26584                            .map(StakeTableV3Errors::OwnershipCannotBeRenounced)
26585                    }
26586                    OwnershipCannotBeRenounced
26587                },
26588                {
26589                    fn PowPrecompileFailed(
26590                        data: &[u8],
26591                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26592                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26593                                data,
26594                            )
26595                            .map(StakeTableV3Errors::PowPrecompileFailed)
26596                    }
26597                    PowPrecompileFailed
26598                },
26599                {
26600                    fn InvalidX25519Key(
26601                        data: &[u8],
26602                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26603                        <InvalidX25519Key as alloy_sol_types::SolError>::abi_decode_raw_validate(
26604                                data,
26605                            )
26606                            .map(StakeTableV3Errors::InvalidX25519Key)
26607                    }
26608                    InvalidX25519Key
26609                },
26610                {
26611                    fn InvalidSchnorrSig(
26612                        data: &[u8],
26613                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26614                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw_validate(
26615                                data,
26616                            )
26617                            .map(StakeTableV3Errors::InvalidSchnorrSig)
26618                    }
26619                    InvalidSchnorrSig
26620                },
26621                {
26622                    fn ERC1967InvalidImplementation(
26623                        data: &[u8],
26624                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26625                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
26626                                data,
26627                            )
26628                            .map(StakeTableV3Errors::ERC1967InvalidImplementation)
26629                    }
26630                    ERC1967InvalidImplementation
26631                },
26632                {
26633                    fn CommissionAlreadyInitialized(
26634                        data: &[u8],
26635                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26636                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw_validate(
26637                                data,
26638                            )
26639                            .map(StakeTableV3Errors::CommissionAlreadyInitialized)
26640                    }
26641                    CommissionAlreadyInitialized
26642                },
26643                {
26644                    fn ValidatorInactive(
26645                        data: &[u8],
26646                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26647                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
26648                                data,
26649                            )
26650                            .map(StakeTableV3Errors::ValidatorInactive)
26651                    }
26652                    ValidatorInactive
26653                },
26654                {
26655                    fn PrematureWithdrawal(
26656                        data: &[u8],
26657                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26658                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
26659                                data,
26660                            )
26661                            .map(StakeTableV3Errors::PrematureWithdrawal)
26662                    }
26663                    PrematureWithdrawal
26664                },
26665                {
26666                    fn AccessControlBadConfirmation(
26667                        data: &[u8],
26668                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26669                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
26670                                data,
26671                            )
26672                            .map(StakeTableV3Errors::AccessControlBadConfirmation)
26673                    }
26674                    AccessControlBadConfirmation
26675                },
26676                {
26677                    fn InvalidRateLimitParameters(
26678                        data: &[u8],
26679                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26680                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw_validate(
26681                                data,
26682                            )
26683                            .map(StakeTableV3Errors::InvalidRateLimitParameters)
26684                    }
26685                    InvalidRateLimitParameters
26686                },
26687                {
26688                    fn BLSSigIsInfinity(
26689                        data: &[u8],
26690                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26691                        <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_validate(
26692                                data,
26693                            )
26694                            .map(StakeTableV3Errors::BLSSigIsInfinity)
26695                    }
26696                    BLSSigIsInfinity
26697                },
26698                {
26699                    fn InvalidP2pAddr(
26700                        data: &[u8],
26701                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26702                        <InvalidP2pAddr as alloy_sol_types::SolError>::abi_decode_raw_validate(
26703                                data,
26704                            )
26705                            .map(StakeTableV3Errors::InvalidP2pAddr)
26706                    }
26707                    InvalidP2pAddr
26708                },
26709                {
26710                    fn InitialActiveStakeExceedsBalance(
26711                        data: &[u8],
26712                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26713                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
26714                                data,
26715                            )
26716                            .map(StakeTableV3Errors::InitialActiveStakeExceedsBalance)
26717                    }
26718                    InitialActiveStakeExceedsBalance
26719                },
26720                {
26721                    fn DelegateAmountTooSmall(
26722                        data: &[u8],
26723                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26724                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
26725                                data,
26726                            )
26727                            .map(StakeTableV3Errors::DelegateAmountTooSmall)
26728                    }
26729                    DelegateAmountTooSmall
26730                },
26731                {
26732                    fn DefaultAdminCannotBeRenounced(
26733                        data: &[u8],
26734                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26735                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
26736                                data,
26737                            )
26738                            .map(StakeTableV3Errors::DefaultAdminCannotBeRenounced)
26739                    }
26740                    DefaultAdminCannotBeRenounced
26741                },
26742                {
26743                    fn ExpectedPause(
26744                        data: &[u8],
26745                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26746                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
26747                                data,
26748                            )
26749                            .map(StakeTableV3Errors::ExpectedPause)
26750                    }
26751                    ExpectedPause
26752                },
26753                {
26754                    fn MinDelegateAmountTooSmall(
26755                        data: &[u8],
26756                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26757                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
26758                                data,
26759                            )
26760                            .map(StakeTableV3Errors::MinDelegateAmountTooSmall)
26761                    }
26762                    MinDelegateAmountTooSmall
26763                },
26764                {
26765                    fn InsufficientBalance(
26766                        data: &[u8],
26767                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26768                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
26769                                data,
26770                            )
26771                            .map(StakeTableV3Errors::InsufficientBalance)
26772                    }
26773                    InsufficientBalance
26774                },
26775                {
26776                    fn ValidatorAlreadyRegistered(
26777                        data: &[u8],
26778                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26779                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
26780                                data,
26781                            )
26782                            .map(StakeTableV3Errors::ValidatorAlreadyRegistered)
26783                    }
26784                    ValidatorAlreadyRegistered
26785                },
26786                {
26787                    fn AddressEmptyCode(
26788                        data: &[u8],
26789                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26790                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
26791                                data,
26792                            )
26793                            .map(StakeTableV3Errors::AddressEmptyCode)
26794                    }
26795                    AddressEmptyCode
26796                },
26797                {
26798                    fn InvalidG1(
26799                        data: &[u8],
26800                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26801                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
26802                                data,
26803                            )
26804                            .map(StakeTableV3Errors::InvalidG1)
26805                    }
26806                    InvalidG1
26807                },
26808                {
26809                    fn UUPSUnsupportedProxiableUUID(
26810                        data: &[u8],
26811                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26812                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
26813                                data,
26814                            )
26815                            .map(StakeTableV3Errors::UUPSUnsupportedProxiableUUID)
26816                    }
26817                    UUPSUnsupportedProxiableUUID
26818                },
26819                {
26820                    fn SchnorrKeyAlreadyUsed(
26821                        data: &[u8],
26822                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26823                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26824                                data,
26825                            )
26826                            .map(StakeTableV3Errors::SchnorrKeyAlreadyUsed)
26827                    }
26828                    SchnorrKeyAlreadyUsed
26829                },
26830                {
26831                    fn DefaultAdminCannotBeRevoked(
26832                        data: &[u8],
26833                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26834                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw_validate(
26835                                data,
26836                            )
26837                            .map(StakeTableV3Errors::DefaultAdminCannotBeRevoked)
26838                    }
26839                    DefaultAdminCannotBeRevoked
26840                },
26841                {
26842                    fn X25519KeyAlreadyUsed(
26843                        data: &[u8],
26844                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26845                        <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26846                                data,
26847                            )
26848                            .map(StakeTableV3Errors::X25519KeyAlreadyUsed)
26849                    }
26850                    X25519KeyAlreadyUsed
26851                },
26852                {
26853                    fn ERC1967NonPayable(
26854                        data: &[u8],
26855                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26856                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
26857                                data,
26858                            )
26859                            .map(StakeTableV3Errors::ERC1967NonPayable)
26860                    }
26861                    ERC1967NonPayable
26862                },
26863                {
26864                    fn NoUndelegationFound(
26865                        data: &[u8],
26866                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26867                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw_validate(
26868                                data,
26869                            )
26870                            .map(StakeTableV3Errors::NoUndelegationFound)
26871                    }
26872                    NoUndelegationFound
26873                },
26874                {
26875                    fn ExitEscrowPeriodInvalid(
26876                        data: &[u8],
26877                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26878                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
26879                                data,
26880                            )
26881                            .map(StakeTableV3Errors::ExitEscrowPeriodInvalid)
26882                    }
26883                    ExitEscrowPeriodInvalid
26884                },
26885                {
26886                    fn BLSVKIsInfinity(
26887                        data: &[u8],
26888                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26889                        <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_validate(
26890                                data,
26891                            )
26892                            .map(StakeTableV3Errors::BLSVKIsInfinity)
26893                    }
26894                    BLSVKIsInfinity
26895                },
26896                {
26897                    fn BN254PairingProdFailed(
26898                        data: &[u8],
26899                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26900                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26901                                data,
26902                            )
26903                            .map(StakeTableV3Errors::BN254PairingProdFailed)
26904                    }
26905                    BN254PairingProdFailed
26906                },
26907                {
26908                    fn CommissionUnchanged(
26909                        data: &[u8],
26910                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26911                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw_validate(
26912                                data,
26913                            )
26914                            .map(StakeTableV3Errors::CommissionUnchanged)
26915                    }
26916                    CommissionUnchanged
26917                },
26918                {
26919                    fn DeprecatedFunction(
26920                        data: &[u8],
26921                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26922                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw_validate(
26923                                data,
26924                            )
26925                            .map(StakeTableV3Errors::DeprecatedFunction)
26926                    }
26927                    DeprecatedFunction
26928                },
26929                {
26930                    fn NothingToWithdraw(
26931                        data: &[u8],
26932                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26933                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
26934                                data,
26935                            )
26936                            .map(StakeTableV3Errors::NothingToWithdraw)
26937                    }
26938                    NothingToWithdraw
26939                },
26940                {
26941                    fn UndelegationAlreadyExists(
26942                        data: &[u8],
26943                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26944                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
26945                                data,
26946                            )
26947                            .map(StakeTableV3Errors::UndelegationAlreadyExists)
26948                    }
26949                    UndelegationAlreadyExists
26950                },
26951                {
26952                    fn NotInitializing(
26953                        data: &[u8],
26954                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26955                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
26956                                data,
26957                            )
26958                            .map(StakeTableV3Errors::NotInitializing)
26959                    }
26960                    NotInitializing
26961                },
26962                {
26963                    fn ZeroAddress(
26964                        data: &[u8],
26965                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26966                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
26967                                data,
26968                            )
26969                            .map(StakeTableV3Errors::ZeroAddress)
26970                    }
26971                    ZeroAddress
26972                },
26973                {
26974                    fn EnforcedPause(
26975                        data: &[u8],
26976                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26977                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
26978                                data,
26979                            )
26980                            .map(StakeTableV3Errors::EnforcedPause)
26981                    }
26982                    EnforcedPause
26983                },
26984                {
26985                    fn InvalidCommission(
26986                        data: &[u8],
26987                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26988                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
26989                                data,
26990                            )
26991                            .map(StakeTableV3Errors::InvalidCommission)
26992                    }
26993                    InvalidCommission
26994                },
26995                {
26996                    fn UUPSUnauthorizedCallContext(
26997                        data: &[u8],
26998                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26999                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
27000                                data,
27001                            )
27002                            .map(StakeTableV3Errors::UUPSUnauthorizedCallContext)
27003                    }
27004                    UUPSUnauthorizedCallContext
27005                },
27006                {
27007                    fn AccessControlUnauthorizedAccount(
27008                        data: &[u8],
27009                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
27010                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
27011                                data,
27012                            )
27013                            .map(StakeTableV3Errors::AccessControlUnauthorizedAccount)
27014                    }
27015                    AccessControlUnauthorizedAccount
27016                },
27017                {
27018                    fn ValidatorAlreadyExited(
27019                        data: &[u8],
27020                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
27021                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
27022                                data,
27023                            )
27024                            .map(StakeTableV3Errors::ValidatorAlreadyExited)
27025                    }
27026                    ValidatorAlreadyExited
27027                },
27028                {
27029                    fn ValidatorNotExited(
27030                        data: &[u8],
27031                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
27032                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
27033                                data,
27034                            )
27035                            .map(StakeTableV3Errors::ValidatorNotExited)
27036                    }
27037                    ValidatorNotExited
27038                },
27039                {
27040                    fn InvalidInitialization(
27041                        data: &[u8],
27042                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
27043                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
27044                                data,
27045                            )
27046                            .map(StakeTableV3Errors::InvalidInitialization)
27047                    }
27048                    InvalidInitialization
27049                },
27050            ];
27051            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
27052                return Err(
27053                    alloy_sol_types::Error::unknown_selector(
27054                        <Self as alloy_sol_types::SolInterface>::NAME,
27055                        selector,
27056                    ),
27057                );
27058            };
27059            DECODE_VALIDATE_SHIMS[idx](data)
27060        }
27061        #[inline]
27062        fn abi_encoded_size(&self) -> usize {
27063            match self {
27064                Self::AccessControlBadConfirmation(inner) => {
27065                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
27066                        inner,
27067                    )
27068                }
27069                Self::AccessControlUnauthorizedAccount(inner) => {
27070                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
27071                        inner,
27072                    )
27073                }
27074                Self::AddressEmptyCode(inner) => {
27075                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
27076                        inner,
27077                    )
27078                }
27079                Self::BLSSigIsInfinity(inner) => {
27080                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
27081                        inner,
27082                    )
27083                }
27084                Self::BLSSigVerificationFailed(inner) => {
27085                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
27086                        inner,
27087                    )
27088                }
27089                Self::BLSVKIsInfinity(inner) => {
27090                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
27091                        inner,
27092                    )
27093                }
27094                Self::BN254PairingProdFailed(inner) => {
27095                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
27096                        inner,
27097                    )
27098                }
27099                Self::BlsKeyAlreadyUsed(inner) => {
27100                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
27101                        inner,
27102                    )
27103                }
27104                Self::CommissionAlreadyInitialized(inner) => {
27105                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encoded_size(
27106                        inner,
27107                    )
27108                }
27109                Self::CommissionIncreaseExceedsMax(inner) => {
27110                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encoded_size(
27111                        inner,
27112                    )
27113                }
27114                Self::CommissionUnchanged(inner) => {
27115                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encoded_size(
27116                        inner,
27117                    )
27118                }
27119                Self::CommissionUpdateTooSoon(inner) => {
27120                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encoded_size(
27121                        inner,
27122                    )
27123                }
27124                Self::DefaultAdminCannotBeRenounced(inner) => {
27125                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
27126                        inner,
27127                    )
27128                }
27129                Self::DefaultAdminCannotBeRevoked(inner) => {
27130                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encoded_size(
27131                        inner,
27132                    )
27133                }
27134                Self::DelegateAmountTooSmall(inner) => {
27135                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
27136                        inner,
27137                    )
27138                }
27139                Self::DeprecatedFunction(inner) => {
27140                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
27141                        inner,
27142                    )
27143                }
27144                Self::ERC1967InvalidImplementation(inner) => {
27145                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
27146                        inner,
27147                    )
27148                }
27149                Self::ERC1967NonPayable(inner) => {
27150                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
27151                        inner,
27152                    )
27153                }
27154                Self::EnforcedPause(inner) => {
27155                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
27156                }
27157                Self::ExitEscrowPeriodInvalid(inner) => {
27158                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
27159                        inner,
27160                    )
27161                }
27162                Self::ExpectedPause(inner) => {
27163                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
27164                }
27165                Self::FailedInnerCall(inner) => {
27166                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
27167                        inner,
27168                    )
27169                }
27170                Self::InitialActiveStakeExceedsBalance(inner) => {
27171                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encoded_size(
27172                        inner,
27173                    )
27174                }
27175                Self::InsufficientAllowance(inner) => {
27176                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
27177                        inner,
27178                    )
27179                }
27180                Self::InsufficientBalance(inner) => {
27181                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
27182                        inner,
27183                    )
27184                }
27185                Self::InvalidCommission(inner) => {
27186                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
27187                        inner,
27188                    )
27189                }
27190                Self::InvalidG1(inner) => {
27191                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
27192                }
27193                Self::InvalidInitialization(inner) => {
27194                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
27195                        inner,
27196                    )
27197                }
27198                Self::InvalidMetadataUriLength(inner) => {
27199                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encoded_size(
27200                        inner,
27201                    )
27202                }
27203                Self::InvalidP2pAddr(inner) => {
27204                    <InvalidP2pAddr as alloy_sol_types::SolError>::abi_encoded_size(
27205                        inner,
27206                    )
27207                }
27208                Self::InvalidRateLimitParameters(inner) => {
27209                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encoded_size(
27210                        inner,
27211                    )
27212                }
27213                Self::InvalidSchnorrSig(inner) => {
27214                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
27215                        inner,
27216                    )
27217                }
27218                Self::InvalidSchnorrVK(inner) => {
27219                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
27220                        inner,
27221                    )
27222                }
27223                Self::InvalidX25519Key(inner) => {
27224                    <InvalidX25519Key as alloy_sol_types::SolError>::abi_encoded_size(
27225                        inner,
27226                    )
27227                }
27228                Self::MinDelegateAmountTooSmall(inner) => {
27229                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
27230                        inner,
27231                    )
27232                }
27233                Self::NoUndelegationFound(inner) => {
27234                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encoded_size(
27235                        inner,
27236                    )
27237                }
27238                Self::NotInitializing(inner) => {
27239                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
27240                        inner,
27241                    )
27242                }
27243                Self::NothingToWithdraw(inner) => {
27244                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
27245                        inner,
27246                    )
27247                }
27248                Self::OwnableInvalidOwner(inner) => {
27249                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
27250                        inner,
27251                    )
27252                }
27253                Self::OwnableUnauthorizedAccount(inner) => {
27254                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
27255                        inner,
27256                    )
27257                }
27258                Self::OwnershipCannotBeRenounced(inner) => {
27259                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
27260                        inner,
27261                    )
27262                }
27263                Self::PowPrecompileFailed(inner) => {
27264                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
27265                        inner,
27266                    )
27267                }
27268                Self::PrematureWithdrawal(inner) => {
27269                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
27270                        inner,
27271                    )
27272                }
27273                Self::SchnorrKeyAlreadyUsed(inner) => {
27274                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
27275                        inner,
27276                    )
27277                }
27278                Self::UUPSUnauthorizedCallContext(inner) => {
27279                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
27280                        inner,
27281                    )
27282                }
27283                Self::UUPSUnsupportedProxiableUUID(inner) => {
27284                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
27285                        inner,
27286                    )
27287                }
27288                Self::UndelegationAlreadyExists(inner) => {
27289                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
27290                        inner,
27291                    )
27292                }
27293                Self::ValidatorAlreadyExited(inner) => {
27294                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
27295                        inner,
27296                    )
27297                }
27298                Self::ValidatorAlreadyRegistered(inner) => {
27299                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
27300                        inner,
27301                    )
27302                }
27303                Self::ValidatorInactive(inner) => {
27304                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
27305                        inner,
27306                    )
27307                }
27308                Self::ValidatorNotExited(inner) => {
27309                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
27310                        inner,
27311                    )
27312                }
27313                Self::X25519KeyAlreadyUsed(inner) => {
27314                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
27315                        inner,
27316                    )
27317                }
27318                Self::ZeroAddress(inner) => {
27319                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
27320                }
27321                Self::ZeroAmount(inner) => {
27322                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
27323                }
27324            }
27325        }
27326        #[inline]
27327        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
27328            match self {
27329                Self::AccessControlBadConfirmation(inner) => {
27330                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
27331                        inner,
27332                        out,
27333                    )
27334                }
27335                Self::AccessControlUnauthorizedAccount(inner) => {
27336                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
27337                        inner,
27338                        out,
27339                    )
27340                }
27341                Self::AddressEmptyCode(inner) => {
27342                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
27343                        inner,
27344                        out,
27345                    )
27346                }
27347                Self::BLSSigIsInfinity(inner) => {
27348                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
27349                        inner,
27350                        out,
27351                    )
27352                }
27353                Self::BLSSigVerificationFailed(inner) => {
27354                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
27355                        inner,
27356                        out,
27357                    )
27358                }
27359                Self::BLSVKIsInfinity(inner) => {
27360                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
27361                        inner,
27362                        out,
27363                    )
27364                }
27365                Self::BN254PairingProdFailed(inner) => {
27366                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
27367                        inner,
27368                        out,
27369                    )
27370                }
27371                Self::BlsKeyAlreadyUsed(inner) => {
27372                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
27373                        inner,
27374                        out,
27375                    )
27376                }
27377                Self::CommissionAlreadyInitialized(inner) => {
27378                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encode_raw(
27379                        inner,
27380                        out,
27381                    )
27382                }
27383                Self::CommissionIncreaseExceedsMax(inner) => {
27384                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encode_raw(
27385                        inner,
27386                        out,
27387                    )
27388                }
27389                Self::CommissionUnchanged(inner) => {
27390                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encode_raw(
27391                        inner,
27392                        out,
27393                    )
27394                }
27395                Self::CommissionUpdateTooSoon(inner) => {
27396                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encode_raw(
27397                        inner,
27398                        out,
27399                    )
27400                }
27401                Self::DefaultAdminCannotBeRenounced(inner) => {
27402                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
27403                        inner,
27404                        out,
27405                    )
27406                }
27407                Self::DefaultAdminCannotBeRevoked(inner) => {
27408                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encode_raw(
27409                        inner,
27410                        out,
27411                    )
27412                }
27413                Self::DelegateAmountTooSmall(inner) => {
27414                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
27415                        inner,
27416                        out,
27417                    )
27418                }
27419                Self::DeprecatedFunction(inner) => {
27420                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
27421                        inner,
27422                        out,
27423                    )
27424                }
27425                Self::ERC1967InvalidImplementation(inner) => {
27426                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
27427                        inner,
27428                        out,
27429                    )
27430                }
27431                Self::ERC1967NonPayable(inner) => {
27432                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
27433                        inner,
27434                        out,
27435                    )
27436                }
27437                Self::EnforcedPause(inner) => {
27438                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
27439                        inner,
27440                        out,
27441                    )
27442                }
27443                Self::ExitEscrowPeriodInvalid(inner) => {
27444                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
27445                        inner,
27446                        out,
27447                    )
27448                }
27449                Self::ExpectedPause(inner) => {
27450                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
27451                        inner,
27452                        out,
27453                    )
27454                }
27455                Self::FailedInnerCall(inner) => {
27456                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
27457                        inner,
27458                        out,
27459                    )
27460                }
27461                Self::InitialActiveStakeExceedsBalance(inner) => {
27462                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encode_raw(
27463                        inner,
27464                        out,
27465                    )
27466                }
27467                Self::InsufficientAllowance(inner) => {
27468                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
27469                        inner,
27470                        out,
27471                    )
27472                }
27473                Self::InsufficientBalance(inner) => {
27474                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
27475                        inner,
27476                        out,
27477                    )
27478                }
27479                Self::InvalidCommission(inner) => {
27480                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
27481                        inner,
27482                        out,
27483                    )
27484                }
27485                Self::InvalidG1(inner) => {
27486                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
27487                }
27488                Self::InvalidInitialization(inner) => {
27489                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
27490                        inner,
27491                        out,
27492                    )
27493                }
27494                Self::InvalidMetadataUriLength(inner) => {
27495                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encode_raw(
27496                        inner,
27497                        out,
27498                    )
27499                }
27500                Self::InvalidP2pAddr(inner) => {
27501                    <InvalidP2pAddr as alloy_sol_types::SolError>::abi_encode_raw(
27502                        inner,
27503                        out,
27504                    )
27505                }
27506                Self::InvalidRateLimitParameters(inner) => {
27507                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encode_raw(
27508                        inner,
27509                        out,
27510                    )
27511                }
27512                Self::InvalidSchnorrSig(inner) => {
27513                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
27514                        inner,
27515                        out,
27516                    )
27517                }
27518                Self::InvalidSchnorrVK(inner) => {
27519                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
27520                        inner,
27521                        out,
27522                    )
27523                }
27524                Self::InvalidX25519Key(inner) => {
27525                    <InvalidX25519Key as alloy_sol_types::SolError>::abi_encode_raw(
27526                        inner,
27527                        out,
27528                    )
27529                }
27530                Self::MinDelegateAmountTooSmall(inner) => {
27531                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
27532                        inner,
27533                        out,
27534                    )
27535                }
27536                Self::NoUndelegationFound(inner) => {
27537                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encode_raw(
27538                        inner,
27539                        out,
27540                    )
27541                }
27542                Self::NotInitializing(inner) => {
27543                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
27544                        inner,
27545                        out,
27546                    )
27547                }
27548                Self::NothingToWithdraw(inner) => {
27549                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
27550                        inner,
27551                        out,
27552                    )
27553                }
27554                Self::OwnableInvalidOwner(inner) => {
27555                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
27556                        inner,
27557                        out,
27558                    )
27559                }
27560                Self::OwnableUnauthorizedAccount(inner) => {
27561                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
27562                        inner,
27563                        out,
27564                    )
27565                }
27566                Self::OwnershipCannotBeRenounced(inner) => {
27567                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
27568                        inner,
27569                        out,
27570                    )
27571                }
27572                Self::PowPrecompileFailed(inner) => {
27573                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
27574                        inner,
27575                        out,
27576                    )
27577                }
27578                Self::PrematureWithdrawal(inner) => {
27579                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
27580                        inner,
27581                        out,
27582                    )
27583                }
27584                Self::SchnorrKeyAlreadyUsed(inner) => {
27585                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
27586                        inner,
27587                        out,
27588                    )
27589                }
27590                Self::UUPSUnauthorizedCallContext(inner) => {
27591                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
27592                        inner,
27593                        out,
27594                    )
27595                }
27596                Self::UUPSUnsupportedProxiableUUID(inner) => {
27597                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
27598                        inner,
27599                        out,
27600                    )
27601                }
27602                Self::UndelegationAlreadyExists(inner) => {
27603                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
27604                        inner,
27605                        out,
27606                    )
27607                }
27608                Self::ValidatorAlreadyExited(inner) => {
27609                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
27610                        inner,
27611                        out,
27612                    )
27613                }
27614                Self::ValidatorAlreadyRegistered(inner) => {
27615                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
27616                        inner,
27617                        out,
27618                    )
27619                }
27620                Self::ValidatorInactive(inner) => {
27621                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
27622                        inner,
27623                        out,
27624                    )
27625                }
27626                Self::ValidatorNotExited(inner) => {
27627                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
27628                        inner,
27629                        out,
27630                    )
27631                }
27632                Self::X25519KeyAlreadyUsed(inner) => {
27633                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
27634                        inner,
27635                        out,
27636                    )
27637                }
27638                Self::ZeroAddress(inner) => {
27639                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
27640                        inner,
27641                        out,
27642                    )
27643                }
27644                Self::ZeroAmount(inner) => {
27645                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
27646                }
27647            }
27648        }
27649    }
27650    ///Container for all the [`StakeTableV3`](self) events.
27651    #[derive(Clone)]
27652    #[derive(serde::Serialize, serde::Deserialize)]
27653    #[derive()]
27654    pub enum StakeTableV3Events {
27655        #[allow(missing_docs)]
27656        CommissionUpdated(CommissionUpdated),
27657        #[allow(missing_docs)]
27658        ConsensusKeysUpdated(ConsensusKeysUpdated),
27659        #[allow(missing_docs)]
27660        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
27661        #[allow(missing_docs)]
27662        Delegated(Delegated),
27663        #[allow(missing_docs)]
27664        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
27665        #[allow(missing_docs)]
27666        Initialized(Initialized),
27667        #[allow(missing_docs)]
27668        MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated),
27669        #[allow(missing_docs)]
27670        MetadataUriUpdated(MetadataUriUpdated),
27671        #[allow(missing_docs)]
27672        MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated),
27673        #[allow(missing_docs)]
27674        MinDelegateAmountUpdated(MinDelegateAmountUpdated),
27675        #[allow(missing_docs)]
27676        OwnershipTransferred(OwnershipTransferred),
27677        #[allow(missing_docs)]
27678        P2pAddrUpdated(P2pAddrUpdated),
27679        #[allow(missing_docs)]
27680        Paused(Paused),
27681        #[allow(missing_docs)]
27682        RoleAdminChanged(RoleAdminChanged),
27683        #[allow(missing_docs)]
27684        RoleGranted(RoleGranted),
27685        #[allow(missing_docs)]
27686        RoleRevoked(RoleRevoked),
27687        #[allow(missing_docs)]
27688        Undelegated(Undelegated),
27689        #[allow(missing_docs)]
27690        UndelegatedV2(UndelegatedV2),
27691        #[allow(missing_docs)]
27692        Unpaused(Unpaused),
27693        #[allow(missing_docs)]
27694        Upgraded(Upgraded),
27695        #[allow(missing_docs)]
27696        ValidatorExit(ValidatorExit),
27697        #[allow(missing_docs)]
27698        ValidatorExitClaimed(ValidatorExitClaimed),
27699        #[allow(missing_docs)]
27700        ValidatorExitV2(ValidatorExitV2),
27701        #[allow(missing_docs)]
27702        ValidatorRegistered(ValidatorRegistered),
27703        #[allow(missing_docs)]
27704        ValidatorRegisteredV2(ValidatorRegisteredV2),
27705        #[allow(missing_docs)]
27706        ValidatorRegisteredV3(ValidatorRegisteredV3),
27707        #[allow(missing_docs)]
27708        Withdrawal(Withdrawal),
27709        #[allow(missing_docs)]
27710        WithdrawalClaimed(WithdrawalClaimed),
27711        #[allow(missing_docs)]
27712        X25519KeyUpdated(X25519KeyUpdated),
27713    }
27714    impl StakeTableV3Events {
27715        /// All the selectors of this enum.
27716        ///
27717        /// Note that the selectors might not be in the same order as the variants.
27718        /// No guarantees are made about the order of the selectors.
27719        ///
27720        /// Prefer using `SolInterface` methods instead.
27721        pub const SELECTORS: &'static [[u8; 32usize]] = &[
27722            [
27723                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
27724                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
27725                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
27726            ],
27727            [
27728                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
27729                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
27730                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
27731            ],
27732            [
27733                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
27734                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
27735                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
27736            ],
27737            [
27738                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
27739                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
27740                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
27741            ],
27742            [
27743                59u8, 76u8, 200u8, 138u8, 254u8, 62u8, 92u8, 230u8, 190u8, 234u8, 121u8,
27744                9u8, 222u8, 32u8, 11u8, 242u8, 24u8, 158u8, 238u8, 204u8, 179u8, 150u8,
27745                87u8, 31u8, 31u8, 148u8, 213u8, 24u8, 53u8, 242u8, 71u8, 223u8,
27746            ],
27747            [
27748                67u8, 6u8, 97u8, 130u8, 175u8, 137u8, 242u8, 48u8, 69u8, 34u8, 7u8, 26u8,
27749                87u8, 192u8, 96u8, 99u8, 225u8, 27u8, 38u8, 89u8, 29u8, 109u8, 156u8,
27750                51u8, 241u8, 135u8, 76u8, 45u8, 10u8, 20u8, 187u8, 34u8,
27751            ],
27752            [
27753                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
27754                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
27755                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
27756            ],
27757            [
27758                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
27759                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
27760                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
27761            ],
27762            [
27763                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
27764                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
27765                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
27766            ],
27767            [
27768                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
27769                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
27770                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
27771            ],
27772            [
27773                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
27774                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
27775                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
27776            ],
27777            [
27778                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
27779                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
27780                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
27781            ],
27782            [
27783                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
27784                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
27785                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
27786            ],
27787            [
27788                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
27789                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
27790                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
27791            ],
27792            [
27793                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
27794                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
27795                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
27796            ],
27797            [
27798                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
27799                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
27800                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
27801            ],
27802            [
27803                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
27804                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
27805                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
27806            ],
27807            [
27808                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
27809                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
27810                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
27811            ],
27812            [
27813                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
27814                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
27815                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
27816            ],
27817            [
27818                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
27819                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
27820                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
27821            ],
27822            [
27823                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
27824                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
27825                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
27826            ],
27827            [
27828                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
27829                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
27830                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
27831            ],
27832            [
27833                191u8, 20u8, 205u8, 127u8, 234u8, 112u8, 67u8, 93u8, 66u8, 79u8, 146u8,
27834                247u8, 163u8, 208u8, 17u8, 9u8, 165u8, 131u8, 68u8, 157u8, 113u8, 136u8,
27835                152u8, 166u8, 169u8, 105u8, 135u8, 156u8, 84u8, 118u8, 236u8, 20u8,
27836            ],
27837            [
27838                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
27839                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
27840                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
27841            ],
27842            [
27843                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
27844                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
27845                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
27846            ],
27847            [
27848                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
27849                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
27850                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
27851            ],
27852            [
27853                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
27854                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
27855                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
27856            ],
27857            [
27858                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
27859                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
27860                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
27861            ],
27862            [
27863                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
27864                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
27865                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
27866            ],
27867        ];
27868        /// The names of the variants in the same order as `SELECTORS`.
27869        pub const VARIANT_NAMES: &'static [&'static str] = &[
27870            ::core::stringify!(MinDelegateAmountUpdated),
27871            ::core::stringify!(MetadataUriUpdated),
27872            ::core::stringify!(ValidatorRegisteredV2),
27873            ::core::stringify!(RoleGranted),
27874            ::core::stringify!(X25519KeyUpdated),
27875            ::core::stringify!(P2pAddrUpdated),
27876            ::core::stringify!(Undelegated),
27877            ::core::stringify!(ValidatorExitV2),
27878            ::core::stringify!(MinCommissionUpdateIntervalUpdated),
27879            ::core::stringify!(Unpaused),
27880            ::core::stringify!(Paused),
27881            ::core::stringify!(UndelegatedV2),
27882            ::core::stringify!(ExitEscrowPeriodUpdated),
27883            ::core::stringify!(Withdrawal),
27884            ::core::stringify!(ConsensusKeysUpdated),
27885            ::core::stringify!(ValidatorExitClaimed),
27886            ::core::stringify!(OwnershipTransferred),
27887            ::core::stringify!(WithdrawalClaimed),
27888            ::core::stringify!(Upgraded),
27889            ::core::stringify!(RoleAdminChanged),
27890            ::core::stringify!(CommissionUpdated),
27891            ::core::stringify!(MaxCommissionIncreaseUpdated),
27892            ::core::stringify!(ValidatorRegisteredV3),
27893            ::core::stringify!(Initialized),
27894            ::core::stringify!(ConsensusKeysUpdatedV2),
27895            ::core::stringify!(Delegated),
27896            ::core::stringify!(RoleRevoked),
27897            ::core::stringify!(ValidatorRegistered),
27898            ::core::stringify!(ValidatorExit),
27899        ];
27900        /// The signatures in the same order as `SELECTORS`.
27901        pub const SIGNATURES: &'static [&'static str] = &[
27902            <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27903            <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27904            <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE,
27905            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
27906            <X25519KeyUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27907            <P2pAddrUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27908            <Undelegated as alloy_sol_types::SolEvent>::SIGNATURE,
27909            <ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE,
27910            <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27911            <Unpaused as alloy_sol_types::SolEvent>::SIGNATURE,
27912            <Paused as alloy_sol_types::SolEvent>::SIGNATURE,
27913            <UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
27914            <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27915            <Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE,
27916            <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27917            <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
27918            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
27919            <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
27920            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
27921            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
27922            <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27923            <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27924            <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::SIGNATURE,
27925            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
27926            <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
27927            <Delegated as alloy_sol_types::SolEvent>::SIGNATURE,
27928            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
27929            <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE,
27930            <ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE,
27931        ];
27932        /// Returns the signature for the given selector, if known.
27933        #[inline]
27934        pub fn signature_by_selector(
27935            selector: [u8; 32usize],
27936        ) -> ::core::option::Option<&'static str> {
27937            match Self::SELECTORS.binary_search(&selector) {
27938                ::core::result::Result::Ok(idx) => {
27939                    ::core::option::Option::Some(Self::SIGNATURES[idx])
27940                }
27941                ::core::result::Result::Err(_) => ::core::option::Option::None,
27942            }
27943        }
27944        /// Returns the enum variant name for the given selector, if known.
27945        #[inline]
27946        pub fn name_by_selector(
27947            selector: [u8; 32usize],
27948        ) -> ::core::option::Option<&'static str> {
27949            let sig = Self::signature_by_selector(selector)?;
27950            sig.split_once('(').map(|(name, _)| name)
27951        }
27952    }
27953    #[automatically_derived]
27954    impl alloy_sol_types::SolEventInterface for StakeTableV3Events {
27955        const NAME: &'static str = "StakeTableV3Events";
27956        const COUNT: usize = 29usize;
27957        fn decode_raw_log(
27958            topics: &[alloy_sol_types::Word],
27959            data: &[u8],
27960        ) -> alloy_sol_types::Result<Self> {
27961            match topics.first().copied() {
27962                Some(
27963                    <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27964                ) => {
27965                    <CommissionUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27966                            topics,
27967                            data,
27968                        )
27969                        .map(Self::CommissionUpdated)
27970                }
27971                Some(
27972                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27973                ) => {
27974                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27975                            topics,
27976                            data,
27977                        )
27978                        .map(Self::ConsensusKeysUpdated)
27979                }
27980                Some(
27981                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27982                ) => {
27983                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
27984                            topics,
27985                            data,
27986                        )
27987                        .map(Self::ConsensusKeysUpdatedV2)
27988                }
27989                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27990                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
27991                            topics,
27992                            data,
27993                        )
27994                        .map(Self::Delegated)
27995                }
27996                Some(
27997                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27998                ) => {
27999                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
28000                            topics,
28001                            data,
28002                        )
28003                        .map(Self::ExitEscrowPeriodUpdated)
28004                }
28005                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28006                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
28007                            topics,
28008                            data,
28009                        )
28010                        .map(Self::Initialized)
28011                }
28012                Some(
28013                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28014                ) => {
28015                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
28016                            topics,
28017                            data,
28018                        )
28019                        .map(Self::MaxCommissionIncreaseUpdated)
28020                }
28021                Some(
28022                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28023                ) => {
28024                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
28025                            topics,
28026                            data,
28027                        )
28028                        .map(Self::MetadataUriUpdated)
28029                }
28030                Some(
28031                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28032                ) => {
28033                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
28034                            topics,
28035                            data,
28036                        )
28037                        .map(Self::MinCommissionUpdateIntervalUpdated)
28038                }
28039                Some(
28040                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28041                ) => {
28042                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
28043                            topics,
28044                            data,
28045                        )
28046                        .map(Self::MinDelegateAmountUpdated)
28047                }
28048                Some(
28049                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28050                ) => {
28051                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
28052                            topics,
28053                            data,
28054                        )
28055                        .map(Self::OwnershipTransferred)
28056                }
28057                Some(<P2pAddrUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28058                    <P2pAddrUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
28059                            topics,
28060                            data,
28061                        )
28062                        .map(Self::P2pAddrUpdated)
28063                }
28064                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28065                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
28066                        .map(Self::Paused)
28067                }
28068                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28069                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
28070                            topics,
28071                            data,
28072                        )
28073                        .map(Self::RoleAdminChanged)
28074                }
28075                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28076                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
28077                            topics,
28078                            data,
28079                        )
28080                        .map(Self::RoleGranted)
28081                }
28082                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28083                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
28084                            topics,
28085                            data,
28086                        )
28087                        .map(Self::RoleRevoked)
28088                }
28089                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28090                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
28091                            topics,
28092                            data,
28093                        )
28094                        .map(Self::Undelegated)
28095                }
28096                Some(<UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28097                    <UndelegatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
28098                            topics,
28099                            data,
28100                        )
28101                        .map(Self::UndelegatedV2)
28102                }
28103                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28104                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
28105                        .map(Self::Unpaused)
28106                }
28107                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28108                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
28109                        .map(Self::Upgraded)
28110                }
28111                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28112                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
28113                            topics,
28114                            data,
28115                        )
28116                        .map(Self::ValidatorExit)
28117                }
28118                Some(
28119                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28120                ) => {
28121                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
28122                            topics,
28123                            data,
28124                        )
28125                        .map(Self::ValidatorExitClaimed)
28126                }
28127                Some(<ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28128                    <ValidatorExitV2 as alloy_sol_types::SolEvent>::decode_raw_log(
28129                            topics,
28130                            data,
28131                        )
28132                        .map(Self::ValidatorExitV2)
28133                }
28134                Some(
28135                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28136                ) => {
28137                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
28138                            topics,
28139                            data,
28140                        )
28141                        .map(Self::ValidatorRegistered)
28142                }
28143                Some(
28144                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28145                ) => {
28146                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log(
28147                            topics,
28148                            data,
28149                        )
28150                        .map(Self::ValidatorRegisteredV2)
28151                }
28152                Some(
28153                    <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28154                ) => {
28155                    <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::decode_raw_log(
28156                            topics,
28157                            data,
28158                        )
28159                        .map(Self::ValidatorRegisteredV3)
28160                }
28161                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28162                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
28163                            topics,
28164                            data,
28165                        )
28166                        .map(Self::Withdrawal)
28167                }
28168                Some(
28169                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28170                ) => {
28171                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
28172                            topics,
28173                            data,
28174                        )
28175                        .map(Self::WithdrawalClaimed)
28176                }
28177                Some(<X25519KeyUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28178                    <X25519KeyUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
28179                            topics,
28180                            data,
28181                        )
28182                        .map(Self::X25519KeyUpdated)
28183                }
28184                _ => {
28185                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
28186                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
28187                        log: alloy_sol_types::private::Box::new(
28188                            alloy_sol_types::private::LogData::new_unchecked(
28189                                topics.to_vec(),
28190                                data.to_vec().into(),
28191                            ),
28192                        ),
28193                    })
28194                }
28195            }
28196        }
28197    }
28198    #[automatically_derived]
28199    impl alloy_sol_types::private::IntoLogData for StakeTableV3Events {
28200        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
28201            match self {
28202                Self::CommissionUpdated(inner) => {
28203                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28204                }
28205                Self::ConsensusKeysUpdated(inner) => {
28206                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28207                }
28208                Self::ConsensusKeysUpdatedV2(inner) => {
28209                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28210                }
28211                Self::Delegated(inner) => {
28212                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28213                }
28214                Self::ExitEscrowPeriodUpdated(inner) => {
28215                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28216                }
28217                Self::Initialized(inner) => {
28218                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28219                }
28220                Self::MaxCommissionIncreaseUpdated(inner) => {
28221                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28222                }
28223                Self::MetadataUriUpdated(inner) => {
28224                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28225                }
28226                Self::MinCommissionUpdateIntervalUpdated(inner) => {
28227                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28228                }
28229                Self::MinDelegateAmountUpdated(inner) => {
28230                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28231                }
28232                Self::OwnershipTransferred(inner) => {
28233                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28234                }
28235                Self::P2pAddrUpdated(inner) => {
28236                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28237                }
28238                Self::Paused(inner) => {
28239                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28240                }
28241                Self::RoleAdminChanged(inner) => {
28242                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28243                }
28244                Self::RoleGranted(inner) => {
28245                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28246                }
28247                Self::RoleRevoked(inner) => {
28248                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28249                }
28250                Self::Undelegated(inner) => {
28251                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28252                }
28253                Self::UndelegatedV2(inner) => {
28254                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28255                }
28256                Self::Unpaused(inner) => {
28257                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28258                }
28259                Self::Upgraded(inner) => {
28260                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28261                }
28262                Self::ValidatorExit(inner) => {
28263                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28264                }
28265                Self::ValidatorExitClaimed(inner) => {
28266                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28267                }
28268                Self::ValidatorExitV2(inner) => {
28269                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28270                }
28271                Self::ValidatorRegistered(inner) => {
28272                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28273                }
28274                Self::ValidatorRegisteredV2(inner) => {
28275                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28276                }
28277                Self::ValidatorRegisteredV3(inner) => {
28278                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28279                }
28280                Self::Withdrawal(inner) => {
28281                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28282                }
28283                Self::WithdrawalClaimed(inner) => {
28284                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28285                }
28286                Self::X25519KeyUpdated(inner) => {
28287                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28288                }
28289            }
28290        }
28291        fn into_log_data(self) -> alloy_sol_types::private::LogData {
28292            match self {
28293                Self::CommissionUpdated(inner) => {
28294                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28295                }
28296                Self::ConsensusKeysUpdated(inner) => {
28297                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28298                }
28299                Self::ConsensusKeysUpdatedV2(inner) => {
28300                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28301                }
28302                Self::Delegated(inner) => {
28303                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28304                }
28305                Self::ExitEscrowPeriodUpdated(inner) => {
28306                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28307                }
28308                Self::Initialized(inner) => {
28309                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28310                }
28311                Self::MaxCommissionIncreaseUpdated(inner) => {
28312                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28313                }
28314                Self::MetadataUriUpdated(inner) => {
28315                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28316                }
28317                Self::MinCommissionUpdateIntervalUpdated(inner) => {
28318                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28319                }
28320                Self::MinDelegateAmountUpdated(inner) => {
28321                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28322                }
28323                Self::OwnershipTransferred(inner) => {
28324                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28325                }
28326                Self::P2pAddrUpdated(inner) => {
28327                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28328                }
28329                Self::Paused(inner) => {
28330                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28331                }
28332                Self::RoleAdminChanged(inner) => {
28333                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28334                }
28335                Self::RoleGranted(inner) => {
28336                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28337                }
28338                Self::RoleRevoked(inner) => {
28339                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28340                }
28341                Self::Undelegated(inner) => {
28342                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28343                }
28344                Self::UndelegatedV2(inner) => {
28345                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28346                }
28347                Self::Unpaused(inner) => {
28348                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28349                }
28350                Self::Upgraded(inner) => {
28351                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28352                }
28353                Self::ValidatorExit(inner) => {
28354                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28355                }
28356                Self::ValidatorExitClaimed(inner) => {
28357                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28358                }
28359                Self::ValidatorExitV2(inner) => {
28360                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28361                }
28362                Self::ValidatorRegistered(inner) => {
28363                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28364                }
28365                Self::ValidatorRegisteredV2(inner) => {
28366                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28367                }
28368                Self::ValidatorRegisteredV3(inner) => {
28369                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28370                }
28371                Self::Withdrawal(inner) => {
28372                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28373                }
28374                Self::WithdrawalClaimed(inner) => {
28375                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28376                }
28377                Self::X25519KeyUpdated(inner) => {
28378                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28379                }
28380            }
28381        }
28382    }
28383    use alloy::contract as alloy_contract;
28384    /**Creates a new wrapper around an on-chain [`StakeTableV3`](self) contract instance.
28385
28386See the [wrapper's documentation](`StakeTableV3Instance`) for more details.*/
28387    #[inline]
28388    pub const fn new<
28389        P: alloy_contract::private::Provider<N>,
28390        N: alloy_contract::private::Network,
28391    >(
28392        address: alloy_sol_types::private::Address,
28393        __provider: P,
28394    ) -> StakeTableV3Instance<P, N> {
28395        StakeTableV3Instance::<P, N>::new(address, __provider)
28396    }
28397    /**Deploys this contract using the given `provider` and constructor arguments, if any.
28398
28399Returns a new instance of the contract, if the deployment was successful.
28400
28401For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
28402    #[inline]
28403    pub fn deploy<
28404        P: alloy_contract::private::Provider<N>,
28405        N: alloy_contract::private::Network,
28406    >(
28407        __provider: P,
28408    ) -> impl ::core::future::Future<
28409        Output = alloy_contract::Result<StakeTableV3Instance<P, N>>,
28410    > {
28411        StakeTableV3Instance::<P, N>::deploy(__provider)
28412    }
28413    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
28414and constructor arguments, if any.
28415
28416This is a simple wrapper around creating a `RawCallBuilder` with the data set to
28417the bytecode concatenated with the constructor's ABI-encoded arguments.*/
28418    #[inline]
28419    pub fn deploy_builder<
28420        P: alloy_contract::private::Provider<N>,
28421        N: alloy_contract::private::Network,
28422    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
28423        StakeTableV3Instance::<P, N>::deploy_builder(__provider)
28424    }
28425    /**A [`StakeTableV3`](self) instance.
28426
28427Contains type-safe methods for interacting with an on-chain instance of the
28428[`StakeTableV3`](self) contract located at a given `address`, using a given
28429provider `P`.
28430
28431If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
28432documentation on how to provide it), the `deploy` and `deploy_builder` methods can
28433be used to deploy a new instance of the contract.
28434
28435See the [module-level documentation](self) for all the available methods.*/
28436    #[derive(Clone)]
28437    pub struct StakeTableV3Instance<P, N = alloy_contract::private::Ethereum> {
28438        address: alloy_sol_types::private::Address,
28439        provider: P,
28440        _network: ::core::marker::PhantomData<N>,
28441    }
28442    #[automatically_derived]
28443    impl<P, N> ::core::fmt::Debug for StakeTableV3Instance<P, N> {
28444        #[inline]
28445        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
28446            f.debug_tuple("StakeTableV3Instance").field(&self.address).finish()
28447        }
28448    }
28449    /// Instantiation and getters/setters.
28450    impl<
28451        P: alloy_contract::private::Provider<N>,
28452        N: alloy_contract::private::Network,
28453    > StakeTableV3Instance<P, N> {
28454        /**Creates a new wrapper around an on-chain [`StakeTableV3`](self) contract instance.
28455
28456See the [wrapper's documentation](`StakeTableV3Instance`) for more details.*/
28457        #[inline]
28458        pub const fn new(
28459            address: alloy_sol_types::private::Address,
28460            __provider: P,
28461        ) -> Self {
28462            Self {
28463                address,
28464                provider: __provider,
28465                _network: ::core::marker::PhantomData,
28466            }
28467        }
28468        /**Deploys this contract using the given `provider` and constructor arguments, if any.
28469
28470Returns a new instance of the contract, if the deployment was successful.
28471
28472For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
28473        #[inline]
28474        pub async fn deploy(
28475            __provider: P,
28476        ) -> alloy_contract::Result<StakeTableV3Instance<P, N>> {
28477            let call_builder = Self::deploy_builder(__provider);
28478            let contract_address = call_builder.deploy().await?;
28479            Ok(Self::new(contract_address, call_builder.provider))
28480        }
28481        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
28482and constructor arguments, if any.
28483
28484This is a simple wrapper around creating a `RawCallBuilder` with the data set to
28485the bytecode concatenated with the constructor's ABI-encoded arguments.*/
28486        #[inline]
28487        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
28488            alloy_contract::RawCallBuilder::new_raw_deploy(
28489                __provider,
28490                ::core::clone::Clone::clone(&BYTECODE),
28491            )
28492        }
28493        /// Returns a reference to the address.
28494        #[inline]
28495        pub const fn address(&self) -> &alloy_sol_types::private::Address {
28496            &self.address
28497        }
28498        /// Sets the address.
28499        #[inline]
28500        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
28501            self.address = address;
28502        }
28503        /// Sets the address and returns `self`.
28504        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
28505            self.set_address(address);
28506            self
28507        }
28508        /// Returns a reference to the provider.
28509        #[inline]
28510        pub const fn provider(&self) -> &P {
28511            &self.provider
28512        }
28513    }
28514    impl<P: ::core::clone::Clone, N> StakeTableV3Instance<&P, N> {
28515        /// Clones the provider and returns a new instance with the cloned provider.
28516        #[inline]
28517        pub fn with_cloned_provider(self) -> StakeTableV3Instance<P, N> {
28518            StakeTableV3Instance {
28519                address: self.address,
28520                provider: ::core::clone::Clone::clone(&self.provider),
28521                _network: ::core::marker::PhantomData,
28522            }
28523        }
28524    }
28525    /// Function calls.
28526    impl<
28527        P: alloy_contract::private::Provider<N>,
28528        N: alloy_contract::private::Network,
28529    > StakeTableV3Instance<P, N> {
28530        /// Creates a new call builder using this contract instance's provider and address.
28531        ///
28532        /// Note that the call can be any function call, not just those defined in this
28533        /// contract. Prefer using the other methods for building type-safe contract calls.
28534        pub fn call_builder<C: alloy_sol_types::SolCall>(
28535            &self,
28536            call: &C,
28537        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
28538            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
28539        }
28540        ///Creates a new call builder for the [`CURVE25519_P`] function.
28541        pub fn CURVE25519_P(
28542            &self,
28543        ) -> alloy_contract::SolCallBuilder<&P, CURVE25519_PCall, N> {
28544            self.call_builder(&CURVE25519_PCall)
28545        }
28546        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
28547        pub fn DEFAULT_ADMIN_ROLE(
28548            &self,
28549        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
28550            self.call_builder(&DEFAULT_ADMIN_ROLECall)
28551        }
28552        ///Creates a new call builder for the [`MAX_COMMISSION_BPS`] function.
28553        pub fn MAX_COMMISSION_BPS(
28554            &self,
28555        ) -> alloy_contract::SolCallBuilder<&P, MAX_COMMISSION_BPSCall, N> {
28556            self.call_builder(&MAX_COMMISSION_BPSCall)
28557        }
28558        ///Creates a new call builder for the [`MAX_EXIT_ESCROW_PERIOD`] function.
28559        pub fn MAX_EXIT_ESCROW_PERIOD(
28560            &self,
28561        ) -> alloy_contract::SolCallBuilder<&P, MAX_EXIT_ESCROW_PERIODCall, N> {
28562            self.call_builder(&MAX_EXIT_ESCROW_PERIODCall)
28563        }
28564        ///Creates a new call builder for the [`MAX_METADATA_URI_LENGTH`] function.
28565        pub fn MAX_METADATA_URI_LENGTH(
28566            &self,
28567        ) -> alloy_contract::SolCallBuilder<&P, MAX_METADATA_URI_LENGTHCall, N> {
28568            self.call_builder(&MAX_METADATA_URI_LENGTHCall)
28569        }
28570        ///Creates a new call builder for the [`MAX_P2P_ADDR_LENGTH`] function.
28571        pub fn MAX_P2P_ADDR_LENGTH(
28572            &self,
28573        ) -> alloy_contract::SolCallBuilder<&P, MAX_P2P_ADDR_LENGTHCall, N> {
28574            self.call_builder(&MAX_P2P_ADDR_LENGTHCall)
28575        }
28576        ///Creates a new call builder for the [`MIN_EXIT_ESCROW_PERIOD`] function.
28577        pub fn MIN_EXIT_ESCROW_PERIOD(
28578            &self,
28579        ) -> alloy_contract::SolCallBuilder<&P, MIN_EXIT_ESCROW_PERIODCall, N> {
28580            self.call_builder(&MIN_EXIT_ESCROW_PERIODCall)
28581        }
28582        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
28583        pub fn PAUSER_ROLE(
28584            &self,
28585        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
28586            self.call_builder(&PAUSER_ROLECall)
28587        }
28588        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
28589        pub fn UPGRADE_INTERFACE_VERSION(
28590            &self,
28591        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
28592            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
28593        }
28594        ///Creates a new call builder for the [`_hashBlsKey`] function.
28595        pub fn _hashBlsKey(
28596            &self,
28597            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28598        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
28599            self.call_builder(&_hashBlsKeyCall { blsVK })
28600        }
28601        ///Creates a new call builder for the [`activeStake`] function.
28602        pub fn activeStake(
28603            &self,
28604        ) -> alloy_contract::SolCallBuilder<&P, activeStakeCall, N> {
28605            self.call_builder(&activeStakeCall)
28606        }
28607        ///Creates a new call builder for the [`blsKeys`] function.
28608        pub fn blsKeys(
28609            &self,
28610            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
28611        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
28612            self.call_builder(&blsKeysCall { blsKeyHash })
28613        }
28614        ///Creates a new call builder for the [`claimValidatorExit`] function.
28615        pub fn claimValidatorExit(
28616            &self,
28617            validator: alloy::sol_types::private::Address,
28618        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
28619            self.call_builder(
28620                &claimValidatorExitCall {
28621                    validator,
28622                },
28623            )
28624        }
28625        ///Creates a new call builder for the [`claimWithdrawal`] function.
28626        pub fn claimWithdrawal(
28627            &self,
28628            validator: alloy::sol_types::private::Address,
28629        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
28630            self.call_builder(&claimWithdrawalCall { validator })
28631        }
28632        ///Creates a new call builder for the [`commissionTracking`] function.
28633        pub fn commissionTracking(
28634            &self,
28635            validator: alloy::sol_types::private::Address,
28636        ) -> alloy_contract::SolCallBuilder<&P, commissionTrackingCall, N> {
28637            self.call_builder(
28638                &commissionTrackingCall {
28639                    validator,
28640                },
28641            )
28642        }
28643        ///Creates a new call builder for the [`delegate`] function.
28644        pub fn delegate(
28645            &self,
28646            validator: alloy::sol_types::private::Address,
28647            amount: alloy::sol_types::private::primitives::aliases::U256,
28648        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
28649            self.call_builder(&delegateCall { validator, amount })
28650        }
28651        ///Creates a new call builder for the [`delegations`] function.
28652        pub fn delegations(
28653            &self,
28654            validator: alloy::sol_types::private::Address,
28655            delegator: alloy::sol_types::private::Address,
28656        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
28657            self.call_builder(
28658                &delegationsCall {
28659                    validator,
28660                    delegator,
28661                },
28662            )
28663        }
28664        ///Creates a new call builder for the [`deregisterValidator`] function.
28665        pub fn deregisterValidator(
28666            &self,
28667        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
28668            self.call_builder(&deregisterValidatorCall)
28669        }
28670        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
28671        pub fn exitEscrowPeriod(
28672            &self,
28673        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
28674            self.call_builder(&exitEscrowPeriodCall)
28675        }
28676        ///Creates a new call builder for the [`getRoleAdmin`] function.
28677        pub fn getRoleAdmin(
28678            &self,
28679            role: alloy::sol_types::private::FixedBytes<32>,
28680        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
28681            self.call_builder(&getRoleAdminCall { role })
28682        }
28683        ///Creates a new call builder for the [`getUndelegation`] function.
28684        pub fn getUndelegation(
28685            &self,
28686            validator: alloy::sol_types::private::Address,
28687            delegator: alloy::sol_types::private::Address,
28688        ) -> alloy_contract::SolCallBuilder<&P, getUndelegationCall, N> {
28689            self.call_builder(
28690                &getUndelegationCall {
28691                    validator,
28692                    delegator,
28693                },
28694            )
28695        }
28696        ///Creates a new call builder for the [`getVersion`] function.
28697        pub fn getVersion(
28698            &self,
28699        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
28700            self.call_builder(&getVersionCall)
28701        }
28702        ///Creates a new call builder for the [`grantRole`] function.
28703        pub fn grantRole(
28704            &self,
28705            role: alloy::sol_types::private::FixedBytes<32>,
28706            account: alloy::sol_types::private::Address,
28707        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
28708            self.call_builder(&grantRoleCall { role, account })
28709        }
28710        ///Creates a new call builder for the [`hasRole`] function.
28711        pub fn hasRole(
28712            &self,
28713            role: alloy::sol_types::private::FixedBytes<32>,
28714            account: alloy::sol_types::private::Address,
28715        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
28716            self.call_builder(&hasRoleCall { role, account })
28717        }
28718        ///Creates a new call builder for the [`initialize`] function.
28719        pub fn initialize(
28720            &self,
28721            _tokenAddress: alloy::sol_types::private::Address,
28722            _lightClientAddress: alloy::sol_types::private::Address,
28723            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
28724            _timelock: alloy::sol_types::private::Address,
28725        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
28726            self.call_builder(
28727                &initializeCall {
28728                    _tokenAddress,
28729                    _lightClientAddress,
28730                    _exitEscrowPeriod,
28731                    _timelock,
28732                },
28733            )
28734        }
28735        ///Creates a new call builder for the [`initializeV2`] function.
28736        pub fn initializeV2(
28737            &self,
28738            pauser: alloy::sol_types::private::Address,
28739            admin: alloy::sol_types::private::Address,
28740            initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
28741            initialCommissions: alloy::sol_types::private::Vec<
28742                <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
28743            >,
28744        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
28745            self.call_builder(
28746                &initializeV2Call {
28747                    pauser,
28748                    admin,
28749                    initialActiveStake,
28750                    initialCommissions,
28751                },
28752            )
28753        }
28754        ///Creates a new call builder for the [`initializeV3`] function.
28755        pub fn initializeV3(
28756            &self,
28757        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
28758            self.call_builder(&initializeV3Call)
28759        }
28760        ///Creates a new call builder for the [`initializedAtBlock`] function.
28761        pub fn initializedAtBlock(
28762            &self,
28763        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
28764            self.call_builder(&initializedAtBlockCall)
28765        }
28766        ///Creates a new call builder for the [`lightClient`] function.
28767        pub fn lightClient(
28768            &self,
28769        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
28770            self.call_builder(&lightClientCall)
28771        }
28772        ///Creates a new call builder for the [`maxCommissionIncrease`] function.
28773        pub fn maxCommissionIncrease(
28774            &self,
28775        ) -> alloy_contract::SolCallBuilder<&P, maxCommissionIncreaseCall, N> {
28776            self.call_builder(&maxCommissionIncreaseCall)
28777        }
28778        ///Creates a new call builder for the [`minCommissionIncreaseInterval`] function.
28779        pub fn minCommissionIncreaseInterval(
28780            &self,
28781        ) -> alloy_contract::SolCallBuilder<&P, minCommissionIncreaseIntervalCall, N> {
28782            self.call_builder(&minCommissionIncreaseIntervalCall)
28783        }
28784        ///Creates a new call builder for the [`minDelegateAmount`] function.
28785        pub fn minDelegateAmount(
28786            &self,
28787        ) -> alloy_contract::SolCallBuilder<&P, minDelegateAmountCall, N> {
28788            self.call_builder(&minDelegateAmountCall)
28789        }
28790        ///Creates a new call builder for the [`owner`] function.
28791        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
28792            self.call_builder(&ownerCall)
28793        }
28794        ///Creates a new call builder for the [`pause`] function.
28795        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
28796            self.call_builder(&pauseCall)
28797        }
28798        ///Creates a new call builder for the [`paused`] function.
28799        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
28800            self.call_builder(&pausedCall)
28801        }
28802        ///Creates a new call builder for the [`proxiableUUID`] function.
28803        pub fn proxiableUUID(
28804            &self,
28805        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
28806            self.call_builder(&proxiableUUIDCall)
28807        }
28808        ///Creates a new call builder for the [`registerValidator`] function.
28809        pub fn registerValidator(
28810            &self,
28811            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28812            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28813            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28814            _3: u16,
28815        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
28816            self.call_builder(
28817                &registerValidatorCall {
28818                    _0,
28819                    _1,
28820                    _2,
28821                    _3,
28822                },
28823            )
28824        }
28825        ///Creates a new call builder for the [`registerValidatorV2`] function.
28826        pub fn registerValidatorV2(
28827            &self,
28828            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28829            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28830            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28831            _3: alloy::sol_types::private::Bytes,
28832            _4: u16,
28833            _5: alloy::sol_types::private::String,
28834        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV2Call, N> {
28835            self.call_builder(
28836                &registerValidatorV2Call {
28837                    _0,
28838                    _1,
28839                    _2,
28840                    _3,
28841                    _4,
28842                    _5,
28843                },
28844            )
28845        }
28846        ///Creates a new call builder for the [`registerValidatorV3`] function.
28847        pub fn registerValidatorV3(
28848            &self,
28849            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28850            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28851            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28852            schnorrSig: alloy::sol_types::private::Bytes,
28853            commission: u16,
28854            metadataUri: alloy::sol_types::private::String,
28855            x25519Key: alloy::sol_types::private::FixedBytes<32>,
28856            p2pAddr: alloy::sol_types::private::String,
28857        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV3Call, N> {
28858            self.call_builder(
28859                &registerValidatorV3Call {
28860                    blsVK,
28861                    schnorrVK,
28862                    blsSig,
28863                    schnorrSig,
28864                    commission,
28865                    metadataUri,
28866                    x25519Key,
28867                    p2pAddr,
28868                },
28869            )
28870        }
28871        ///Creates a new call builder for the [`renounceOwnership`] function.
28872        pub fn renounceOwnership(
28873            &self,
28874        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
28875            self.call_builder(&renounceOwnershipCall)
28876        }
28877        ///Creates a new call builder for the [`renounceRole`] function.
28878        pub fn renounceRole(
28879            &self,
28880            role: alloy::sol_types::private::FixedBytes<32>,
28881            callerConfirmation: alloy::sol_types::private::Address,
28882        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
28883            self.call_builder(
28884                &renounceRoleCall {
28885                    role,
28886                    callerConfirmation,
28887                },
28888            )
28889        }
28890        ///Creates a new call builder for the [`revokeRole`] function.
28891        pub fn revokeRole(
28892            &self,
28893            role: alloy::sol_types::private::FixedBytes<32>,
28894            account: alloy::sol_types::private::Address,
28895        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
28896            self.call_builder(&revokeRoleCall { role, account })
28897        }
28898        ///Creates a new call builder for the [`schnorrKeys`] function.
28899        pub fn schnorrKeys(
28900            &self,
28901            schnorrKey: alloy::sol_types::private::FixedBytes<32>,
28902        ) -> alloy_contract::SolCallBuilder<&P, schnorrKeysCall, N> {
28903            self.call_builder(&schnorrKeysCall { schnorrKey })
28904        }
28905        ///Creates a new call builder for the [`setMaxCommissionIncrease`] function.
28906        pub fn setMaxCommissionIncrease(
28907            &self,
28908            newMaxIncrease: u16,
28909        ) -> alloy_contract::SolCallBuilder<&P, setMaxCommissionIncreaseCall, N> {
28910            self.call_builder(
28911                &setMaxCommissionIncreaseCall {
28912                    newMaxIncrease,
28913                },
28914            )
28915        }
28916        ///Creates a new call builder for the [`setMinCommissionUpdateInterval`] function.
28917        pub fn setMinCommissionUpdateInterval(
28918            &self,
28919            newInterval: alloy::sol_types::private::primitives::aliases::U256,
28920        ) -> alloy_contract::SolCallBuilder<&P, setMinCommissionUpdateIntervalCall, N> {
28921            self.call_builder(
28922                &setMinCommissionUpdateIntervalCall {
28923                    newInterval,
28924                },
28925            )
28926        }
28927        ///Creates a new call builder for the [`setMinDelegateAmount`] function.
28928        pub fn setMinDelegateAmount(
28929            &self,
28930            newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
28931        ) -> alloy_contract::SolCallBuilder<&P, setMinDelegateAmountCall, N> {
28932            self.call_builder(
28933                &setMinDelegateAmountCall {
28934                    newMinDelegateAmount,
28935                },
28936            )
28937        }
28938        ///Creates a new call builder for the [`supportsInterface`] function.
28939        pub fn supportsInterface(
28940            &self,
28941            interfaceId: alloy::sol_types::private::FixedBytes<4>,
28942        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
28943            self.call_builder(
28944                &supportsInterfaceCall {
28945                    interfaceId,
28946                },
28947            )
28948        }
28949        ///Creates a new call builder for the [`token`] function.
28950        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
28951            self.call_builder(&tokenCall)
28952        }
28953        ///Creates a new call builder for the [`transferOwnership`] function.
28954        pub fn transferOwnership(
28955            &self,
28956            newOwner: alloy::sol_types::private::Address,
28957        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
28958            self.call_builder(&transferOwnershipCall { newOwner })
28959        }
28960        ///Creates a new call builder for the [`undelegate`] function.
28961        pub fn undelegate(
28962            &self,
28963            validator: alloy::sol_types::private::Address,
28964            amount: alloy::sol_types::private::primitives::aliases::U256,
28965        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
28966            self.call_builder(
28967                &undelegateCall {
28968                    validator,
28969                    amount,
28970                },
28971            )
28972        }
28973        ///Creates a new call builder for the [`undelegations`] function.
28974        pub fn undelegations(
28975            &self,
28976            validator: alloy::sol_types::private::Address,
28977            delegator: alloy::sol_types::private::Address,
28978        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
28979            self.call_builder(
28980                &undelegationsCall {
28981                    validator,
28982                    delegator,
28983                },
28984            )
28985        }
28986        ///Creates a new call builder for the [`unpause`] function.
28987        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
28988            self.call_builder(&unpauseCall)
28989        }
28990        ///Creates a new call builder for the [`updateCommission`] function.
28991        pub fn updateCommission(
28992            &self,
28993            newCommission: u16,
28994        ) -> alloy_contract::SolCallBuilder<&P, updateCommissionCall, N> {
28995            self.call_builder(
28996                &updateCommissionCall {
28997                    newCommission,
28998                },
28999            )
29000        }
29001        ///Creates a new call builder for the [`updateConsensusKeys`] function.
29002        pub fn updateConsensusKeys(
29003            &self,
29004            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29005            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29006            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29007        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
29008            self.call_builder(
29009                &updateConsensusKeysCall {
29010                    _0,
29011                    _1,
29012                    _2,
29013                },
29014            )
29015        }
29016        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
29017        pub fn updateConsensusKeysV2(
29018            &self,
29019            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29020            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29021            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29022            schnorrSig: alloy::sol_types::private::Bytes,
29023        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysV2Call, N> {
29024            self.call_builder(
29025                &updateConsensusKeysV2Call {
29026                    blsVK,
29027                    schnorrVK,
29028                    blsSig,
29029                    schnorrSig,
29030                },
29031            )
29032        }
29033        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
29034        pub fn updateExitEscrowPeriod(
29035            &self,
29036            newExitEscrowPeriod: u64,
29037        ) -> alloy_contract::SolCallBuilder<&P, updateExitEscrowPeriodCall, N> {
29038            self.call_builder(
29039                &updateExitEscrowPeriodCall {
29040                    newExitEscrowPeriod,
29041                },
29042            )
29043        }
29044        ///Creates a new call builder for the [`updateMetadataUri`] function.
29045        pub fn updateMetadataUri(
29046            &self,
29047            metadataUri: alloy::sol_types::private::String,
29048        ) -> alloy_contract::SolCallBuilder<&P, updateMetadataUriCall, N> {
29049            self.call_builder(
29050                &updateMetadataUriCall {
29051                    metadataUri,
29052                },
29053            )
29054        }
29055        ///Creates a new call builder for the [`updateNetworkConfig`] function.
29056        pub fn updateNetworkConfig(
29057            &self,
29058            x25519Key: alloy::sol_types::private::FixedBytes<32>,
29059            p2pAddr: alloy::sol_types::private::String,
29060        ) -> alloy_contract::SolCallBuilder<&P, updateNetworkConfigCall, N> {
29061            self.call_builder(
29062                &updateNetworkConfigCall {
29063                    x25519Key,
29064                    p2pAddr,
29065                },
29066            )
29067        }
29068        ///Creates a new call builder for the [`updateP2pAddr`] function.
29069        pub fn updateP2pAddr(
29070            &self,
29071            p2pAddr: alloy::sol_types::private::String,
29072        ) -> alloy_contract::SolCallBuilder<&P, updateP2pAddrCall, N> {
29073            self.call_builder(&updateP2pAddrCall { p2pAddr })
29074        }
29075        ///Creates a new call builder for the [`updateX25519Key`] function.
29076        pub fn updateX25519Key(
29077            &self,
29078            x25519Key: alloy::sol_types::private::FixedBytes<32>,
29079        ) -> alloy_contract::SolCallBuilder<&P, updateX25519KeyCall, N> {
29080            self.call_builder(&updateX25519KeyCall { x25519Key })
29081        }
29082        ///Creates a new call builder for the [`upgradeToAndCall`] function.
29083        pub fn upgradeToAndCall(
29084            &self,
29085            newImplementation: alloy::sol_types::private::Address,
29086            data: alloy::sol_types::private::Bytes,
29087        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
29088            self.call_builder(
29089                &upgradeToAndCallCall {
29090                    newImplementation,
29091                    data,
29092                },
29093            )
29094        }
29095        ///Creates a new call builder for the [`validateMetadataUri`] function.
29096        pub fn validateMetadataUri(
29097            &self,
29098            metadataUri: alloy::sol_types::private::String,
29099        ) -> alloy_contract::SolCallBuilder<&P, validateMetadataUriCall, N> {
29100            self.call_builder(
29101                &validateMetadataUriCall {
29102                    metadataUri,
29103                },
29104            )
29105        }
29106        ///Creates a new call builder for the [`validateP2pAddr`] function.
29107        pub fn validateP2pAddr(
29108            &self,
29109            p2pAddr: alloy::sol_types::private::String,
29110        ) -> alloy_contract::SolCallBuilder<&P, validateP2pAddrCall, N> {
29111            self.call_builder(&validateP2pAddrCall { p2pAddr })
29112        }
29113        ///Creates a new call builder for the [`validatorExits`] function.
29114        pub fn validatorExits(
29115            &self,
29116            validator: alloy::sol_types::private::Address,
29117        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
29118            self.call_builder(&validatorExitsCall { validator })
29119        }
29120        ///Creates a new call builder for the [`validators`] function.
29121        pub fn validators(
29122            &self,
29123            account: alloy::sol_types::private::Address,
29124        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
29125            self.call_builder(&validatorsCall { account })
29126        }
29127        ///Creates a new call builder for the [`x25519Keys`] function.
29128        pub fn x25519Keys(
29129            &self,
29130            x25519Key: alloy::sol_types::private::FixedBytes<32>,
29131        ) -> alloy_contract::SolCallBuilder<&P, x25519KeysCall, N> {
29132            self.call_builder(&x25519KeysCall { x25519Key })
29133        }
29134    }
29135    /// Event filters.
29136    impl<
29137        P: alloy_contract::private::Provider<N>,
29138        N: alloy_contract::private::Network,
29139    > StakeTableV3Instance<P, N> {
29140        /// Creates a new event filter using this contract instance's provider and address.
29141        ///
29142        /// Note that the type can be any event, not just those defined in this contract.
29143        /// Prefer using the other methods for building type-safe event filters.
29144        pub fn event_filter<E: alloy_sol_types::SolEvent>(
29145            &self,
29146        ) -> alloy_contract::Event<&P, E, N> {
29147            alloy_contract::Event::new_sol(&self.provider, &self.address)
29148        }
29149        ///Creates a new event filter for the [`CommissionUpdated`] event.
29150        pub fn CommissionUpdated_filter(
29151            &self,
29152        ) -> alloy_contract::Event<&P, CommissionUpdated, N> {
29153            self.event_filter::<CommissionUpdated>()
29154        }
29155        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
29156        pub fn ConsensusKeysUpdated_filter(
29157            &self,
29158        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
29159            self.event_filter::<ConsensusKeysUpdated>()
29160        }
29161        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
29162        pub fn ConsensusKeysUpdatedV2_filter(
29163            &self,
29164        ) -> alloy_contract::Event<&P, ConsensusKeysUpdatedV2, N> {
29165            self.event_filter::<ConsensusKeysUpdatedV2>()
29166        }
29167        ///Creates a new event filter for the [`Delegated`] event.
29168        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
29169            self.event_filter::<Delegated>()
29170        }
29171        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
29172        pub fn ExitEscrowPeriodUpdated_filter(
29173            &self,
29174        ) -> alloy_contract::Event<&P, ExitEscrowPeriodUpdated, N> {
29175            self.event_filter::<ExitEscrowPeriodUpdated>()
29176        }
29177        ///Creates a new event filter for the [`Initialized`] event.
29178        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
29179            self.event_filter::<Initialized>()
29180        }
29181        ///Creates a new event filter for the [`MaxCommissionIncreaseUpdated`] event.
29182        pub fn MaxCommissionIncreaseUpdated_filter(
29183            &self,
29184        ) -> alloy_contract::Event<&P, MaxCommissionIncreaseUpdated, N> {
29185            self.event_filter::<MaxCommissionIncreaseUpdated>()
29186        }
29187        ///Creates a new event filter for the [`MetadataUriUpdated`] event.
29188        pub fn MetadataUriUpdated_filter(
29189            &self,
29190        ) -> alloy_contract::Event<&P, MetadataUriUpdated, N> {
29191            self.event_filter::<MetadataUriUpdated>()
29192        }
29193        ///Creates a new event filter for the [`MinCommissionUpdateIntervalUpdated`] event.
29194        pub fn MinCommissionUpdateIntervalUpdated_filter(
29195            &self,
29196        ) -> alloy_contract::Event<&P, MinCommissionUpdateIntervalUpdated, N> {
29197            self.event_filter::<MinCommissionUpdateIntervalUpdated>()
29198        }
29199        ///Creates a new event filter for the [`MinDelegateAmountUpdated`] event.
29200        pub fn MinDelegateAmountUpdated_filter(
29201            &self,
29202        ) -> alloy_contract::Event<&P, MinDelegateAmountUpdated, N> {
29203            self.event_filter::<MinDelegateAmountUpdated>()
29204        }
29205        ///Creates a new event filter for the [`OwnershipTransferred`] event.
29206        pub fn OwnershipTransferred_filter(
29207            &self,
29208        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
29209            self.event_filter::<OwnershipTransferred>()
29210        }
29211        ///Creates a new event filter for the [`P2pAddrUpdated`] event.
29212        pub fn P2pAddrUpdated_filter(
29213            &self,
29214        ) -> alloy_contract::Event<&P, P2pAddrUpdated, N> {
29215            self.event_filter::<P2pAddrUpdated>()
29216        }
29217        ///Creates a new event filter for the [`Paused`] event.
29218        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
29219            self.event_filter::<Paused>()
29220        }
29221        ///Creates a new event filter for the [`RoleAdminChanged`] event.
29222        pub fn RoleAdminChanged_filter(
29223            &self,
29224        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
29225            self.event_filter::<RoleAdminChanged>()
29226        }
29227        ///Creates a new event filter for the [`RoleGranted`] event.
29228        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
29229            self.event_filter::<RoleGranted>()
29230        }
29231        ///Creates a new event filter for the [`RoleRevoked`] event.
29232        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
29233            self.event_filter::<RoleRevoked>()
29234        }
29235        ///Creates a new event filter for the [`Undelegated`] event.
29236        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
29237            self.event_filter::<Undelegated>()
29238        }
29239        ///Creates a new event filter for the [`UndelegatedV2`] event.
29240        pub fn UndelegatedV2_filter(
29241            &self,
29242        ) -> alloy_contract::Event<&P, UndelegatedV2, N> {
29243            self.event_filter::<UndelegatedV2>()
29244        }
29245        ///Creates a new event filter for the [`Unpaused`] event.
29246        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
29247            self.event_filter::<Unpaused>()
29248        }
29249        ///Creates a new event filter for the [`Upgraded`] event.
29250        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
29251            self.event_filter::<Upgraded>()
29252        }
29253        ///Creates a new event filter for the [`ValidatorExit`] event.
29254        pub fn ValidatorExit_filter(
29255            &self,
29256        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
29257            self.event_filter::<ValidatorExit>()
29258        }
29259        ///Creates a new event filter for the [`ValidatorExitClaimed`] event.
29260        pub fn ValidatorExitClaimed_filter(
29261            &self,
29262        ) -> alloy_contract::Event<&P, ValidatorExitClaimed, N> {
29263            self.event_filter::<ValidatorExitClaimed>()
29264        }
29265        ///Creates a new event filter for the [`ValidatorExitV2`] event.
29266        pub fn ValidatorExitV2_filter(
29267            &self,
29268        ) -> alloy_contract::Event<&P, ValidatorExitV2, N> {
29269            self.event_filter::<ValidatorExitV2>()
29270        }
29271        ///Creates a new event filter for the [`ValidatorRegistered`] event.
29272        pub fn ValidatorRegistered_filter(
29273            &self,
29274        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
29275            self.event_filter::<ValidatorRegistered>()
29276        }
29277        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
29278        pub fn ValidatorRegisteredV2_filter(
29279            &self,
29280        ) -> alloy_contract::Event<&P, ValidatorRegisteredV2, N> {
29281            self.event_filter::<ValidatorRegisteredV2>()
29282        }
29283        ///Creates a new event filter for the [`ValidatorRegisteredV3`] event.
29284        pub fn ValidatorRegisteredV3_filter(
29285            &self,
29286        ) -> alloy_contract::Event<&P, ValidatorRegisteredV3, N> {
29287            self.event_filter::<ValidatorRegisteredV3>()
29288        }
29289        ///Creates a new event filter for the [`Withdrawal`] event.
29290        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
29291            self.event_filter::<Withdrawal>()
29292        }
29293        ///Creates a new event filter for the [`WithdrawalClaimed`] event.
29294        pub fn WithdrawalClaimed_filter(
29295            &self,
29296        ) -> alloy_contract::Event<&P, WithdrawalClaimed, N> {
29297            self.event_filter::<WithdrawalClaimed>()
29298        }
29299        ///Creates a new event filter for the [`X25519KeyUpdated`] event.
29300        pub fn X25519KeyUpdated_filter(
29301            &self,
29302        ) -> alloy_contract::Event<&P, X25519KeyUpdated, N> {
29303            self.event_filter::<X25519KeyUpdated>()
29304        }
29305    }
29306}