hotshot_contract_adapter/bindings/
stake_table_v2.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/**
1355
1356Generated by the following Solidity interface...
1357```solidity
1358library BN254 {
1359    type BaseField is uint256;
1360    struct G1Point {
1361        BaseField x;
1362        BaseField y;
1363    }
1364    struct G2Point {
1365        BaseField x0;
1366        BaseField x1;
1367        BaseField y0;
1368        BaseField y1;
1369    }
1370}
1371
1372library EdOnBN254 {
1373    struct EdOnBN254Point {
1374        uint256 x;
1375        uint256 y;
1376    }
1377}
1378
1379library StakeTable {
1380    type ValidatorStatus is uint8;
1381}
1382
1383interface StakeTableV2 {
1384    struct InitialCommission {
1385        address validator;
1386        uint16 commission;
1387    }
1388
1389    error AccessControlBadConfirmation();
1390    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1391    error AddressEmptyCode(address target);
1392    error BLSSigVerificationFailed();
1393    error BN254PairingProdFailed();
1394    error BlsKeyAlreadyUsed();
1395    error CommissionAlreadyInitialized(address validator);
1396    error CommissionIncreaseExceedsMax();
1397    error CommissionUnchanged();
1398    error CommissionUpdateTooSoon();
1399    error DefaultAdminCannotBeRenounced();
1400    error DefaultAdminCannotBeRevoked();
1401    error DelegateAmountTooSmall();
1402    error DeprecatedFunction();
1403    error ERC1967InvalidImplementation(address implementation);
1404    error ERC1967NonPayable();
1405    error EnforcedPause();
1406    error ExitEscrowPeriodInvalid();
1407    error ExpectedPause();
1408    error FailedInnerCall();
1409    error InitialActiveStakeExceedsBalance();
1410    error InsufficientAllowance(uint256, uint256);
1411    error InsufficientBalance(uint256);
1412    error InvalidCommission();
1413    error InvalidG1();
1414    error InvalidInitialization();
1415    error InvalidMetadataUriLength();
1416    error InvalidRateLimitParameters();
1417    error InvalidSchnorrSig();
1418    error InvalidSchnorrVK();
1419    error MinDelegateAmountTooSmall();
1420    error NoUndelegationFound();
1421    error NotInitializing();
1422    error NothingToWithdraw();
1423    error OwnableInvalidOwner(address owner);
1424    error OwnableUnauthorizedAccount(address account);
1425    error OwnershipCannotBeRenounced();
1426    error PowPrecompileFailed();
1427    error PrematureWithdrawal();
1428    error SchnorrKeyAlreadyUsed();
1429    error UUPSUnauthorizedCallContext();
1430    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1431    error UndelegationAlreadyExists();
1432    error ValidatorAlreadyExited();
1433    error ValidatorAlreadyRegistered();
1434    error ValidatorInactive();
1435    error ValidatorNotExited();
1436    error ZeroAddress();
1437    error ZeroAmount();
1438
1439    event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
1440    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1441    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1442    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1443    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1444    event Initialized(uint64 version);
1445    event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
1446    event MetadataUriUpdated(address indexed validator, string metadataUri);
1447    event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
1448    event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
1449    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1450    event Paused(address account);
1451    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1452    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1453    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1454    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1455    event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
1456    event Unpaused(address account);
1457    event Upgraded(address indexed implementation);
1458    event ValidatorExit(address indexed validator);
1459    event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
1460    event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
1461    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1462    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
1463    event Withdrawal(address indexed account, uint256 amount);
1464    event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
1465
1466    constructor();
1467
1468    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1469    function MAX_COMMISSION_BPS() external view returns (uint16);
1470    function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
1471    function MAX_METADATA_URI_LENGTH() external view returns (uint256);
1472    function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
1473    function PAUSER_ROLE() external view returns (bytes32);
1474    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1475    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1476    function activeStake() external view returns (uint256);
1477    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1478    function claimValidatorExit(address validator) external;
1479    function claimWithdrawal(address validator) external;
1480    function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
1481    function delegate(address validator, uint256 amount) external;
1482    function delegations(address validator, address delegator) external view returns (uint256 amount);
1483    function deregisterValidator() external;
1484    function exitEscrowPeriod() external view returns (uint256);
1485    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1486    function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
1487    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1488    function grantRole(bytes32 role, address account) external;
1489    function hasRole(bytes32 role, address account) external view returns (bool);
1490    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1491    function initializeV2(address pauser, address admin, uint256 initialActiveStake, InitialCommission[] memory initialCommissions) external;
1492    function initializedAtBlock() external view returns (uint256);
1493    function lightClient() external view returns (address);
1494    function maxCommissionIncrease() external view returns (uint16);
1495    function minCommissionIncreaseInterval() external view returns (uint256);
1496    function minDelegateAmount() external view returns (uint256);
1497    function owner() external view returns (address);
1498    function pause() external;
1499    function paused() external view returns (bool);
1500    function proxiableUUID() external view returns (bytes32);
1501    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1502    function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri) external;
1503    function renounceOwnership() external;
1504    function renounceRole(bytes32 role, address callerConfirmation) external;
1505    function revokeRole(bytes32 role, address account) external;
1506    function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
1507    function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
1508    function setMinCommissionUpdateInterval(uint256 newInterval) external;
1509    function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
1510    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1511    function token() external view returns (address);
1512    function transferOwnership(address newOwner) external;
1513    function undelegate(address validator, uint256 amount) external;
1514    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1515    function unpause() external;
1516    function updateCommission(uint16 newCommission) external;
1517    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1518    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1519    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1520    function updateMetadataUri(string memory metadataUri) external;
1521    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1522    function validateMetadataUri(string memory metadataUri) external pure;
1523    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1524    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1525}
1526```
1527
1528...which was generated by the following JSON ABI:
1529```json
1530[
1531  {
1532    "type": "constructor",
1533    "inputs": [],
1534    "stateMutability": "nonpayable"
1535  },
1536  {
1537    "type": "function",
1538    "name": "DEFAULT_ADMIN_ROLE",
1539    "inputs": [],
1540    "outputs": [
1541      {
1542        "name": "",
1543        "type": "bytes32",
1544        "internalType": "bytes32"
1545      }
1546    ],
1547    "stateMutability": "view"
1548  },
1549  {
1550    "type": "function",
1551    "name": "MAX_COMMISSION_BPS",
1552    "inputs": [],
1553    "outputs": [
1554      {
1555        "name": "",
1556        "type": "uint16",
1557        "internalType": "uint16"
1558      }
1559    ],
1560    "stateMutability": "view"
1561  },
1562  {
1563    "type": "function",
1564    "name": "MAX_EXIT_ESCROW_PERIOD",
1565    "inputs": [],
1566    "outputs": [
1567      {
1568        "name": "",
1569        "type": "uint64",
1570        "internalType": "uint64"
1571      }
1572    ],
1573    "stateMutability": "view"
1574  },
1575  {
1576    "type": "function",
1577    "name": "MAX_METADATA_URI_LENGTH",
1578    "inputs": [],
1579    "outputs": [
1580      {
1581        "name": "",
1582        "type": "uint256",
1583        "internalType": "uint256"
1584      }
1585    ],
1586    "stateMutability": "view"
1587  },
1588  {
1589    "type": "function",
1590    "name": "MIN_EXIT_ESCROW_PERIOD",
1591    "inputs": [],
1592    "outputs": [
1593      {
1594        "name": "",
1595        "type": "uint64",
1596        "internalType": "uint64"
1597      }
1598    ],
1599    "stateMutability": "view"
1600  },
1601  {
1602    "type": "function",
1603    "name": "PAUSER_ROLE",
1604    "inputs": [],
1605    "outputs": [
1606      {
1607        "name": "",
1608        "type": "bytes32",
1609        "internalType": "bytes32"
1610      }
1611    ],
1612    "stateMutability": "view"
1613  },
1614  {
1615    "type": "function",
1616    "name": "UPGRADE_INTERFACE_VERSION",
1617    "inputs": [],
1618    "outputs": [
1619      {
1620        "name": "",
1621        "type": "string",
1622        "internalType": "string"
1623      }
1624    ],
1625    "stateMutability": "view"
1626  },
1627  {
1628    "type": "function",
1629    "name": "_hashBlsKey",
1630    "inputs": [
1631      {
1632        "name": "blsVK",
1633        "type": "tuple",
1634        "internalType": "struct BN254.G2Point",
1635        "components": [
1636          {
1637            "name": "x0",
1638            "type": "uint256",
1639            "internalType": "BN254.BaseField"
1640          },
1641          {
1642            "name": "x1",
1643            "type": "uint256",
1644            "internalType": "BN254.BaseField"
1645          },
1646          {
1647            "name": "y0",
1648            "type": "uint256",
1649            "internalType": "BN254.BaseField"
1650          },
1651          {
1652            "name": "y1",
1653            "type": "uint256",
1654            "internalType": "BN254.BaseField"
1655          }
1656        ]
1657      }
1658    ],
1659    "outputs": [
1660      {
1661        "name": "",
1662        "type": "bytes32",
1663        "internalType": "bytes32"
1664      }
1665    ],
1666    "stateMutability": "pure"
1667  },
1668  {
1669    "type": "function",
1670    "name": "activeStake",
1671    "inputs": [],
1672    "outputs": [
1673      {
1674        "name": "",
1675        "type": "uint256",
1676        "internalType": "uint256"
1677      }
1678    ],
1679    "stateMutability": "view"
1680  },
1681  {
1682    "type": "function",
1683    "name": "blsKeys",
1684    "inputs": [
1685      {
1686        "name": "blsKeyHash",
1687        "type": "bytes32",
1688        "internalType": "bytes32"
1689      }
1690    ],
1691    "outputs": [
1692      {
1693        "name": "used",
1694        "type": "bool",
1695        "internalType": "bool"
1696      }
1697    ],
1698    "stateMutability": "view"
1699  },
1700  {
1701    "type": "function",
1702    "name": "claimValidatorExit",
1703    "inputs": [
1704      {
1705        "name": "validator",
1706        "type": "address",
1707        "internalType": "address"
1708      }
1709    ],
1710    "outputs": [],
1711    "stateMutability": "nonpayable"
1712  },
1713  {
1714    "type": "function",
1715    "name": "claimWithdrawal",
1716    "inputs": [
1717      {
1718        "name": "validator",
1719        "type": "address",
1720        "internalType": "address"
1721      }
1722    ],
1723    "outputs": [],
1724    "stateMutability": "nonpayable"
1725  },
1726  {
1727    "type": "function",
1728    "name": "commissionTracking",
1729    "inputs": [
1730      {
1731        "name": "validator",
1732        "type": "address",
1733        "internalType": "address"
1734      }
1735    ],
1736    "outputs": [
1737      {
1738        "name": "commission",
1739        "type": "uint16",
1740        "internalType": "uint16"
1741      },
1742      {
1743        "name": "lastIncreaseTime",
1744        "type": "uint256",
1745        "internalType": "uint256"
1746      }
1747    ],
1748    "stateMutability": "view"
1749  },
1750  {
1751    "type": "function",
1752    "name": "delegate",
1753    "inputs": [
1754      {
1755        "name": "validator",
1756        "type": "address",
1757        "internalType": "address"
1758      },
1759      {
1760        "name": "amount",
1761        "type": "uint256",
1762        "internalType": "uint256"
1763      }
1764    ],
1765    "outputs": [],
1766    "stateMutability": "nonpayable"
1767  },
1768  {
1769    "type": "function",
1770    "name": "delegations",
1771    "inputs": [
1772      {
1773        "name": "validator",
1774        "type": "address",
1775        "internalType": "address"
1776      },
1777      {
1778        "name": "delegator",
1779        "type": "address",
1780        "internalType": "address"
1781      }
1782    ],
1783    "outputs": [
1784      {
1785        "name": "amount",
1786        "type": "uint256",
1787        "internalType": "uint256"
1788      }
1789    ],
1790    "stateMutability": "view"
1791  },
1792  {
1793    "type": "function",
1794    "name": "deregisterValidator",
1795    "inputs": [],
1796    "outputs": [],
1797    "stateMutability": "nonpayable"
1798  },
1799  {
1800    "type": "function",
1801    "name": "exitEscrowPeriod",
1802    "inputs": [],
1803    "outputs": [
1804      {
1805        "name": "",
1806        "type": "uint256",
1807        "internalType": "uint256"
1808      }
1809    ],
1810    "stateMutability": "view"
1811  },
1812  {
1813    "type": "function",
1814    "name": "getRoleAdmin",
1815    "inputs": [
1816      {
1817        "name": "role",
1818        "type": "bytes32",
1819        "internalType": "bytes32"
1820      }
1821    ],
1822    "outputs": [
1823      {
1824        "name": "",
1825        "type": "bytes32",
1826        "internalType": "bytes32"
1827      }
1828    ],
1829    "stateMutability": "view"
1830  },
1831  {
1832    "type": "function",
1833    "name": "getUndelegation",
1834    "inputs": [
1835      {
1836        "name": "validator",
1837        "type": "address",
1838        "internalType": "address"
1839      },
1840      {
1841        "name": "delegator",
1842        "type": "address",
1843        "internalType": "address"
1844      }
1845    ],
1846    "outputs": [
1847      {
1848        "name": "id",
1849        "type": "uint64",
1850        "internalType": "uint64"
1851      },
1852      {
1853        "name": "amount",
1854        "type": "uint256",
1855        "internalType": "uint256"
1856      },
1857      {
1858        "name": "unlocksAt",
1859        "type": "uint256",
1860        "internalType": "uint256"
1861      }
1862    ],
1863    "stateMutability": "view"
1864  },
1865  {
1866    "type": "function",
1867    "name": "getVersion",
1868    "inputs": [],
1869    "outputs": [
1870      {
1871        "name": "majorVersion",
1872        "type": "uint8",
1873        "internalType": "uint8"
1874      },
1875      {
1876        "name": "minorVersion",
1877        "type": "uint8",
1878        "internalType": "uint8"
1879      },
1880      {
1881        "name": "patchVersion",
1882        "type": "uint8",
1883        "internalType": "uint8"
1884      }
1885    ],
1886    "stateMutability": "pure"
1887  },
1888  {
1889    "type": "function",
1890    "name": "grantRole",
1891    "inputs": [
1892      {
1893        "name": "role",
1894        "type": "bytes32",
1895        "internalType": "bytes32"
1896      },
1897      {
1898        "name": "account",
1899        "type": "address",
1900        "internalType": "address"
1901      }
1902    ],
1903    "outputs": [],
1904    "stateMutability": "nonpayable"
1905  },
1906  {
1907    "type": "function",
1908    "name": "hasRole",
1909    "inputs": [
1910      {
1911        "name": "role",
1912        "type": "bytes32",
1913        "internalType": "bytes32"
1914      },
1915      {
1916        "name": "account",
1917        "type": "address",
1918        "internalType": "address"
1919      }
1920    ],
1921    "outputs": [
1922      {
1923        "name": "",
1924        "type": "bool",
1925        "internalType": "bool"
1926      }
1927    ],
1928    "stateMutability": "view"
1929  },
1930  {
1931    "type": "function",
1932    "name": "initialize",
1933    "inputs": [
1934      {
1935        "name": "_tokenAddress",
1936        "type": "address",
1937        "internalType": "address"
1938      },
1939      {
1940        "name": "_lightClientAddress",
1941        "type": "address",
1942        "internalType": "address"
1943      },
1944      {
1945        "name": "_exitEscrowPeriod",
1946        "type": "uint256",
1947        "internalType": "uint256"
1948      },
1949      {
1950        "name": "_timelock",
1951        "type": "address",
1952        "internalType": "address"
1953      }
1954    ],
1955    "outputs": [],
1956    "stateMutability": "nonpayable"
1957  },
1958  {
1959    "type": "function",
1960    "name": "initializeV2",
1961    "inputs": [
1962      {
1963        "name": "pauser",
1964        "type": "address",
1965        "internalType": "address"
1966      },
1967      {
1968        "name": "admin",
1969        "type": "address",
1970        "internalType": "address"
1971      },
1972      {
1973        "name": "initialActiveStake",
1974        "type": "uint256",
1975        "internalType": "uint256"
1976      },
1977      {
1978        "name": "initialCommissions",
1979        "type": "tuple[]",
1980        "internalType": "struct StakeTableV2.InitialCommission[]",
1981        "components": [
1982          {
1983            "name": "validator",
1984            "type": "address",
1985            "internalType": "address"
1986          },
1987          {
1988            "name": "commission",
1989            "type": "uint16",
1990            "internalType": "uint16"
1991          }
1992        ]
1993      }
1994    ],
1995    "outputs": [],
1996    "stateMutability": "nonpayable"
1997  },
1998  {
1999    "type": "function",
2000    "name": "initializedAtBlock",
2001    "inputs": [],
2002    "outputs": [
2003      {
2004        "name": "",
2005        "type": "uint256",
2006        "internalType": "uint256"
2007      }
2008    ],
2009    "stateMutability": "view"
2010  },
2011  {
2012    "type": "function",
2013    "name": "lightClient",
2014    "inputs": [],
2015    "outputs": [
2016      {
2017        "name": "",
2018        "type": "address",
2019        "internalType": "contract ILightClient"
2020      }
2021    ],
2022    "stateMutability": "view"
2023  },
2024  {
2025    "type": "function",
2026    "name": "maxCommissionIncrease",
2027    "inputs": [],
2028    "outputs": [
2029      {
2030        "name": "",
2031        "type": "uint16",
2032        "internalType": "uint16"
2033      }
2034    ],
2035    "stateMutability": "view"
2036  },
2037  {
2038    "type": "function",
2039    "name": "minCommissionIncreaseInterval",
2040    "inputs": [],
2041    "outputs": [
2042      {
2043        "name": "",
2044        "type": "uint256",
2045        "internalType": "uint256"
2046      }
2047    ],
2048    "stateMutability": "view"
2049  },
2050  {
2051    "type": "function",
2052    "name": "minDelegateAmount",
2053    "inputs": [],
2054    "outputs": [
2055      {
2056        "name": "",
2057        "type": "uint256",
2058        "internalType": "uint256"
2059      }
2060    ],
2061    "stateMutability": "view"
2062  },
2063  {
2064    "type": "function",
2065    "name": "owner",
2066    "inputs": [],
2067    "outputs": [
2068      {
2069        "name": "",
2070        "type": "address",
2071        "internalType": "address"
2072      }
2073    ],
2074    "stateMutability": "view"
2075  },
2076  {
2077    "type": "function",
2078    "name": "pause",
2079    "inputs": [],
2080    "outputs": [],
2081    "stateMutability": "nonpayable"
2082  },
2083  {
2084    "type": "function",
2085    "name": "paused",
2086    "inputs": [],
2087    "outputs": [
2088      {
2089        "name": "",
2090        "type": "bool",
2091        "internalType": "bool"
2092      }
2093    ],
2094    "stateMutability": "view"
2095  },
2096  {
2097    "type": "function",
2098    "name": "proxiableUUID",
2099    "inputs": [],
2100    "outputs": [
2101      {
2102        "name": "",
2103        "type": "bytes32",
2104        "internalType": "bytes32"
2105      }
2106    ],
2107    "stateMutability": "view"
2108  },
2109  {
2110    "type": "function",
2111    "name": "registerValidator",
2112    "inputs": [
2113      {
2114        "name": "",
2115        "type": "tuple",
2116        "internalType": "struct BN254.G2Point",
2117        "components": [
2118          {
2119            "name": "x0",
2120            "type": "uint256",
2121            "internalType": "BN254.BaseField"
2122          },
2123          {
2124            "name": "x1",
2125            "type": "uint256",
2126            "internalType": "BN254.BaseField"
2127          },
2128          {
2129            "name": "y0",
2130            "type": "uint256",
2131            "internalType": "BN254.BaseField"
2132          },
2133          {
2134            "name": "y1",
2135            "type": "uint256",
2136            "internalType": "BN254.BaseField"
2137          }
2138        ]
2139      },
2140      {
2141        "name": "",
2142        "type": "tuple",
2143        "internalType": "struct EdOnBN254.EdOnBN254Point",
2144        "components": [
2145          {
2146            "name": "x",
2147            "type": "uint256",
2148            "internalType": "uint256"
2149          },
2150          {
2151            "name": "y",
2152            "type": "uint256",
2153            "internalType": "uint256"
2154          }
2155        ]
2156      },
2157      {
2158        "name": "",
2159        "type": "tuple",
2160        "internalType": "struct BN254.G1Point",
2161        "components": [
2162          {
2163            "name": "x",
2164            "type": "uint256",
2165            "internalType": "BN254.BaseField"
2166          },
2167          {
2168            "name": "y",
2169            "type": "uint256",
2170            "internalType": "BN254.BaseField"
2171          }
2172        ]
2173      },
2174      {
2175        "name": "",
2176        "type": "uint16",
2177        "internalType": "uint16"
2178      }
2179    ],
2180    "outputs": [],
2181    "stateMutability": "pure"
2182  },
2183  {
2184    "type": "function",
2185    "name": "registerValidatorV2",
2186    "inputs": [
2187      {
2188        "name": "blsVK",
2189        "type": "tuple",
2190        "internalType": "struct BN254.G2Point",
2191        "components": [
2192          {
2193            "name": "x0",
2194            "type": "uint256",
2195            "internalType": "BN254.BaseField"
2196          },
2197          {
2198            "name": "x1",
2199            "type": "uint256",
2200            "internalType": "BN254.BaseField"
2201          },
2202          {
2203            "name": "y0",
2204            "type": "uint256",
2205            "internalType": "BN254.BaseField"
2206          },
2207          {
2208            "name": "y1",
2209            "type": "uint256",
2210            "internalType": "BN254.BaseField"
2211          }
2212        ]
2213      },
2214      {
2215        "name": "schnorrVK",
2216        "type": "tuple",
2217        "internalType": "struct EdOnBN254.EdOnBN254Point",
2218        "components": [
2219          {
2220            "name": "x",
2221            "type": "uint256",
2222            "internalType": "uint256"
2223          },
2224          {
2225            "name": "y",
2226            "type": "uint256",
2227            "internalType": "uint256"
2228          }
2229        ]
2230      },
2231      {
2232        "name": "blsSig",
2233        "type": "tuple",
2234        "internalType": "struct BN254.G1Point",
2235        "components": [
2236          {
2237            "name": "x",
2238            "type": "uint256",
2239            "internalType": "BN254.BaseField"
2240          },
2241          {
2242            "name": "y",
2243            "type": "uint256",
2244            "internalType": "BN254.BaseField"
2245          }
2246        ]
2247      },
2248      {
2249        "name": "schnorrSig",
2250        "type": "bytes",
2251        "internalType": "bytes"
2252      },
2253      {
2254        "name": "commission",
2255        "type": "uint16",
2256        "internalType": "uint16"
2257      },
2258      {
2259        "name": "metadataUri",
2260        "type": "string",
2261        "internalType": "string"
2262      }
2263    ],
2264    "outputs": [],
2265    "stateMutability": "nonpayable"
2266  },
2267  {
2268    "type": "function",
2269    "name": "renounceOwnership",
2270    "inputs": [],
2271    "outputs": [],
2272    "stateMutability": "nonpayable"
2273  },
2274  {
2275    "type": "function",
2276    "name": "renounceRole",
2277    "inputs": [
2278      {
2279        "name": "role",
2280        "type": "bytes32",
2281        "internalType": "bytes32"
2282      },
2283      {
2284        "name": "callerConfirmation",
2285        "type": "address",
2286        "internalType": "address"
2287      }
2288    ],
2289    "outputs": [],
2290    "stateMutability": "nonpayable"
2291  },
2292  {
2293    "type": "function",
2294    "name": "revokeRole",
2295    "inputs": [
2296      {
2297        "name": "role",
2298        "type": "bytes32",
2299        "internalType": "bytes32"
2300      },
2301      {
2302        "name": "account",
2303        "type": "address",
2304        "internalType": "address"
2305      }
2306    ],
2307    "outputs": [],
2308    "stateMutability": "nonpayable"
2309  },
2310  {
2311    "type": "function",
2312    "name": "schnorrKeys",
2313    "inputs": [
2314      {
2315        "name": "schnorrKey",
2316        "type": "bytes32",
2317        "internalType": "bytes32"
2318      }
2319    ],
2320    "outputs": [
2321      {
2322        "name": "used",
2323        "type": "bool",
2324        "internalType": "bool"
2325      }
2326    ],
2327    "stateMutability": "view"
2328  },
2329  {
2330    "type": "function",
2331    "name": "setMaxCommissionIncrease",
2332    "inputs": [
2333      {
2334        "name": "newMaxIncrease",
2335        "type": "uint16",
2336        "internalType": "uint16"
2337      }
2338    ],
2339    "outputs": [],
2340    "stateMutability": "nonpayable"
2341  },
2342  {
2343    "type": "function",
2344    "name": "setMinCommissionUpdateInterval",
2345    "inputs": [
2346      {
2347        "name": "newInterval",
2348        "type": "uint256",
2349        "internalType": "uint256"
2350      }
2351    ],
2352    "outputs": [],
2353    "stateMutability": "nonpayable"
2354  },
2355  {
2356    "type": "function",
2357    "name": "setMinDelegateAmount",
2358    "inputs": [
2359      {
2360        "name": "newMinDelegateAmount",
2361        "type": "uint256",
2362        "internalType": "uint256"
2363      }
2364    ],
2365    "outputs": [],
2366    "stateMutability": "nonpayable"
2367  },
2368  {
2369    "type": "function",
2370    "name": "supportsInterface",
2371    "inputs": [
2372      {
2373        "name": "interfaceId",
2374        "type": "bytes4",
2375        "internalType": "bytes4"
2376      }
2377    ],
2378    "outputs": [
2379      {
2380        "name": "",
2381        "type": "bool",
2382        "internalType": "bool"
2383      }
2384    ],
2385    "stateMutability": "view"
2386  },
2387  {
2388    "type": "function",
2389    "name": "token",
2390    "inputs": [],
2391    "outputs": [
2392      {
2393        "name": "",
2394        "type": "address",
2395        "internalType": "contract ERC20"
2396      }
2397    ],
2398    "stateMutability": "view"
2399  },
2400  {
2401    "type": "function",
2402    "name": "transferOwnership",
2403    "inputs": [
2404      {
2405        "name": "newOwner",
2406        "type": "address",
2407        "internalType": "address"
2408      }
2409    ],
2410    "outputs": [],
2411    "stateMutability": "nonpayable"
2412  },
2413  {
2414    "type": "function",
2415    "name": "undelegate",
2416    "inputs": [
2417      {
2418        "name": "validator",
2419        "type": "address",
2420        "internalType": "address"
2421      },
2422      {
2423        "name": "amount",
2424        "type": "uint256",
2425        "internalType": "uint256"
2426      }
2427    ],
2428    "outputs": [],
2429    "stateMutability": "nonpayable"
2430  },
2431  {
2432    "type": "function",
2433    "name": "undelegations",
2434    "inputs": [
2435      {
2436        "name": "validator",
2437        "type": "address",
2438        "internalType": "address"
2439      },
2440      {
2441        "name": "delegator",
2442        "type": "address",
2443        "internalType": "address"
2444      }
2445    ],
2446    "outputs": [
2447      {
2448        "name": "amount",
2449        "type": "uint256",
2450        "internalType": "uint256"
2451      },
2452      {
2453        "name": "unlocksAt",
2454        "type": "uint256",
2455        "internalType": "uint256"
2456      }
2457    ],
2458    "stateMutability": "view"
2459  },
2460  {
2461    "type": "function",
2462    "name": "unpause",
2463    "inputs": [],
2464    "outputs": [],
2465    "stateMutability": "nonpayable"
2466  },
2467  {
2468    "type": "function",
2469    "name": "updateCommission",
2470    "inputs": [
2471      {
2472        "name": "newCommission",
2473        "type": "uint16",
2474        "internalType": "uint16"
2475      }
2476    ],
2477    "outputs": [],
2478    "stateMutability": "nonpayable"
2479  },
2480  {
2481    "type": "function",
2482    "name": "updateConsensusKeys",
2483    "inputs": [
2484      {
2485        "name": "",
2486        "type": "tuple",
2487        "internalType": "struct BN254.G2Point",
2488        "components": [
2489          {
2490            "name": "x0",
2491            "type": "uint256",
2492            "internalType": "BN254.BaseField"
2493          },
2494          {
2495            "name": "x1",
2496            "type": "uint256",
2497            "internalType": "BN254.BaseField"
2498          },
2499          {
2500            "name": "y0",
2501            "type": "uint256",
2502            "internalType": "BN254.BaseField"
2503          },
2504          {
2505            "name": "y1",
2506            "type": "uint256",
2507            "internalType": "BN254.BaseField"
2508          }
2509        ]
2510      },
2511      {
2512        "name": "",
2513        "type": "tuple",
2514        "internalType": "struct EdOnBN254.EdOnBN254Point",
2515        "components": [
2516          {
2517            "name": "x",
2518            "type": "uint256",
2519            "internalType": "uint256"
2520          },
2521          {
2522            "name": "y",
2523            "type": "uint256",
2524            "internalType": "uint256"
2525          }
2526        ]
2527      },
2528      {
2529        "name": "",
2530        "type": "tuple",
2531        "internalType": "struct BN254.G1Point",
2532        "components": [
2533          {
2534            "name": "x",
2535            "type": "uint256",
2536            "internalType": "BN254.BaseField"
2537          },
2538          {
2539            "name": "y",
2540            "type": "uint256",
2541            "internalType": "BN254.BaseField"
2542          }
2543        ]
2544      }
2545    ],
2546    "outputs": [],
2547    "stateMutability": "pure"
2548  },
2549  {
2550    "type": "function",
2551    "name": "updateConsensusKeysV2",
2552    "inputs": [
2553      {
2554        "name": "blsVK",
2555        "type": "tuple",
2556        "internalType": "struct BN254.G2Point",
2557        "components": [
2558          {
2559            "name": "x0",
2560            "type": "uint256",
2561            "internalType": "BN254.BaseField"
2562          },
2563          {
2564            "name": "x1",
2565            "type": "uint256",
2566            "internalType": "BN254.BaseField"
2567          },
2568          {
2569            "name": "y0",
2570            "type": "uint256",
2571            "internalType": "BN254.BaseField"
2572          },
2573          {
2574            "name": "y1",
2575            "type": "uint256",
2576            "internalType": "BN254.BaseField"
2577          }
2578        ]
2579      },
2580      {
2581        "name": "schnorrVK",
2582        "type": "tuple",
2583        "internalType": "struct EdOnBN254.EdOnBN254Point",
2584        "components": [
2585          {
2586            "name": "x",
2587            "type": "uint256",
2588            "internalType": "uint256"
2589          },
2590          {
2591            "name": "y",
2592            "type": "uint256",
2593            "internalType": "uint256"
2594          }
2595        ]
2596      },
2597      {
2598        "name": "blsSig",
2599        "type": "tuple",
2600        "internalType": "struct BN254.G1Point",
2601        "components": [
2602          {
2603            "name": "x",
2604            "type": "uint256",
2605            "internalType": "BN254.BaseField"
2606          },
2607          {
2608            "name": "y",
2609            "type": "uint256",
2610            "internalType": "BN254.BaseField"
2611          }
2612        ]
2613      },
2614      {
2615        "name": "schnorrSig",
2616        "type": "bytes",
2617        "internalType": "bytes"
2618      }
2619    ],
2620    "outputs": [],
2621    "stateMutability": "nonpayable"
2622  },
2623  {
2624    "type": "function",
2625    "name": "updateExitEscrowPeriod",
2626    "inputs": [
2627      {
2628        "name": "newExitEscrowPeriod",
2629        "type": "uint64",
2630        "internalType": "uint64"
2631      }
2632    ],
2633    "outputs": [],
2634    "stateMutability": "nonpayable"
2635  },
2636  {
2637    "type": "function",
2638    "name": "updateMetadataUri",
2639    "inputs": [
2640      {
2641        "name": "metadataUri",
2642        "type": "string",
2643        "internalType": "string"
2644      }
2645    ],
2646    "outputs": [],
2647    "stateMutability": "nonpayable"
2648  },
2649  {
2650    "type": "function",
2651    "name": "upgradeToAndCall",
2652    "inputs": [
2653      {
2654        "name": "newImplementation",
2655        "type": "address",
2656        "internalType": "address"
2657      },
2658      {
2659        "name": "data",
2660        "type": "bytes",
2661        "internalType": "bytes"
2662      }
2663    ],
2664    "outputs": [],
2665    "stateMutability": "payable"
2666  },
2667  {
2668    "type": "function",
2669    "name": "validateMetadataUri",
2670    "inputs": [
2671      {
2672        "name": "metadataUri",
2673        "type": "string",
2674        "internalType": "string"
2675      }
2676    ],
2677    "outputs": [],
2678    "stateMutability": "pure"
2679  },
2680  {
2681    "type": "function",
2682    "name": "validatorExits",
2683    "inputs": [
2684      {
2685        "name": "validator",
2686        "type": "address",
2687        "internalType": "address"
2688      }
2689    ],
2690    "outputs": [
2691      {
2692        "name": "unlocksAt",
2693        "type": "uint256",
2694        "internalType": "uint256"
2695      }
2696    ],
2697    "stateMutability": "view"
2698  },
2699  {
2700    "type": "function",
2701    "name": "validators",
2702    "inputs": [
2703      {
2704        "name": "account",
2705        "type": "address",
2706        "internalType": "address"
2707      }
2708    ],
2709    "outputs": [
2710      {
2711        "name": "delegatedAmount",
2712        "type": "uint256",
2713        "internalType": "uint256"
2714      },
2715      {
2716        "name": "status",
2717        "type": "uint8",
2718        "internalType": "enum StakeTable.ValidatorStatus"
2719      }
2720    ],
2721    "stateMutability": "view"
2722  },
2723  {
2724    "type": "event",
2725    "name": "CommissionUpdated",
2726    "inputs": [
2727      {
2728        "name": "validator",
2729        "type": "address",
2730        "indexed": true,
2731        "internalType": "address"
2732      },
2733      {
2734        "name": "timestamp",
2735        "type": "uint256",
2736        "indexed": false,
2737        "internalType": "uint256"
2738      },
2739      {
2740        "name": "oldCommission",
2741        "type": "uint16",
2742        "indexed": false,
2743        "internalType": "uint16"
2744      },
2745      {
2746        "name": "newCommission",
2747        "type": "uint16",
2748        "indexed": false,
2749        "internalType": "uint16"
2750      }
2751    ],
2752    "anonymous": false
2753  },
2754  {
2755    "type": "event",
2756    "name": "ConsensusKeysUpdated",
2757    "inputs": [
2758      {
2759        "name": "account",
2760        "type": "address",
2761        "indexed": true,
2762        "internalType": "address"
2763      },
2764      {
2765        "name": "blsVK",
2766        "type": "tuple",
2767        "indexed": false,
2768        "internalType": "struct BN254.G2Point",
2769        "components": [
2770          {
2771            "name": "x0",
2772            "type": "uint256",
2773            "internalType": "BN254.BaseField"
2774          },
2775          {
2776            "name": "x1",
2777            "type": "uint256",
2778            "internalType": "BN254.BaseField"
2779          },
2780          {
2781            "name": "y0",
2782            "type": "uint256",
2783            "internalType": "BN254.BaseField"
2784          },
2785          {
2786            "name": "y1",
2787            "type": "uint256",
2788            "internalType": "BN254.BaseField"
2789          }
2790        ]
2791      },
2792      {
2793        "name": "schnorrVK",
2794        "type": "tuple",
2795        "indexed": false,
2796        "internalType": "struct EdOnBN254.EdOnBN254Point",
2797        "components": [
2798          {
2799            "name": "x",
2800            "type": "uint256",
2801            "internalType": "uint256"
2802          },
2803          {
2804            "name": "y",
2805            "type": "uint256",
2806            "internalType": "uint256"
2807          }
2808        ]
2809      }
2810    ],
2811    "anonymous": false
2812  },
2813  {
2814    "type": "event",
2815    "name": "ConsensusKeysUpdatedV2",
2816    "inputs": [
2817      {
2818        "name": "account",
2819        "type": "address",
2820        "indexed": true,
2821        "internalType": "address"
2822      },
2823      {
2824        "name": "blsVK",
2825        "type": "tuple",
2826        "indexed": false,
2827        "internalType": "struct BN254.G2Point",
2828        "components": [
2829          {
2830            "name": "x0",
2831            "type": "uint256",
2832            "internalType": "BN254.BaseField"
2833          },
2834          {
2835            "name": "x1",
2836            "type": "uint256",
2837            "internalType": "BN254.BaseField"
2838          },
2839          {
2840            "name": "y0",
2841            "type": "uint256",
2842            "internalType": "BN254.BaseField"
2843          },
2844          {
2845            "name": "y1",
2846            "type": "uint256",
2847            "internalType": "BN254.BaseField"
2848          }
2849        ]
2850      },
2851      {
2852        "name": "schnorrVK",
2853        "type": "tuple",
2854        "indexed": false,
2855        "internalType": "struct EdOnBN254.EdOnBN254Point",
2856        "components": [
2857          {
2858            "name": "x",
2859            "type": "uint256",
2860            "internalType": "uint256"
2861          },
2862          {
2863            "name": "y",
2864            "type": "uint256",
2865            "internalType": "uint256"
2866          }
2867        ]
2868      },
2869      {
2870        "name": "blsSig",
2871        "type": "tuple",
2872        "indexed": false,
2873        "internalType": "struct BN254.G1Point",
2874        "components": [
2875          {
2876            "name": "x",
2877            "type": "uint256",
2878            "internalType": "BN254.BaseField"
2879          },
2880          {
2881            "name": "y",
2882            "type": "uint256",
2883            "internalType": "BN254.BaseField"
2884          }
2885        ]
2886      },
2887      {
2888        "name": "schnorrSig",
2889        "type": "bytes",
2890        "indexed": false,
2891        "internalType": "bytes"
2892      }
2893    ],
2894    "anonymous": false
2895  },
2896  {
2897    "type": "event",
2898    "name": "Delegated",
2899    "inputs": [
2900      {
2901        "name": "delegator",
2902        "type": "address",
2903        "indexed": true,
2904        "internalType": "address"
2905      },
2906      {
2907        "name": "validator",
2908        "type": "address",
2909        "indexed": true,
2910        "internalType": "address"
2911      },
2912      {
2913        "name": "amount",
2914        "type": "uint256",
2915        "indexed": false,
2916        "internalType": "uint256"
2917      }
2918    ],
2919    "anonymous": false
2920  },
2921  {
2922    "type": "event",
2923    "name": "ExitEscrowPeriodUpdated",
2924    "inputs": [
2925      {
2926        "name": "newExitEscrowPeriod",
2927        "type": "uint64",
2928        "indexed": false,
2929        "internalType": "uint64"
2930      }
2931    ],
2932    "anonymous": false
2933  },
2934  {
2935    "type": "event",
2936    "name": "Initialized",
2937    "inputs": [
2938      {
2939        "name": "version",
2940        "type": "uint64",
2941        "indexed": false,
2942        "internalType": "uint64"
2943      }
2944    ],
2945    "anonymous": false
2946  },
2947  {
2948    "type": "event",
2949    "name": "MaxCommissionIncreaseUpdated",
2950    "inputs": [
2951      {
2952        "name": "newMaxIncrease",
2953        "type": "uint16",
2954        "indexed": false,
2955        "internalType": "uint16"
2956      }
2957    ],
2958    "anonymous": false
2959  },
2960  {
2961    "type": "event",
2962    "name": "MetadataUriUpdated",
2963    "inputs": [
2964      {
2965        "name": "validator",
2966        "type": "address",
2967        "indexed": true,
2968        "internalType": "address"
2969      },
2970      {
2971        "name": "metadataUri",
2972        "type": "string",
2973        "indexed": false,
2974        "internalType": "string"
2975      }
2976    ],
2977    "anonymous": false
2978  },
2979  {
2980    "type": "event",
2981    "name": "MinCommissionUpdateIntervalUpdated",
2982    "inputs": [
2983      {
2984        "name": "newInterval",
2985        "type": "uint256",
2986        "indexed": false,
2987        "internalType": "uint256"
2988      }
2989    ],
2990    "anonymous": false
2991  },
2992  {
2993    "type": "event",
2994    "name": "MinDelegateAmountUpdated",
2995    "inputs": [
2996      {
2997        "name": "newMinDelegateAmount",
2998        "type": "uint256",
2999        "indexed": false,
3000        "internalType": "uint256"
3001      }
3002    ],
3003    "anonymous": false
3004  },
3005  {
3006    "type": "event",
3007    "name": "OwnershipTransferred",
3008    "inputs": [
3009      {
3010        "name": "previousOwner",
3011        "type": "address",
3012        "indexed": true,
3013        "internalType": "address"
3014      },
3015      {
3016        "name": "newOwner",
3017        "type": "address",
3018        "indexed": true,
3019        "internalType": "address"
3020      }
3021    ],
3022    "anonymous": false
3023  },
3024  {
3025    "type": "event",
3026    "name": "Paused",
3027    "inputs": [
3028      {
3029        "name": "account",
3030        "type": "address",
3031        "indexed": false,
3032        "internalType": "address"
3033      }
3034    ],
3035    "anonymous": false
3036  },
3037  {
3038    "type": "event",
3039    "name": "RoleAdminChanged",
3040    "inputs": [
3041      {
3042        "name": "role",
3043        "type": "bytes32",
3044        "indexed": true,
3045        "internalType": "bytes32"
3046      },
3047      {
3048        "name": "previousAdminRole",
3049        "type": "bytes32",
3050        "indexed": true,
3051        "internalType": "bytes32"
3052      },
3053      {
3054        "name": "newAdminRole",
3055        "type": "bytes32",
3056        "indexed": true,
3057        "internalType": "bytes32"
3058      }
3059    ],
3060    "anonymous": false
3061  },
3062  {
3063    "type": "event",
3064    "name": "RoleGranted",
3065    "inputs": [
3066      {
3067        "name": "role",
3068        "type": "bytes32",
3069        "indexed": true,
3070        "internalType": "bytes32"
3071      },
3072      {
3073        "name": "account",
3074        "type": "address",
3075        "indexed": true,
3076        "internalType": "address"
3077      },
3078      {
3079        "name": "sender",
3080        "type": "address",
3081        "indexed": true,
3082        "internalType": "address"
3083      }
3084    ],
3085    "anonymous": false
3086  },
3087  {
3088    "type": "event",
3089    "name": "RoleRevoked",
3090    "inputs": [
3091      {
3092        "name": "role",
3093        "type": "bytes32",
3094        "indexed": true,
3095        "internalType": "bytes32"
3096      },
3097      {
3098        "name": "account",
3099        "type": "address",
3100        "indexed": true,
3101        "internalType": "address"
3102      },
3103      {
3104        "name": "sender",
3105        "type": "address",
3106        "indexed": true,
3107        "internalType": "address"
3108      }
3109    ],
3110    "anonymous": false
3111  },
3112  {
3113    "type": "event",
3114    "name": "Undelegated",
3115    "inputs": [
3116      {
3117        "name": "delegator",
3118        "type": "address",
3119        "indexed": true,
3120        "internalType": "address"
3121      },
3122      {
3123        "name": "validator",
3124        "type": "address",
3125        "indexed": true,
3126        "internalType": "address"
3127      },
3128      {
3129        "name": "amount",
3130        "type": "uint256",
3131        "indexed": false,
3132        "internalType": "uint256"
3133      }
3134    ],
3135    "anonymous": false
3136  },
3137  {
3138    "type": "event",
3139    "name": "UndelegatedV2",
3140    "inputs": [
3141      {
3142        "name": "delegator",
3143        "type": "address",
3144        "indexed": true,
3145        "internalType": "address"
3146      },
3147      {
3148        "name": "validator",
3149        "type": "address",
3150        "indexed": true,
3151        "internalType": "address"
3152      },
3153      {
3154        "name": "undelegationId",
3155        "type": "uint64",
3156        "indexed": true,
3157        "internalType": "uint64"
3158      },
3159      {
3160        "name": "amount",
3161        "type": "uint256",
3162        "indexed": false,
3163        "internalType": "uint256"
3164      },
3165      {
3166        "name": "unlocksAt",
3167        "type": "uint256",
3168        "indexed": false,
3169        "internalType": "uint256"
3170      }
3171    ],
3172    "anonymous": false
3173  },
3174  {
3175    "type": "event",
3176    "name": "Unpaused",
3177    "inputs": [
3178      {
3179        "name": "account",
3180        "type": "address",
3181        "indexed": false,
3182        "internalType": "address"
3183      }
3184    ],
3185    "anonymous": false
3186  },
3187  {
3188    "type": "event",
3189    "name": "Upgraded",
3190    "inputs": [
3191      {
3192        "name": "implementation",
3193        "type": "address",
3194        "indexed": true,
3195        "internalType": "address"
3196      }
3197    ],
3198    "anonymous": false
3199  },
3200  {
3201    "type": "event",
3202    "name": "ValidatorExit",
3203    "inputs": [
3204      {
3205        "name": "validator",
3206        "type": "address",
3207        "indexed": true,
3208        "internalType": "address"
3209      }
3210    ],
3211    "anonymous": false
3212  },
3213  {
3214    "type": "event",
3215    "name": "ValidatorExitClaimed",
3216    "inputs": [
3217      {
3218        "name": "delegator",
3219        "type": "address",
3220        "indexed": true,
3221        "internalType": "address"
3222      },
3223      {
3224        "name": "validator",
3225        "type": "address",
3226        "indexed": true,
3227        "internalType": "address"
3228      },
3229      {
3230        "name": "amount",
3231        "type": "uint256",
3232        "indexed": false,
3233        "internalType": "uint256"
3234      }
3235    ],
3236    "anonymous": false
3237  },
3238  {
3239    "type": "event",
3240    "name": "ValidatorExitV2",
3241    "inputs": [
3242      {
3243        "name": "validator",
3244        "type": "address",
3245        "indexed": true,
3246        "internalType": "address"
3247      },
3248      {
3249        "name": "unlocksAt",
3250        "type": "uint256",
3251        "indexed": false,
3252        "internalType": "uint256"
3253      }
3254    ],
3255    "anonymous": false
3256  },
3257  {
3258    "type": "event",
3259    "name": "ValidatorRegistered",
3260    "inputs": [
3261      {
3262        "name": "account",
3263        "type": "address",
3264        "indexed": true,
3265        "internalType": "address"
3266      },
3267      {
3268        "name": "blsVk",
3269        "type": "tuple",
3270        "indexed": false,
3271        "internalType": "struct BN254.G2Point",
3272        "components": [
3273          {
3274            "name": "x0",
3275            "type": "uint256",
3276            "internalType": "BN254.BaseField"
3277          },
3278          {
3279            "name": "x1",
3280            "type": "uint256",
3281            "internalType": "BN254.BaseField"
3282          },
3283          {
3284            "name": "y0",
3285            "type": "uint256",
3286            "internalType": "BN254.BaseField"
3287          },
3288          {
3289            "name": "y1",
3290            "type": "uint256",
3291            "internalType": "BN254.BaseField"
3292          }
3293        ]
3294      },
3295      {
3296        "name": "schnorrVk",
3297        "type": "tuple",
3298        "indexed": false,
3299        "internalType": "struct EdOnBN254.EdOnBN254Point",
3300        "components": [
3301          {
3302            "name": "x",
3303            "type": "uint256",
3304            "internalType": "uint256"
3305          },
3306          {
3307            "name": "y",
3308            "type": "uint256",
3309            "internalType": "uint256"
3310          }
3311        ]
3312      },
3313      {
3314        "name": "commission",
3315        "type": "uint16",
3316        "indexed": false,
3317        "internalType": "uint16"
3318      }
3319    ],
3320    "anonymous": false
3321  },
3322  {
3323    "type": "event",
3324    "name": "ValidatorRegisteredV2",
3325    "inputs": [
3326      {
3327        "name": "account",
3328        "type": "address",
3329        "indexed": true,
3330        "internalType": "address"
3331      },
3332      {
3333        "name": "blsVK",
3334        "type": "tuple",
3335        "indexed": false,
3336        "internalType": "struct BN254.G2Point",
3337        "components": [
3338          {
3339            "name": "x0",
3340            "type": "uint256",
3341            "internalType": "BN254.BaseField"
3342          },
3343          {
3344            "name": "x1",
3345            "type": "uint256",
3346            "internalType": "BN254.BaseField"
3347          },
3348          {
3349            "name": "y0",
3350            "type": "uint256",
3351            "internalType": "BN254.BaseField"
3352          },
3353          {
3354            "name": "y1",
3355            "type": "uint256",
3356            "internalType": "BN254.BaseField"
3357          }
3358        ]
3359      },
3360      {
3361        "name": "schnorrVK",
3362        "type": "tuple",
3363        "indexed": false,
3364        "internalType": "struct EdOnBN254.EdOnBN254Point",
3365        "components": [
3366          {
3367            "name": "x",
3368            "type": "uint256",
3369            "internalType": "uint256"
3370          },
3371          {
3372            "name": "y",
3373            "type": "uint256",
3374            "internalType": "uint256"
3375          }
3376        ]
3377      },
3378      {
3379        "name": "commission",
3380        "type": "uint16",
3381        "indexed": false,
3382        "internalType": "uint16"
3383      },
3384      {
3385        "name": "blsSig",
3386        "type": "tuple",
3387        "indexed": false,
3388        "internalType": "struct BN254.G1Point",
3389        "components": [
3390          {
3391            "name": "x",
3392            "type": "uint256",
3393            "internalType": "BN254.BaseField"
3394          },
3395          {
3396            "name": "y",
3397            "type": "uint256",
3398            "internalType": "BN254.BaseField"
3399          }
3400        ]
3401      },
3402      {
3403        "name": "schnorrSig",
3404        "type": "bytes",
3405        "indexed": false,
3406        "internalType": "bytes"
3407      },
3408      {
3409        "name": "metadataUri",
3410        "type": "string",
3411        "indexed": false,
3412        "internalType": "string"
3413      }
3414    ],
3415    "anonymous": false
3416  },
3417  {
3418    "type": "event",
3419    "name": "Withdrawal",
3420    "inputs": [
3421      {
3422        "name": "account",
3423        "type": "address",
3424        "indexed": true,
3425        "internalType": "address"
3426      },
3427      {
3428        "name": "amount",
3429        "type": "uint256",
3430        "indexed": false,
3431        "internalType": "uint256"
3432      }
3433    ],
3434    "anonymous": false
3435  },
3436  {
3437    "type": "event",
3438    "name": "WithdrawalClaimed",
3439    "inputs": [
3440      {
3441        "name": "delegator",
3442        "type": "address",
3443        "indexed": true,
3444        "internalType": "address"
3445      },
3446      {
3447        "name": "validator",
3448        "type": "address",
3449        "indexed": true,
3450        "internalType": "address"
3451      },
3452      {
3453        "name": "undelegationId",
3454        "type": "uint64",
3455        "indexed": true,
3456        "internalType": "uint64"
3457      },
3458      {
3459        "name": "amount",
3460        "type": "uint256",
3461        "indexed": false,
3462        "internalType": "uint256"
3463      }
3464    ],
3465    "anonymous": false
3466  },
3467  {
3468    "type": "error",
3469    "name": "AccessControlBadConfirmation",
3470    "inputs": []
3471  },
3472  {
3473    "type": "error",
3474    "name": "AccessControlUnauthorizedAccount",
3475    "inputs": [
3476      {
3477        "name": "account",
3478        "type": "address",
3479        "internalType": "address"
3480      },
3481      {
3482        "name": "neededRole",
3483        "type": "bytes32",
3484        "internalType": "bytes32"
3485      }
3486    ]
3487  },
3488  {
3489    "type": "error",
3490    "name": "AddressEmptyCode",
3491    "inputs": [
3492      {
3493        "name": "target",
3494        "type": "address",
3495        "internalType": "address"
3496      }
3497    ]
3498  },
3499  {
3500    "type": "error",
3501    "name": "BLSSigVerificationFailed",
3502    "inputs": []
3503  },
3504  {
3505    "type": "error",
3506    "name": "BN254PairingProdFailed",
3507    "inputs": []
3508  },
3509  {
3510    "type": "error",
3511    "name": "BlsKeyAlreadyUsed",
3512    "inputs": []
3513  },
3514  {
3515    "type": "error",
3516    "name": "CommissionAlreadyInitialized",
3517    "inputs": [
3518      {
3519        "name": "validator",
3520        "type": "address",
3521        "internalType": "address"
3522      }
3523    ]
3524  },
3525  {
3526    "type": "error",
3527    "name": "CommissionIncreaseExceedsMax",
3528    "inputs": []
3529  },
3530  {
3531    "type": "error",
3532    "name": "CommissionUnchanged",
3533    "inputs": []
3534  },
3535  {
3536    "type": "error",
3537    "name": "CommissionUpdateTooSoon",
3538    "inputs": []
3539  },
3540  {
3541    "type": "error",
3542    "name": "DefaultAdminCannotBeRenounced",
3543    "inputs": []
3544  },
3545  {
3546    "type": "error",
3547    "name": "DefaultAdminCannotBeRevoked",
3548    "inputs": []
3549  },
3550  {
3551    "type": "error",
3552    "name": "DelegateAmountTooSmall",
3553    "inputs": []
3554  },
3555  {
3556    "type": "error",
3557    "name": "DeprecatedFunction",
3558    "inputs": []
3559  },
3560  {
3561    "type": "error",
3562    "name": "ERC1967InvalidImplementation",
3563    "inputs": [
3564      {
3565        "name": "implementation",
3566        "type": "address",
3567        "internalType": "address"
3568      }
3569    ]
3570  },
3571  {
3572    "type": "error",
3573    "name": "ERC1967NonPayable",
3574    "inputs": []
3575  },
3576  {
3577    "type": "error",
3578    "name": "EnforcedPause",
3579    "inputs": []
3580  },
3581  {
3582    "type": "error",
3583    "name": "ExitEscrowPeriodInvalid",
3584    "inputs": []
3585  },
3586  {
3587    "type": "error",
3588    "name": "ExpectedPause",
3589    "inputs": []
3590  },
3591  {
3592    "type": "error",
3593    "name": "FailedInnerCall",
3594    "inputs": []
3595  },
3596  {
3597    "type": "error",
3598    "name": "InitialActiveStakeExceedsBalance",
3599    "inputs": []
3600  },
3601  {
3602    "type": "error",
3603    "name": "InsufficientAllowance",
3604    "inputs": [
3605      {
3606        "name": "",
3607        "type": "uint256",
3608        "internalType": "uint256"
3609      },
3610      {
3611        "name": "",
3612        "type": "uint256",
3613        "internalType": "uint256"
3614      }
3615    ]
3616  },
3617  {
3618    "type": "error",
3619    "name": "InsufficientBalance",
3620    "inputs": [
3621      {
3622        "name": "",
3623        "type": "uint256",
3624        "internalType": "uint256"
3625      }
3626    ]
3627  },
3628  {
3629    "type": "error",
3630    "name": "InvalidCommission",
3631    "inputs": []
3632  },
3633  {
3634    "type": "error",
3635    "name": "InvalidG1",
3636    "inputs": []
3637  },
3638  {
3639    "type": "error",
3640    "name": "InvalidInitialization",
3641    "inputs": []
3642  },
3643  {
3644    "type": "error",
3645    "name": "InvalidMetadataUriLength",
3646    "inputs": []
3647  },
3648  {
3649    "type": "error",
3650    "name": "InvalidRateLimitParameters",
3651    "inputs": []
3652  },
3653  {
3654    "type": "error",
3655    "name": "InvalidSchnorrSig",
3656    "inputs": []
3657  },
3658  {
3659    "type": "error",
3660    "name": "InvalidSchnorrVK",
3661    "inputs": []
3662  },
3663  {
3664    "type": "error",
3665    "name": "MinDelegateAmountTooSmall",
3666    "inputs": []
3667  },
3668  {
3669    "type": "error",
3670    "name": "NoUndelegationFound",
3671    "inputs": []
3672  },
3673  {
3674    "type": "error",
3675    "name": "NotInitializing",
3676    "inputs": []
3677  },
3678  {
3679    "type": "error",
3680    "name": "NothingToWithdraw",
3681    "inputs": []
3682  },
3683  {
3684    "type": "error",
3685    "name": "OwnableInvalidOwner",
3686    "inputs": [
3687      {
3688        "name": "owner",
3689        "type": "address",
3690        "internalType": "address"
3691      }
3692    ]
3693  },
3694  {
3695    "type": "error",
3696    "name": "OwnableUnauthorizedAccount",
3697    "inputs": [
3698      {
3699        "name": "account",
3700        "type": "address",
3701        "internalType": "address"
3702      }
3703    ]
3704  },
3705  {
3706    "type": "error",
3707    "name": "OwnershipCannotBeRenounced",
3708    "inputs": []
3709  },
3710  {
3711    "type": "error",
3712    "name": "PowPrecompileFailed",
3713    "inputs": []
3714  },
3715  {
3716    "type": "error",
3717    "name": "PrematureWithdrawal",
3718    "inputs": []
3719  },
3720  {
3721    "type": "error",
3722    "name": "SchnorrKeyAlreadyUsed",
3723    "inputs": []
3724  },
3725  {
3726    "type": "error",
3727    "name": "UUPSUnauthorizedCallContext",
3728    "inputs": []
3729  },
3730  {
3731    "type": "error",
3732    "name": "UUPSUnsupportedProxiableUUID",
3733    "inputs": [
3734      {
3735        "name": "slot",
3736        "type": "bytes32",
3737        "internalType": "bytes32"
3738      }
3739    ]
3740  },
3741  {
3742    "type": "error",
3743    "name": "UndelegationAlreadyExists",
3744    "inputs": []
3745  },
3746  {
3747    "type": "error",
3748    "name": "ValidatorAlreadyExited",
3749    "inputs": []
3750  },
3751  {
3752    "type": "error",
3753    "name": "ValidatorAlreadyRegistered",
3754    "inputs": []
3755  },
3756  {
3757    "type": "error",
3758    "name": "ValidatorInactive",
3759    "inputs": []
3760  },
3761  {
3762    "type": "error",
3763    "name": "ValidatorNotExited",
3764    "inputs": []
3765  },
3766  {
3767    "type": "error",
3768    "name": "ZeroAddress",
3769    "inputs": []
3770  },
3771  {
3772    "type": "error",
3773    "name": "ZeroAmount",
3774    "inputs": []
3775  }
3776]
3777```*/
3778#[allow(
3779    non_camel_case_types,
3780    non_snake_case,
3781    clippy::pub_underscore_fields,
3782    clippy::style,
3783    clippy::empty_structs_with_brackets
3784)]
3785pub mod StakeTableV2 {
3786    use super::*;
3787    use alloy::sol_types as alloy_sol_types;
3788    /// The creation / init bytecode of the contract.
3789    ///
3790    /// ```text
3791    ///0x60a060405230608052348015610013575f5ffd5b5061001c610031565b610024610031565b61002c610031565b6100e3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100815760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143e46101095f395f818161247e015281816124a7015261296701526143e45ff3fe608060405260043610610366575f3560e01c806372e9c934116101c8578063b5700e68116100fd578063d9cc7d261161009d578063e63ab1e91161006d578063e63ab1e914610a7b578063f2fde38b14610a9b578063fa52c7d814610aba578063fc0c546a14610afd575f5ffd5b8063d9cc7d2614610a1c578063e3f237e614610a31578063e4d1fb9414610a50578063e62977f814610a66575f5ffd5b8063bd49c35f116100d8578063bd49c35f14610993578063be203094146109a8578063c64814dd146109c7578063d547741f146109fd575f5ffd5b8063b5700e6814610905578063b5ecb34414610924578063bb60bfb01461094f575f5ffd5b80639ffb6b4311610168578063a3066aab11610143578063a3066aab1461085c578063ac5c2ad01461087b578063ad3cb1cc1461089a578063b3e6ebd5146108d7575f5ffd5b80639ffb6b43146107a4578063a217fddf146107f7578063a2d78dd51461080a575f5ffd5b80638da5cb5b116101a35780638da5cb5b1461072557806391d14854146107515780639b30a5e6146107705780639e9a8f311461078f575f5ffd5b806372e9c934146106dd5780638456cb59146106f2578063870c8f2614610706575f5ffd5b80633e732eba1161029e57806352d1902d1161023e5780635f8754a6116102195780635f8754a6146106595780636a911ccf146106875780636ad28e9f1461069b578063715018a6146106c9575f5ffd5b806352d1902d146106085780635544c2f11461061c5780635c975abb14610636575f5ffd5b80633f4ba83a116102795780633f4ba83a146105a35780634d99dd16146105b75780634f1ef286146105d657806352780b6e146105e9575f5ffd5b80633e732eba146105435780633e9df9b5146105625780633f3bb36614610576575f5ffd5b80632b9e5c8a116103095780632fe28759116102e45780632fe28759146104d157806336568abe146104e6578063394b348f146105055780633b2b7ffa14610524575f5ffd5b80632b9e5c8a146104745780632dc9bac6146104935780632f2ff15d146104b2575f5ffd5b806313b9057a1161034457806313b9057a146103ea5780631a20cd63146104095780632140fecd14610428578063248a9ca314610447575f5ffd5b806301ffc9a71461036a578063026e402b1461039e5780630d8e6e2c146103bf575b5f5ffd5b348015610375575f5ffd5b506103896103843660046138e0565b610b1c565b60405190151581526020015b60405180910390f35b3480156103a9575f5ffd5b506103bd6103b8366004613922565b610b52565b005b3480156103ca575f5ffd5b5060408051600281525f6020820181905291810191909152606001610395565b3480156103f5575f5ffd5b506103bd610404366004613a26565b610d38565b348015610414575f5ffd5b506103bd610423366004613a7c565b610d51565b348015610433575f5ffd5b506103bd610442366004613aa2565b610de5565b348015610452575f5ffd5b50610466610461366004613abb565b610f35565b604051908152602001610395565b34801561047f575f5ffd5b506103bd61048e366004613b61565b610f55565b34801561049e575f5ffd5b506103bd6104ad366004613c0a565b611169565b3480156104bd575f5ffd5b506103bd6104cc366004613c23565b6111ed565b3480156104dc575f5ffd5b5061046661080081565b3480156104f1575f5ffd5b506103bd610500366004613c23565b611209565b348015610510575f5ffd5b506103bd61051f366004613abb565b611231565b34801561052f575f5ffd5b506103bd61053e366004613c0a565b6112a0565b34801561054e575f5ffd5b506103bd61055d366004613abb565b61140c565b34801561056d575f5ffd5b506104665f5481565b348015610581575f5ffd5b50600a546105909061ffff1681565b60405161ffff9091168152602001610395565b3480156105ae575f5ffd5b506103bd61146d565b3480156105c2575f5ffd5b506103bd6105d1366004613922565b61148f565b6103bd6105e4366004613c4d565b611700565b3480156105f4575f5ffd5b506103bd610603366004613c97565b61171b565b348015610613575f5ffd5b506104666118e0565b348015610627575f5ffd5b506103bd610404366004613d2d565b348015610641575f5ffd5b505f5160206143985f395f51905f525460ff16610389565b348015610664575f5ffd5b50610389610673366004613abb565b600e6020525f908152604090205460ff1681565b348015610692575f5ffd5b506103bd6118fb565b3480156106a6575f5ffd5b506106b16202a30081565b6040516001600160401b039091168152602001610395565b3480156106d4575f5ffd5b506103bd6119c3565b3480156106e8575f5ffd5b50610466600c5481565b3480156106fd575f5ffd5b506103bd6119e4565b348015610711575f5ffd5b506103bd610720366004613d71565b611a03565b348015610730575f5ffd5b50610739611a57565b6040516001600160a01b039091168152602001610395565b34801561075c575f5ffd5b5061038961076b366004613c23565b611a85565b34801561077b575f5ffd5b5061046661078a366004613daa565b611abb565b34801561079a575f5ffd5b5061046660085481565b3480156107af575f5ffd5b506107dd6107be366004613aa2565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff9093168352602083019190915201610395565b348015610802575f5ffd5b506104665f81565b348015610815575f5ffd5b50610847610824366004613dc4565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610395565b348015610867575f5ffd5b506103bd610876366004613aa2565b611b15565b348015610886575f5ffd5b506103bd610895366004613dec565b611c7a565b3480156108a5575f5ffd5b506108ca604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103959190613e89565b3480156108e2575f5ffd5b506103896108f1366004613abb565b60046020525f908152604090205460ff1681565b348015610910575f5ffd5b50600154610739906001600160a01b031681565b34801561092f575f5ffd5b5061046661093e366004613aa2565b60056020525f908152604090205481565b34801561095a575f5ffd5b5061096e610969366004613dc4565b611da4565b604080516001600160401b039094168452602084019290925290820152606001610395565b34801561099e575f5ffd5b50610466600b5481565b3480156109b3575f5ffd5b506103bd6109c2366004613e9b565b611e35565b3480156109d2575f5ffd5b506104666109e1366004613dc4565b600660209081525f928352604080842090915290825290205481565b348015610a08575f5ffd5b506103bd610a17366004613c23565b611f4c565b348015610a27575f5ffd5b5061046660095481565b348015610a3c575f5ffd5b506103bd610a4b366004613d71565b611f74565b348015610a5b575f5ffd5b506106b16212750081565b348015610a71575f5ffd5b5061059061271081565b348015610a86575f5ffd5b506104665f5160206143585f395f51905f5281565b348015610aa6575f5ffd5b506103bd610ab5366004613aa2565b611f99565b348015610ac5575f5ffd5b50610aef610ad4366004613aa2565b60036020525f90815260409020805460019091015460ff1682565b604051610395929190613eee565b348015610b08575f5ffd5b50600254610739906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610b4c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b5a612021565b610b6382612053565b335f829003610b8557604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ba857604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613f1e565b905082811015610c4c5760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610c64906001600160a01b03168330866120d4565b6001600160a01b0384165f9081526003602052604081208054859290610c8b908490613f49565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610cc6908490613f49565b9250508190555082600b5f828254610cde9190613f49565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610d2a91815260200190565b60405180910390a350505050565b60405163c2d7f81360e01b815260040160405180910390fd5b5f610d5b81612178565b6202a3006001600160401b0383161080610d805750621275006001600160401b038316115b15610d9e5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b610ded612021565b6001600160a01b0381165f908152600560205260408120543391819003610e27576040516379298a5360e11b815260040160405180910390fd5b80421015610e4857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610e9057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610ed4908490613f5c565b9091555050600254610ef0906001600160a01b03168483612182565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610d2a91815260200190565b5f9081525f5160206143785f395f51905f52602052604090206001015490565b610f5d612021565b33610f678161220b565b610f7086612258565b610f7a8787612293565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610fac81878a61230c565b8451604014610fce57604051634247068760e01b815260040160405180910390fd5b61271061ffff85161115610ff55760405163dc81db8560e01b815260040160405180910390fd5b610ffe83611f74565b600160045f61100c8b611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61103d8a6123a1565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f81526020016001600281111561108457611084613eda565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156110ca576110ca613eda565b02179055505060408051808201825261ffff87811682525f60208084018281526001600160a01b038916808452600d909252918590209351845461ffff191693169290921783555160019092019190915590519091507f26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b26848990611157908b908b9089908c908c908b90613f6f565b60405180910390a25050505050505050565b5f61117381612178565b5f8261ffff1611801561118c575061271061ffff831611155b6111a95760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001610dd9565b816111ff576111fb81611f99565b5050565b6111fb82826123c5565b8161122757604051638b78631d60e01b815260040160405180910390fd5b6111fb82826123e1565b5f61123b81612178565b5f8211801561124e57506301e133808211155b61126b5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610dd9565b6112a8612021565b336112b281612053565b61271061ffff831611156112d95760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff90811690841681900361131b57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff1611156113a757600182015480158061134957506009546113459082613f49565b4210155b611366576040516316eb94cb60e01b815260040160405180910390fd5b600a546113779061ffff1683613ff6565b61ffff168561ffff16111561139f576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f61141681612178565b60018210156114385760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001610dd9565b5f5160206143585f395f51905f5261148481612178565b61148c612414565b50565b611497612021565b6114a082612053565b335f8290036114c257604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156115055760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561154e57604051639266535160e01b815260048101829052602401610c43565b600f80545f916001600160401b03909116908261156a83614010565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e39190613f5c565b90915550506008545f906115f79042613f49565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611687908490613f5c565b9250508190555084600b5f82825461169f9190613f5c565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611708612473565b61171182612517565b6111fb8282612521565b6117236125dd565b5f5160206143b85f395f51905f52805460029190600160401b900460ff1680611759575080546001600160401b03808416911610155b156117775760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b0386166117bf5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166117e65760405163d92e233d60e01b815260040160405180910390fd5b6117ee61260f565b6117f6612617565b61180d5f5160206143585f395f51905f5288612627565b506118185f87612627565b505f611822611a57565b9050806001600160a01b0316876001600160a01b03161461184657611846876126c8565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c556118868585612738565b61188f866128cd565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b5f6118e961295c565b505f5160206143385f395f51905f5290565b611903612021565b3361190d81612053565b6001600160a01b0381165f908152600360205260408120600101805460ff1916600217905560085461193f9042613f49565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b8054939450909290919061197b908490613f5c565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab906020015b60405180910390a25050565b6119cb6125dd565b6040516317d5c96560e11b815260040160405180910390fd5b5f5160206143585f395f51905f526119fb81612178565b61148c6129a5565b611a0b612021565b33611a1581612053565b611a1e82611f74565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516119b79190613e89565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f5160206143785f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611af8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b611b1d612021565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b6257604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611baa57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691611c1d91168484612182565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a852285604051611c6c91815260200190565b60405180910390a450505050565b611c82612021565b33611c8c81612053565b611c9584612258565b611c9f8585612293565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cd181858861230c565b8251604014611cf357604051634247068760e01b815260040160405180910390fd5b600160045f611d0189611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611d32886123a1565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051611d94949392919061403a565b60405180910390a2505050505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054829182918203611def57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f5160206143b85f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611e665750825b90505f826001600160401b03166001148015611e815750303b155b905081158015611e8f575080155b15611ead5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ed757845460ff60401b1916600160401b1785555b611ee0866129ed565b611ee861260f565b611ef06129fe565b611efb898989612aef565b8315611f4157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b81611f6a5760405163b0b5fb9960e01b815260040160405180910390fd5b6111fb8282612b9a565b80516108008111156111fb5760405163239ff57f60e01b815260040160405180910390fd5b5f611fa381612178565b6001600160a01b038216611fcc57604051631e4fbdf760e01b81525f6004820152602401610c43565b5f611fd5611a57565b9050826001600160a01b0316816001600160a01b031603611ffe57611ff983612bb6565b505050565b6120085f846123c5565b61201183612bb6565b61201b5f82612bf0565b50505050565b5f5160206143985f395f51905f525460ff16156120515760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff169081600281111561208457612084613eda565b036120a25760405163508a793f60e01b815260040160405180910390fd5b60028160028111156120b6576120b6613eda565b036111fb5760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561212d5750833b153d17155b806121715760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610c43565b5050505050565b61148c8133612c69565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156121cc5750823b153d17155b8061201b5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610c43565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561223a5761223a613eda565b1461148c5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526122758282612ca2565b156111fb576040516306cf438f60e01b815260040160405180910390fd5b60045f61229f84611abb565b815260208101919091526040015f205460ff16156122cf5760405162da8a5760e11b815260040160405180910390fd5b600e5f6122db836123a1565b815260208101919091526040015f205460ff16156111fb5760405163ae493b0360e01b815260040160405180910390fd5b61231582612cc3565b5f6040518060600160405280602481526020016142f46024913990505f84826040516020016123459291906140b7565b60405160208183030381529060405290505f61236082612d2a565b905061237d818561237088612e17565b612378612e8e565b612f5b565b6123995760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611af8929190918252602082015260400190565b6123ce82610f35565b6123d781612178565b61201b8383612627565b6001600160a01b038116331461240a5760405163334bd91960e11b815260040160405180910390fd5b611ff98282612bf0565b61241c61300a565b5f5160206143985f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806124f957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124ed5f5160206143385f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156120515760405163703e46dd60e11b815260040160405180910390fd5b5f6111fb81612178565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561257b575060408051601f3d908101601f1916820190925261257891810190613f1e565b60015b6125a357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c43565b5f5160206143385f395f51905f5281146125d357604051632a87526960e21b815260048101829052602401610c43565b611ff98383613039565b336125e6611a57565b6001600160a01b0316146120515760405163118cdaa760e01b8152336004820152602401610c43565b61205161308e565b61261f61308e565b6120516130c4565b5f5f5160206143785f395f51905f526126408484611a85565b6126bf575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556126753390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b4c565b5f915050610b4c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015611ff9575f838383818110612755576127556140cb565b61276b9260206040909202019081019150613aa2565b90505f848484818110612780576127806140cb565b90506040020160200160208101906127989190613c0a565b905061271061ffff821611156127c15760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156127f2576127f2613eda565b036128105760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d602052604090206001015415801561285157506001600160a01b0383165f908152600d602052604090205461ffff16155b839061287c5760405163050814e160e41b81526001600160a01b039091166004820152602401610c43565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff1916921691909117815590516001918201550161273a565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612913573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190613f1e565b81111561295757604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120515760405163703e46dd60e11b815260040160405180910390fd5b6129ad612021565b5f5160206143985f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612455565b6129f561308e565b61148c816130e4565b5f5160206143b85f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015612a2f5750825b90505f826001600160401b03166001148015612a4a5750303b155b905081158015612a58575080155b15612a765760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612aa057845460ff60401b1916600160401b1785555b435f55831561217157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b038316612b165760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216612b3d5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a30080821015612b925760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b612ba382610f35565b612bac81612178565b61201b8383612bf0565b612bbe6125dd565b6001600160a01b038116612be757604051631e4fbdf760e01b81525f6004820152602401610c43565b61148c816126c8565b5f5f5160206143785f395f51905f52612c098484611a85565b156126bf575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b4c565b612c738282611a85565b6111fb5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c43565b805182515f91148015612cbc575081602001518360200151145b9392505050565b805160208201515f915f5160206143185f395f51905f52911590151615612ce957505050565b825160208401518260038485858609850908838283091483821084841016169350505081611ff95760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612d47836130ec565b90505f5160206143185f395f51905f5260035f8284850990508280612d6e57612d6e6140df565b84820990508280612d8157612d816140df565b82820890505f5f612d91836132f4565b925090505b80612dfa578480612da957612da96140df565b6001870895508480612dbd57612dbd6140df565b86870992508480612dd057612dd06140df565b86840992508480612de357612de36140df565b8484089250612df1836132f4565b92509050612d96565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612e3e575090565b6040518060400160405280835f015181526020015f5160206143185f395f51905f528460200151612e6f91906140f3565b612e86905f5160206143185f395f51905f52613f5c565b905292915050565b612eb560405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080612ffe5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f5160206143985f395f51905f525460ff1661205157604051638dfc202b60e01b815260040160405180910390fd5b613042826133bc565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561308657611ff9828261341f565b6111fb613491565b5f5160206143b85f395f51905f5254600160401b900460ff1661205157604051631afcd79f60e31b815260040160405180910390fd5b6130cc61308e565b5f5160206143985f395f51905f52805460ff19169055565b612bbe61308e565b5f5f6130f7836134b0565b80519091506030811461310c5761310c614112565b5f816001600160401b038111156131255761312561394a565b6040519080825280601f01601f19166020018201604052801561314f576020820181803683370190505b5090505f5b828110156131be578360016131698386613f5c565b6131739190613f5c565b81518110613183576131836140cb565b602001015160f81c60f81b8282815181106131a0576131a06140cb565b60200101906001600160f81b03191690815f1a905350600101613154565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b8281101561324e5783816131fa8588613f5c565b6132049190613f49565b81518110613214576132146140cb565b602001015160f81c60f81b60f81c828281518110613234576132346140cb565b60ff909216602092830291909101909101526001016131e6565b505f613259826137fb565b90506101005f5160206143185f395f51905f525f6132778689613f5c565b90505f5b818110156132e4575f8860016132918486613f5c565b61329b9190613f5c565b815181106132ab576132ab6140cb565b016020015160f81c905083806132c3576132c36140df565b858709955083806132d6576132d66140df565b81870895505060010161327b565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206143185f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361338257604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b111561339b576133988382613f5c565b92505b80806133a9576133a96140df565b8384099690961496919550909350505050565b806001600160a01b03163b5f036133f157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c43565b5f5160206143385f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161343b9190614126565b5f60405180830381855af49150503d805f8114613473576040519150601f19603f3d011682016040523d82523d5f602084013e613478565b606091505b5091509150613488858383613862565b95945050505050565b34156120515760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f908460208201818036833701905050905080866040516020016134f09291906140b7565b6040516020818303038152906040529050808460f81b604051602001613517929190614131565b604051602081830303815290604052905080604051602001613539919061415b565b60408051601f1981840301815290829052915061010160f01b906135639083908390602001614173565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b038111156135d2576135d261394a565b6040519080825280601f01601f1916602001820160405280156135fc576020820181803683370190505b5090505f8260405160200161361391815260200190565b60408051601f1981840301815291905290505f5b815181101561367d57818181518110613642576136426140cb565b602001015160f81c60f81b83828151811061365f5761365f6140cb565b60200101906001600160f81b03191690815f1a905350600101613627565b505f8460405160200161369291815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613724575f8382815181106136cb576136cb6140cb565b602001015160f81c60f81b8383815181106136e8576136e86140cb565b602001015160f81c60f81b1890508881604051602001613709929190614197565b60408051601f198184030181529190529850506001016136b0565b5086888760405160200161373a939291906141bb565b6040516020818303038152906040529650868051906020012093508360405160200161376891815260200190565b60408051601f1981840301815291905291505f5b6137898a60ff8d16613f5c565b8110156137ea578281815181106137a2576137a26140cb565b01602001516001600160f81b031916846137bc838d613f49565b815181106137cc576137cc6140cb565b60200101906001600160f81b03191690815f1a90535060010161377c565b50919b9a5050505050505050505050565b5f80805b835181101561385b5783818151811061381a5761381a6140cb565b602002602001015160ff1681600861383291906141ee565b61383d9060026142e8565b61384791906141ee565b6138519083613f49565b91506001016137ff565b5092915050565b60608261387757613872826138b7565b612cbc565b815115801561388e57506001600160a01b0384163b155b1561385b57604051639996b31560e01b81526001600160a01b0385166004820152602401610c43565b8051156138c75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156138f0575f5ffd5b81356001600160e01b031981168114612cbc575f5ffd5b80356001600160a01b038116811461391d575f5ffd5b919050565b5f5f60408385031215613933575f5ffd5b61393c83613907565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156139805761398061394a565b60405290565b5f60808284031215613996575f5ffd5b604051608081016001600160401b03811182821017156139b8576139b861394a565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156139f6575f5ffd5b6139fe61395e565b823581526020928301359281019290925250919050565b803561ffff8116811461391d575f5ffd5b5f5f5f5f6101208587031215613a3a575f5ffd5b613a448686613986565b9350613a5386608087016139e6565b9250613a628660c087016139e6565b9150613a716101008601613a15565b905092959194509250565b5f60208284031215613a8c575f5ffd5b81356001600160401b0381168114612cbc575f5ffd5b5f60208284031215613ab2575f5ffd5b612cbc82613907565b5f60208284031215613acb575f5ffd5b5035919050565b5f82601f830112613ae1575f5ffd5b8135602083015f5f6001600160401b03841115613b0057613b0061394a565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613b2e57613b2e61394a565b604052838152905080828401871015613b45575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f5f5f5f5f6101608789031215613b77575f5ffd5b613b818888613986565b9550613b9088608089016139e6565b9450613b9f8860c089016139e6565b93506101008701356001600160401b03811115613bba575f5ffd5b613bc689828a01613ad2565b935050613bd66101208801613a15565b91506101408701356001600160401b03811115613bf1575f5ffd5b613bfd89828a01613ad2565b9150509295509295509295565b5f60208284031215613c1a575f5ffd5b612cbc82613a15565b5f5f60408385031215613c34575f5ffd5b82359150613c4460208401613907565b90509250929050565b5f5f60408385031215613c5e575f5ffd5b613c6783613907565b915060208301356001600160401b03811115613c81575f5ffd5b613c8d85828601613ad2565b9150509250929050565b5f5f5f5f5f60808688031215613cab575f5ffd5b613cb486613907565b9450613cc260208701613907565b93506040860135925060608601356001600160401b03811115613ce3575f5ffd5b8601601f81018813613cf3575f5ffd5b80356001600160401b03811115613d08575f5ffd5b8860208260061b8401011115613d1c575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215613d40575f5ffd5b613d4a8585613986565b9250613d5985608086016139e6565b9150613d688560c086016139e6565b90509250925092565b5f60208284031215613d81575f5ffd5b81356001600160401b03811115613d96575f5ffd5b613da284828501613ad2565b949350505050565b5f60808284031215613dba575f5ffd5b612cbc8383613986565b5f5f60408385031215613dd5575f5ffd5b613dde83613907565b9150613c4460208401613907565b5f5f5f5f6101208587031215613e00575f5ffd5b613e0a8686613986565b9350613e1986608087016139e6565b9250613e288660c087016139e6565b91506101008501356001600160401b03811115613e43575f5ffd5b613e4f87828801613ad2565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612cbc6020830184613e5b565b5f5f5f5f60808587031215613eae575f5ffd5b613eb785613907565b9350613ec560208601613907565b925060408501359150613a7160608601613907565b634e487b7160e01b5f52602160045260245ffd5b8281526040810160038310613f1157634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613f2e575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4c57610b4c613f35565b81810381811115610b4c57610b4c613f35565b8651815260208088015190820152604080880151908201526060808801519082015285516080820152602086015160a082015261ffff851660c0820152835160e082015260208401516101008201526101606101208201525f613fd6610160830185613e5b565b828103610140840152613fe98185613e5b565b9998505050505050505050565b61ffff8181168382160190811115610b4c57610b4c613f35565b5f6001600160401b0382166001600160401b03810361403157614031613f35565b60010192915050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f614096610120830184613e5b565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f613da26140c583866140a0565b846140a0565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261410d57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f612cbc82846140a0565b5f61413c82856140a0565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61416682846140a0565b5f81526001019392505050565b5f61417e82856140a0565b6001600160f01b03199390931683525050600201919050565b5f6141a282856140a0565b6001600160f81b03199390931683525050600101919050565b5f6141c682866140a0565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610b4c57610b4c613f35565b6001815b60018411156142405780850481111561422457614224613f35565b600184161561423257908102905b60019390931c928002614209565b935093915050565b5f8261425657506001610b4c565b8161426257505f610b4c565b816001811461427857600281146142825761429e565b6001915050610b4c565b60ff84111561429357614293613f35565b50506001821b610b4c565b5060208310610133831016604e8410600b84101617156142c1575081810a610b4c565b6142cd5f198484614205565b805f19048211156142e0576142e0613f35565b029392505050565b5f612cbc838361424856fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3792    /// ```
3793    #[rustfmt::skip]
3794    #[allow(clippy::all)]
3795    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3796        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\x001V[a\0$a\x001V[a\0,a\x001V[a\0\xE3V[\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\x81W`@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\xE0W\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[`\x80QaC\xE4a\x01\t_9_\x81\x81a$~\x01R\x81\x81a$\xA7\x01Ra)g\x01RaC\xE4_\xF3\xFE`\x80`@R`\x046\x10a\x03fW_5`\xE0\x1C\x80cr\xE9\xC94\x11a\x01\xC8W\x80c\xB5p\x0Eh\x11a\0\xFDW\x80c\xD9\xCC}&\x11a\0\x9DW\x80c\xE6:\xB1\xE9\x11a\0mW\x80c\xE6:\xB1\xE9\x14a\n{W\x80c\xF2\xFD\xE3\x8B\x14a\n\x9BW\x80c\xFAR\xC7\xD8\x14a\n\xBAW\x80c\xFC\x0CTj\x14a\n\xFDW__\xFD[\x80c\xD9\xCC}&\x14a\n\x1CW\x80c\xE3\xF27\xE6\x14a\n1W\x80c\xE4\xD1\xFB\x94\x14a\nPW\x80c\xE6)w\xF8\x14a\nfW__\xFD[\x80c\xBDI\xC3_\x11a\0\xD8W\x80c\xBDI\xC3_\x14a\t\x93W\x80c\xBE 0\x94\x14a\t\xA8W\x80c\xC6H\x14\xDD\x14a\t\xC7W\x80c\xD5Gt\x1F\x14a\t\xFDW__\xFD[\x80c\xB5p\x0Eh\x14a\t\x05W\x80c\xB5\xEC\xB3D\x14a\t$W\x80c\xBB`\xBF\xB0\x14a\tOW__\xFD[\x80c\x9F\xFBkC\x11a\x01hW\x80c\xA3\x06j\xAB\x11a\x01CW\x80c\xA3\x06j\xAB\x14a\x08\\W\x80c\xAC\\*\xD0\x14a\x08{W\x80c\xAD<\xB1\xCC\x14a\x08\x9AW\x80c\xB3\xE6\xEB\xD5\x14a\x08\xD7W__\xFD[\x80c\x9F\xFBkC\x14a\x07\xA4W\x80c\xA2\x17\xFD\xDF\x14a\x07\xF7W\x80c\xA2\xD7\x8D\xD5\x14a\x08\nW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\xA3W\x80c\x8D\xA5\xCB[\x14a\x07%W\x80c\x91\xD1HT\x14a\x07QW\x80c\x9B0\xA5\xE6\x14a\x07pW\x80c\x9E\x9A\x8F1\x14a\x07\x8FW__\xFD[\x80cr\xE9\xC94\x14a\x06\xDDW\x80c\x84V\xCBY\x14a\x06\xF2W\x80c\x87\x0C\x8F&\x14a\x07\x06W__\xFD[\x80c>s.\xBA\x11a\x02\x9EW\x80cR\xD1\x90-\x11a\x02>W\x80c_\x87T\xA6\x11a\x02\x19W\x80c_\x87T\xA6\x14a\x06YW\x80cj\x91\x1C\xCF\x14a\x06\x87W\x80cj\xD2\x8E\x9F\x14a\x06\x9BW\x80cqP\x18\xA6\x14a\x06\xC9W__\xFD[\x80cR\xD1\x90-\x14a\x06\x08W\x80cUD\xC2\xF1\x14a\x06\x1CW\x80c\\\x97Z\xBB\x14a\x066W__\xFD[\x80c?K\xA8:\x11a\x02yW\x80c?K\xA8:\x14a\x05\xA3W\x80cM\x99\xDD\x16\x14a\x05\xB7W\x80cO\x1E\xF2\x86\x14a\x05\xD6W\x80cRx\x0Bn\x14a\x05\xE9W__\xFD[\x80c>s.\xBA\x14a\x05CW\x80c>\x9D\xF9\xB5\x14a\x05bW\x80c?;\xB3f\x14a\x05vW__\xFD[\x80c+\x9E\\\x8A\x11a\x03\tW\x80c/\xE2\x87Y\x11a\x02\xE4W\x80c/\xE2\x87Y\x14a\x04\xD1W\x80c6V\x8A\xBE\x14a\x04\xE6W\x80c9K4\x8F\x14a\x05\x05W\x80c;+\x7F\xFA\x14a\x05$W__\xFD[\x80c+\x9E\\\x8A\x14a\x04tW\x80c-\xC9\xBA\xC6\x14a\x04\x93W\x80c//\xF1]\x14a\x04\xB2W__\xFD[\x80c\x13\xB9\x05z\x11a\x03DW\x80c\x13\xB9\x05z\x14a\x03\xEAW\x80c\x1A \xCDc\x14a\x04\tW\x80c!@\xFE\xCD\x14a\x04(W\x80c$\x8A\x9C\xA3\x14a\x04GW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03jW\x80c\x02n@+\x14a\x03\x9EW\x80c\r\x8En,\x14a\x03\xBFW[__\xFD[4\x80\x15a\x03uW__\xFD[Pa\x03\x89a\x03\x846`\x04a8\xE0V[a\x0B\x1CV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x03\xA9W__\xFD[Pa\x03\xBDa\x03\xB86`\x04a9\"V[a\x0BRV[\0[4\x80\x15a\x03\xCAW__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\x95V[4\x80\x15a\x03\xF5W__\xFD[Pa\x03\xBDa\x04\x046`\x04a:&V[a\r8V[4\x80\x15a\x04\x14W__\xFD[Pa\x03\xBDa\x04#6`\x04a:|V[a\rQV[4\x80\x15a\x043W__\xFD[Pa\x03\xBDa\x04B6`\x04a:\xA2V[a\r\xE5V[4\x80\x15a\x04RW__\xFD[Pa\x04fa\x04a6`\x04a:\xBBV[a\x0F5V[`@Q\x90\x81R` \x01a\x03\x95V[4\x80\x15a\x04\x7FW__\xFD[Pa\x03\xBDa\x04\x8E6`\x04a;aV[a\x0FUV[4\x80\x15a\x04\x9EW__\xFD[Pa\x03\xBDa\x04\xAD6`\x04a<\nV[a\x11iV[4\x80\x15a\x04\xBDW__\xFD[Pa\x03\xBDa\x04\xCC6`\x04a<#V[a\x11\xEDV[4\x80\x15a\x04\xDCW__\xFD[Pa\x04fa\x08\0\x81V[4\x80\x15a\x04\xF1W__\xFD[Pa\x03\xBDa\x05\x006`\x04a<#V[a\x12\tV[4\x80\x15a\x05\x10W__\xFD[Pa\x03\xBDa\x05\x1F6`\x04a:\xBBV[a\x121V[4\x80\x15a\x05/W__\xFD[Pa\x03\xBDa\x05>6`\x04a<\nV[a\x12\xA0V[4\x80\x15a\x05NW__\xFD[Pa\x03\xBDa\x05]6`\x04a:\xBBV[a\x14\x0CV[4\x80\x15a\x05mW__\xFD[Pa\x04f_T\x81V[4\x80\x15a\x05\x81W__\xFD[P`\nTa\x05\x90\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x05\xAEW__\xFD[Pa\x03\xBDa\x14mV[4\x80\x15a\x05\xC2W__\xFD[Pa\x03\xBDa\x05\xD16`\x04a9\"V[a\x14\x8FV[a\x03\xBDa\x05\xE46`\x04a<MV[a\x17\0V[4\x80\x15a\x05\xF4W__\xFD[Pa\x03\xBDa\x06\x036`\x04a<\x97V[a\x17\x1BV[4\x80\x15a\x06\x13W__\xFD[Pa\x04fa\x18\xE0V[4\x80\x15a\x06'W__\xFD[Pa\x03\xBDa\x04\x046`\x04a=-V[4\x80\x15a\x06AW__\xFD[P_Q` aC\x98_9_Q\x90_RT`\xFF\x16a\x03\x89V[4\x80\x15a\x06dW__\xFD[Pa\x03\x89a\x06s6`\x04a:\xBBV[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x06\x92W__\xFD[Pa\x03\xBDa\x18\xFBV[4\x80\x15a\x06\xA6W__\xFD[Pa\x06\xB1b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x06\xD4W__\xFD[Pa\x03\xBDa\x19\xC3V[4\x80\x15a\x06\xE8W__\xFD[Pa\x04f`\x0CT\x81V[4\x80\x15a\x06\xFDW__\xFD[Pa\x03\xBDa\x19\xE4V[4\x80\x15a\x07\x11W__\xFD[Pa\x03\xBDa\x07 6`\x04a=qV[a\x1A\x03V[4\x80\x15a\x070W__\xFD[Pa\x079a\x1AWV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x07\\W__\xFD[Pa\x03\x89a\x07k6`\x04a<#V[a\x1A\x85V[4\x80\x15a\x07{W__\xFD[Pa\x04fa\x07\x8A6`\x04a=\xAAV[a\x1A\xBBV[4\x80\x15a\x07\x9AW__\xFD[Pa\x04f`\x08T\x81V[4\x80\x15a\x07\xAFW__\xFD[Pa\x07\xDDa\x07\xBE6`\x04a:\xA2V[`\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\x95V[4\x80\x15a\x08\x02W__\xFD[Pa\x04f_\x81V[4\x80\x15a\x08\x15W__\xFD[Pa\x08Ga\x08$6`\x04a=\xC4V[`\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\x95V[4\x80\x15a\x08gW__\xFD[Pa\x03\xBDa\x08v6`\x04a:\xA2V[a\x1B\x15V[4\x80\x15a\x08\x86W__\xFD[Pa\x03\xBDa\x08\x956`\x04a=\xECV[a\x1CzV[4\x80\x15a\x08\xA5W__\xFD[Pa\x08\xCA`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\x95\x91\x90a>\x89V[4\x80\x15a\x08\xE2W__\xFD[Pa\x03\x89a\x08\xF16`\x04a:\xBBV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\t\x10W__\xFD[P`\x01Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\t/W__\xFD[Pa\x04fa\t>6`\x04a:\xA2V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\tZW__\xFD[Pa\tna\ti6`\x04a=\xC4V[a\x1D\xA4V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\x95V[4\x80\x15a\t\x9EW__\xFD[Pa\x04f`\x0BT\x81V[4\x80\x15a\t\xB3W__\xFD[Pa\x03\xBDa\t\xC26`\x04a>\x9BV[a\x1E5V[4\x80\x15a\t\xD2W__\xFD[Pa\x04fa\t\xE16`\x04a=\xC4V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\n\x08W__\xFD[Pa\x03\xBDa\n\x176`\x04a<#V[a\x1FLV[4\x80\x15a\n'W__\xFD[Pa\x04f`\tT\x81V[4\x80\x15a\n<W__\xFD[Pa\x03\xBDa\nK6`\x04a=qV[a\x1FtV[4\x80\x15a\n[W__\xFD[Pa\x06\xB1b\x12u\0\x81V[4\x80\x15a\nqW__\xFD[Pa\x05\x90a'\x10\x81V[4\x80\x15a\n\x86W__\xFD[Pa\x04f_Q` aCX_9_Q\x90_R\x81V[4\x80\x15a\n\xA6W__\xFD[Pa\x03\xBDa\n\xB56`\x04a:\xA2V[a\x1F\x99V[4\x80\x15a\n\xC5W__\xFD[Pa\n\xEFa\n\xD46`\x04a:\xA2V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\x95\x92\x91\x90a>\xEEV[4\x80\x15a\x0B\x08W__\xFD[P`\x02Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0BLWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0BZa !V[a\x0Bc\x82a SV[3_\x82\x90\x03a\x0B\x85W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\x0B\xA8W`@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\x0B\xF6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x1A\x91\x90a?\x1EV[\x90P\x82\x81\x10\x15a\x0CLW`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x0Cd\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a \xD4V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x0C\x8B\x90\x84\x90a?IV[\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\x0C\xC6\x90\x84\x90a?IV[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0C\xDE\x91\x90a?IV[\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\r*\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\r[\x81a!xV[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\r\x80WPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\r\x9EW`@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\r\xEDa !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x0E'W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x0EHW`@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\x0E\x90W`@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\x0E\xD4\x90\x84\x90a?\\V[\x90\x91UPP`\x02Ta\x0E\xF0\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a!\x82V[\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\r*\x91\x81R` \x01\x90V[_\x90\x81R_Q` aCx_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x0F]a !V[3a\x0Fg\x81a\"\x0BV[a\x0Fp\x86a\"XV[a\x0Fz\x87\x87a\"\x93V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0F\xAC\x81\x87\x8Aa#\x0CV[\x84Q`@\x14a\x0F\xCEW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x85\x16\x11\x15a\x0F\xF5W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xFE\x83a\x1FtV[`\x01`\x04_a\x10\x0C\x8Ba\x1A\xBBV[\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\x10=\x8Aa#\xA1V[\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\x10\x84Wa\x10\x84a>\xDAV[\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\x10\xCAWa\x10\xCAa>\xDAV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x87\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x90\x92R\x91\x85\x90 \x93Q\x84Ta\xFF\xFF\x19\x16\x93\x16\x92\x90\x92\x17\x83UQ`\x01\x90\x92\x01\x91\x90\x91U\x90Q\x90\x91P\x7F&\xDE\xF1t\xFC\xE8\x14\x7FV\x01}\t[\xF3\x9C\xDF+\x97(\xF9\x1A\xB2\xF2t\x97J/\xD9{&\x84\x89\x90a\x11W\x90\x8B\x90\x8B\x90\x89\x90\x8C\x90\x8C\x90\x8B\x90a?oV[`@Q\x80\x91\x03\x90\xA2PPPPPPPPV[_a\x11s\x81a!xV[_\x82a\xFF\xFF\x16\x11\x80\x15a\x11\x8CWPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x11\xA9W`@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\r\xD9V[\x81a\x11\xFFWa\x11\xFB\x81a\x1F\x99V[PPV[a\x11\xFB\x82\x82a#\xC5V[\x81a\x12'W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a#\xE1V[_a\x12;\x81a!xV[_\x82\x11\x80\x15a\x12NWPc\x01\xE13\x80\x82\x11\x15[a\x12kW`@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\r\xD9V[a\x12\xA8a !V[3a\x12\xB2\x81a SV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x12\xD9W`@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\x13\x1BW`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x13\xA7W`\x01\x82\x01T\x80\x15\x80a\x13IWP`\tTa\x13E\x90\x82a?IV[B\x10\x15[a\x13fW`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x13w\x90a\xFF\xFF\x16\x83a?\xF6V[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x13\x9FW`@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\x14\x16\x81a!xV[`\x01\x82\x10\x15a\x148W`@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\r\xD9V[_Q` aCX_9_Q\x90_Ra\x14\x84\x81a!xV[a\x14\x8Ca$\x14V[PV[a\x14\x97a !V[a\x14\xA0\x82a SV[3_\x82\x90\x03a\x14\xC2W`@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\x15\x05W`@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\x15NW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x15j\x83a@\x10V[\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\x15\xE3\x91\x90a?\\V[\x90\x91UPP`\x08T_\x90a\x15\xF7\x90Ba?IV[`@\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\x16\x87\x90\x84\x90a?\\V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x16\x9F\x91\x90a?\\V[\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\x17\x08a$sV[a\x17\x11\x82a%\x17V[a\x11\xFB\x82\x82a%!V[a\x17#a%\xDDV[_Q` aC\xB8_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x17YWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x17wW`@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\x17\xBFW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x17\xE6W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xEEa&\x0FV[a\x17\xF6a&\x17V[a\x18\r_Q` aCX_9_Q\x90_R\x88a&'V[Pa\x18\x18_\x87a&'V[P_a\x18\"a\x1AWV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18FWa\x18F\x87a&\xC8V[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\x18\x86\x85\x85a'8V[a\x18\x8F\x86a(\xCDV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\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\xA1PPPPPPPV[_a\x18\xE9a)\\V[P_Q` aC8_9_Q\x90_R\x90V[a\x19\x03a !V[3a\x19\r\x81a SV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19?\x90Ba?IV[`\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\x19{\x90\x84\x90a?\\V[\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` \x01[`@Q\x80\x91\x03\x90\xA2PPV[a\x19\xCBa%\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aCX_9_Q\x90_Ra\x19\xFB\x81a!xV[a\x14\x8Ca)\xA5V[a\x1A\x0Ba !V[3a\x1A\x15\x81a SV[a\x1A\x1E\x82a\x1FtV[\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\x19\xB7\x91\x90a>\x89V[\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` aCx_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\x1A\xF8\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\x1B\x1Da !V[`\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\x1BbW`@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\x1B\xAAW`@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\x1C\x1D\x91\x16\x84\x84a!\x82V[\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\x1Cl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\x1C\x82a !V[3a\x1C\x8C\x81a SV[a\x1C\x95\x84a\"XV[a\x1C\x9F\x85\x85a\"\x93V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xD1\x81\x85\x88a#\x0CV[\x82Q`@\x14a\x1C\xF3W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x1D\x01\x89a\x1A\xBBV[\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\x1D2\x88a#\xA1V[\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\x1D\x94\x94\x93\x92\x91\x90a@:V[`@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\x1D\xEFW`@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` aC\xB8_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1EfWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1E\x81WP0;\x15[\x90P\x81\x15\x80\x15a\x1E\x8FWP\x80\x15[\x15a\x1E\xADW`@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\x1E\xD7W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x1E\xE0\x86a)\xEDV[a\x1E\xE8a&\x0FV[a\x1E\xF0a)\xFEV[a\x1E\xFB\x89\x89\x89a*\xEFV[\x83\x15a\x1FAW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\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[PPPPPPPPPV[\x81a\x1FjW`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a+\x9AV[\x80Qa\x08\0\x81\x11\x15a\x11\xFBW`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xA3\x81a!xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1F\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[_a\x1F\xD5a\x1AWV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F\xFEWa\x1F\xF9\x83a+\xB6V[PPPV[a \x08_\x84a#\xC5V[a \x11\x83a+\xB6V[a \x1B_\x82a+\xF0V[PPPPV[_Q` aC\x98_9_Q\x90_RT`\xFF\x16\x15a QW`@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 \x84Wa \x84a>\xDAV[\x03a \xA2W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a \xB6Wa \xB6a>\xDAV[\x03a\x11\xFBW`@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!-WP\x83;\x15=\x17\x15[\x80a!qW`@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\x0CCV[PPPPPV[a\x14\x8C\x813a,iV[_`@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!\xCCWP\x82;\x15=\x17\x15[\x80a \x1BW`@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\x0CCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\":Wa\":a>\xDAV[\x14a\x14\x8CW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\"u\x82\x82a,\xA2V[\x15a\x11\xFBW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\"\x9F\x84a\x1A\xBBV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\"\xCFW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a\"\xDB\x83a#\xA1V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11\xFBW`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\x15\x82a,\xC3V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aB\xF4`$\x919\x90P_\x84\x82`@Q` \x01a#E\x92\x91\x90a@\xB7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a#`\x82a-*V[\x90Pa#}\x81\x85a#p\x88a.\x17V[a#xa.\x8EV[a/[V[a#\x99W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a\x1A\xF8\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a#\xCE\x82a\x0F5V[a#\xD7\x81a!xV[a \x1B\x83\x83a&'V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a$\nW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xF9\x82\x82a+\xF0V[a$\x1Ca0\nV[_Q` aC\x98_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$\xF9WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\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$\xED_Q` aC8_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xFB\x81a!xV[\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%{WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra%x\x91\x81\x01\x90a?\x1EV[`\x01[a%\xA3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC8_9_Q\x90_R\x81\x14a%\xD3W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[a\x1F\xF9\x83\x83a09V[3a%\xE6a\x1AWV[`\x01`\x01`\xA0\x1B\x03\x16\x14a QW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0CCV[a Qa0\x8EV[a&\x1Fa0\x8EV[a Qa0\xC4V[__Q` aCx_9_Q\x90_Ra&@\x84\x84a\x1A\x85V[a&\xBFW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua&u3\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\x0BLV[_\x91PPa\x0BLV[\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\x1F\xF9W_\x83\x83\x83\x81\x81\x10a'UWa'Ua@\xCBV[a'k\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa:\xA2V[\x90P_\x84\x84\x84\x81\x81\x10a'\x80Wa'\x80a@\xCBV[\x90P`@\x02\x01` \x01` \x81\x01\x90a'\x98\x91\x90a<\nV[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a'\xC1W`@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'\xF2Wa'\xF2a>\xDAV[\x03a(\x10W`@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(QWP`\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\x0CCV[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)\x13W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a)7\x91\x90a?\x1EV[\x81\x11\x15a)WW`@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 QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a)\xADa !V[_Q` aC\x98_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$UV[a)\xF5a0\x8EV[a\x14\x8C\x81a0\xE4V[_Q` aC\xB8_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a*/WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a*JWP0;\x15[\x90P\x81\x15\x80\x15a*XWP\x80\x15[\x15a*vW`@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*\xA0W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a!qW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\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\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a+\x16W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a+=W`@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\x15a+\x92W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a+\xA3\x82a\x0F5V[a+\xAC\x81a!xV[a \x1B\x83\x83a+\xF0V[a+\xBEa%\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a+\xE7W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[a\x14\x8C\x81a&\xC8V[__Q` aCx_9_Q\x90_Ra,\t\x84\x84a\x1A\x85V[\x15a&\xBFW_\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\x0BLV[a,s\x82\x82a\x1A\x85V[a\x11\xFBW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0CCV[\x80Q\x82Q_\x91\x14\x80\x15a,\xBCWP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` aC\x18_9_Q\x90_R\x91\x15\x90\x15\x16\x15a,\xE9WPPPV[\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\x1F\xF9W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a-G\x83a0\xECV[\x90P_Q` aC\x18_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a-nWa-na@\xDFV[\x84\x82\t\x90P\x82\x80a-\x81Wa-\x81a@\xDFV[\x82\x82\x08\x90P__a-\x91\x83a2\xF4V[\x92P\x90P[\x80a-\xFAW\x84\x80a-\xA9Wa-\xA9a@\xDFV[`\x01\x87\x08\x95P\x84\x80a-\xBDWa-\xBDa@\xDFV[\x86\x87\t\x92P\x84\x80a-\xD0Wa-\xD0a@\xDFV[\x86\x84\t\x92P\x84\x80a-\xE3Wa-\xE3a@\xDFV[\x84\x84\x08\x92Pa-\xF1\x83a2\xF4V[\x92P\x90Pa-\x96V[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\x15a.>WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aC\x18_9_Q\x90_R\x84` \x01Qa.o\x91\x90a@\xF3V[a.\x86\x90_Q` aC\x18_9_Q\x90_Ra?\\V[\x90R\x92\x91PPV[a.\xB5`@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\x80a/\xFEW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` aC\x98_9_Q\x90_RT`\xFF\x16a QW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0B\x82a3\xBCV[`@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\x15a0\x86Wa\x1F\xF9\x82\x82a4\x1FV[a\x11\xFBa4\x91V[_Q` aC\xB8_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a QW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0\xCCa0\x8EV[_Q` aC\x98_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a+\xBEa0\x8EV[__a0\xF7\x83a4\xB0V[\x80Q\x90\x91P`0\x81\x14a1\x0CWa1\x0CaA\x12V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a1%Wa1%a9JV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a1OW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a1\xBEW\x83`\x01a1i\x83\x86a?\\V[a1s\x91\x90a?\\V[\x81Q\x81\x10a1\x83Wa1\x83a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a1\xA0Wa1\xA0a@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a1TV[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\x15a2NW\x83\x81a1\xFA\x85\x88a?\\V[a2\x04\x91\x90a?IV[\x81Q\x81\x10a2\x14Wa2\x14a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a24Wa24a@\xCBV[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a1\xE6V[P_a2Y\x82a7\xFBV[\x90Pa\x01\0_Q` aC\x18_9_Q\x90_R_a2w\x86\x89a?\\V[\x90P_[\x81\x81\x10\x15a2\xE4W_\x88`\x01a2\x91\x84\x86a?\\V[a2\x9B\x91\x90a?\\V[\x81Q\x81\x10a2\xABWa2\xABa@\xCBV[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a2\xC3Wa2\xC3a@\xDFV[\x85\x87\t\x95P\x83\x80a2\xD6Wa2\xD6a@\xDFV[\x81\x87\x08\x95PP`\x01\x01a2{V[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` aC\x18_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\x83a3\x82W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a3\x9BWa3\x98\x83\x82a?\\V[\x92P[\x80\x80a3\xA9Wa3\xA9a@\xDFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a3\xF1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC8_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`@Qa4;\x91\x90aA&V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a4sW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a4xV[``\x91P[P\x91P\x91Pa4\x88\x85\x83\x83a8bV[\x95\x94PPPPPV[4\x15a QW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\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` \x01a4\xF0\x92\x91\x90a@\xB7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a5\x17\x92\x91\x90aA1V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a59\x91\x90aA[V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a5c\x90\x83\x90\x83\x90` \x01aAsV[`@\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\x15a5\xD2Wa5\xD2a9JV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a5\xFCW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a6\x13\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a6}W\x81\x81\x81Q\x81\x10a6BWa6Ba@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a6_Wa6_a@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a6'V[P_\x84`@Q` \x01a6\x92\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a7$W_\x83\x82\x81Q\x81\x10a6\xCBWa6\xCBa@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a6\xE8Wa6\xE8a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a7\t\x92\x91\x90aA\x97V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a6\xB0V[P\x86\x88\x87`@Q` \x01a7:\x93\x92\x91\x90aA\xBBV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a7h\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a7\x89\x8A`\xFF\x8D\x16a?\\V[\x81\x10\x15a7\xEAW\x82\x81\x81Q\x81\x10a7\xA2Wa7\xA2a@\xCBV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a7\xBC\x83\x8Da?IV[\x81Q\x81\x10a7\xCCWa7\xCCa@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a7|V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a8[W\x83\x81\x81Q\x81\x10a8\x1AWa8\x1Aa@\xCBV[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a82\x91\x90aA\xEEV[a8=\x90`\x02aB\xE8V[a8G\x91\x90aA\xEEV[a8Q\x90\x83a?IV[\x91P`\x01\x01a7\xFFV[P\x92\x91PPV[``\x82a8wWa8r\x82a8\xB7V[a,\xBCV[\x81Q\x15\x80\x15a8\x8EWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a8[W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0CCV[\x80Q\x15a8\xC7W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a8\xF0W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a,\xBCW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a9\x1DW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a93W__\xFD[a9<\x83a9\x07V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a9\x80Wa9\x80a9JV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a9\x96W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a9\xB8Wa9\xB8a9JV[`@\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\x15a9\xF6W__\xFD[a9\xFEa9^V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a9\x1DW__\xFD[____a\x01 \x85\x87\x03\x12\x15a::W__\xFD[a:D\x86\x86a9\x86V[\x93Pa:S\x86`\x80\x87\x01a9\xE6V[\x92Pa:b\x86`\xC0\x87\x01a9\xE6V[\x91Pa:qa\x01\0\x86\x01a:\x15V[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15a:\x8CW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a,\xBCW__\xFD[_` \x82\x84\x03\x12\x15a:\xB2W__\xFD[a,\xBC\x82a9\x07V[_` \x82\x84\x03\x12\x15a:\xCBW__\xFD[P5\x91\x90PV[_\x82`\x1F\x83\x01\x12a:\xE1W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a;\0Wa;\0a9JV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a;.Wa;.a9JV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a;EW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[______a\x01`\x87\x89\x03\x12\x15a;wW__\xFD[a;\x81\x88\x88a9\x86V[\x95Pa;\x90\x88`\x80\x89\x01a9\xE6V[\x94Pa;\x9F\x88`\xC0\x89\x01a9\xE6V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a;\xBAW__\xFD[a;\xC6\x89\x82\x8A\x01a:\xD2V[\x93PPa;\xD6a\x01 \x88\x01a:\x15V[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a;\xF1W__\xFD[a;\xFD\x89\x82\x8A\x01a:\xD2V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15a<\x1AW__\xFD[a,\xBC\x82a:\x15V[__`@\x83\x85\x03\x12\x15a<4W__\xFD[\x825\x91Pa<D` \x84\x01a9\x07V[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a<^W__\xFD[a<g\x83a9\x07V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x81W__\xFD[a<\x8D\x85\x82\x86\x01a:\xD2V[\x91PP\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a<\xABW__\xFD[a<\xB4\x86a9\x07V[\x94Pa<\xC2` \x87\x01a9\x07V[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xE3W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a<\xF3W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x08W__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15a=\x1CW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15a=@W__\xFD[a=J\x85\x85a9\x86V[\x92Pa=Y\x85`\x80\x86\x01a9\xE6V[\x91Pa=h\x85`\xC0\x86\x01a9\xE6V[\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a=\x81W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x96W__\xFD[a=\xA2\x84\x82\x85\x01a:\xD2V[\x94\x93PPPPV[_`\x80\x82\x84\x03\x12\x15a=\xBAW__\xFD[a,\xBC\x83\x83a9\x86V[__`@\x83\x85\x03\x12\x15a=\xD5W__\xFD[a=\xDE\x83a9\x07V[\x91Pa<D` \x84\x01a9\x07V[____a\x01 \x85\x87\x03\x12\x15a>\0W__\xFD[a>\n\x86\x86a9\x86V[\x93Pa>\x19\x86`\x80\x87\x01a9\xE6V[\x92Pa>(\x86`\xC0\x87\x01a9\xE6V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a>CW__\xFD[a>O\x87\x82\x88\x01a:\xD2V[\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,\xBC` \x83\x01\x84a>[V[____`\x80\x85\x87\x03\x12\x15a>\xAEW__\xFD[a>\xB7\x85a9\x07V[\x93Pa>\xC5` \x86\x01a9\x07V[\x92P`@\x85\x015\x91Pa:q``\x86\x01a9\x07V[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a?\x11WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a?.W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0BLWa\x0BLa?5V[\x81\x81\x03\x81\x81\x11\x15a\x0BLWa\x0BLa?5V[\x86Q\x81R` \x80\x88\x01Q\x90\x82\x01R`@\x80\x88\x01Q\x90\x82\x01R``\x80\x88\x01Q\x90\x82\x01R\x85Q`\x80\x82\x01R` \x86\x01Q`\xA0\x82\x01Ra\xFF\xFF\x85\x16`\xC0\x82\x01R\x83Q`\xE0\x82\x01R` \x84\x01Qa\x01\0\x82\x01Ra\x01`a\x01 \x82\x01R_a?\xD6a\x01`\x83\x01\x85a>[V[\x82\x81\x03a\x01@\x84\x01Ra?\xE9\x81\x85a>[V[\x99\x98PPPPPPPPPV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BLWa\x0BLa?5V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a@1Wa@1a?5V[`\x01\x01\x92\x91PPV[\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_a@\x96a\x01 \x83\x01\x84a>[V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a=\xA2a@\xC5\x83\x86a@\xA0V[\x84a@\xA0V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aA\rWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a,\xBC\x82\x84a@\xA0V[_aA<\x82\x85a@\xA0V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aAf\x82\x84a@\xA0V[_\x81R`\x01\x01\x93\x92PPPV[_aA~\x82\x85a@\xA0V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aA\xA2\x82\x85a@\xA0V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aA\xC6\x82\x86a@\xA0V[`\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[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0BLWa\x0BLa?5V[`\x01\x81[`\x01\x84\x11\x15aB@W\x80\x85\x04\x81\x11\x15aB$WaB$a?5V[`\x01\x84\x16\x15aB2W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aB\tV[\x93P\x93\x91PPV[_\x82aBVWP`\x01a\x0BLV[\x81aBbWP_a\x0BLV[\x81`\x01\x81\x14aBxW`\x02\x81\x14aB\x82WaB\x9EV[`\x01\x91PPa\x0BLV[`\xFF\x84\x11\x15aB\x93WaB\x93a?5V[PP`\x01\x82\x1Ba\x0BLV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aB\xC1WP\x81\x81\na\x0BLV[aB\xCD_\x19\x84\x84aB\x05V[\x80_\x19\x04\x82\x11\x15aB\xE0WaB\xE0a?5V[\x02\x93\x92PPPV[_a,\xBC\x83\x83aBHV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\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\x1C\0\n",
3797    );
3798    /// The runtime bytecode of the contract, as deployed on the network.
3799    ///
3800    /// ```text
3801    ///0x608060405260043610610366575f3560e01c806372e9c934116101c8578063b5700e68116100fd578063d9cc7d261161009d578063e63ab1e91161006d578063e63ab1e914610a7b578063f2fde38b14610a9b578063fa52c7d814610aba578063fc0c546a14610afd575f5ffd5b8063d9cc7d2614610a1c578063e3f237e614610a31578063e4d1fb9414610a50578063e62977f814610a66575f5ffd5b8063bd49c35f116100d8578063bd49c35f14610993578063be203094146109a8578063c64814dd146109c7578063d547741f146109fd575f5ffd5b8063b5700e6814610905578063b5ecb34414610924578063bb60bfb01461094f575f5ffd5b80639ffb6b4311610168578063a3066aab11610143578063a3066aab1461085c578063ac5c2ad01461087b578063ad3cb1cc1461089a578063b3e6ebd5146108d7575f5ffd5b80639ffb6b43146107a4578063a217fddf146107f7578063a2d78dd51461080a575f5ffd5b80638da5cb5b116101a35780638da5cb5b1461072557806391d14854146107515780639b30a5e6146107705780639e9a8f311461078f575f5ffd5b806372e9c934146106dd5780638456cb59146106f2578063870c8f2614610706575f5ffd5b80633e732eba1161029e57806352d1902d1161023e5780635f8754a6116102195780635f8754a6146106595780636a911ccf146106875780636ad28e9f1461069b578063715018a6146106c9575f5ffd5b806352d1902d146106085780635544c2f11461061c5780635c975abb14610636575f5ffd5b80633f4ba83a116102795780633f4ba83a146105a35780634d99dd16146105b75780634f1ef286146105d657806352780b6e146105e9575f5ffd5b80633e732eba146105435780633e9df9b5146105625780633f3bb36614610576575f5ffd5b80632b9e5c8a116103095780632fe28759116102e45780632fe28759146104d157806336568abe146104e6578063394b348f146105055780633b2b7ffa14610524575f5ffd5b80632b9e5c8a146104745780632dc9bac6146104935780632f2ff15d146104b2575f5ffd5b806313b9057a1161034457806313b9057a146103ea5780631a20cd63146104095780632140fecd14610428578063248a9ca314610447575f5ffd5b806301ffc9a71461036a578063026e402b1461039e5780630d8e6e2c146103bf575b5f5ffd5b348015610375575f5ffd5b506103896103843660046138e0565b610b1c565b60405190151581526020015b60405180910390f35b3480156103a9575f5ffd5b506103bd6103b8366004613922565b610b52565b005b3480156103ca575f5ffd5b5060408051600281525f6020820181905291810191909152606001610395565b3480156103f5575f5ffd5b506103bd610404366004613a26565b610d38565b348015610414575f5ffd5b506103bd610423366004613a7c565b610d51565b348015610433575f5ffd5b506103bd610442366004613aa2565b610de5565b348015610452575f5ffd5b50610466610461366004613abb565b610f35565b604051908152602001610395565b34801561047f575f5ffd5b506103bd61048e366004613b61565b610f55565b34801561049e575f5ffd5b506103bd6104ad366004613c0a565b611169565b3480156104bd575f5ffd5b506103bd6104cc366004613c23565b6111ed565b3480156104dc575f5ffd5b5061046661080081565b3480156104f1575f5ffd5b506103bd610500366004613c23565b611209565b348015610510575f5ffd5b506103bd61051f366004613abb565b611231565b34801561052f575f5ffd5b506103bd61053e366004613c0a565b6112a0565b34801561054e575f5ffd5b506103bd61055d366004613abb565b61140c565b34801561056d575f5ffd5b506104665f5481565b348015610581575f5ffd5b50600a546105909061ffff1681565b60405161ffff9091168152602001610395565b3480156105ae575f5ffd5b506103bd61146d565b3480156105c2575f5ffd5b506103bd6105d1366004613922565b61148f565b6103bd6105e4366004613c4d565b611700565b3480156105f4575f5ffd5b506103bd610603366004613c97565b61171b565b348015610613575f5ffd5b506104666118e0565b348015610627575f5ffd5b506103bd610404366004613d2d565b348015610641575f5ffd5b505f5160206143985f395f51905f525460ff16610389565b348015610664575f5ffd5b50610389610673366004613abb565b600e6020525f908152604090205460ff1681565b348015610692575f5ffd5b506103bd6118fb565b3480156106a6575f5ffd5b506106b16202a30081565b6040516001600160401b039091168152602001610395565b3480156106d4575f5ffd5b506103bd6119c3565b3480156106e8575f5ffd5b50610466600c5481565b3480156106fd575f5ffd5b506103bd6119e4565b348015610711575f5ffd5b506103bd610720366004613d71565b611a03565b348015610730575f5ffd5b50610739611a57565b6040516001600160a01b039091168152602001610395565b34801561075c575f5ffd5b5061038961076b366004613c23565b611a85565b34801561077b575f5ffd5b5061046661078a366004613daa565b611abb565b34801561079a575f5ffd5b5061046660085481565b3480156107af575f5ffd5b506107dd6107be366004613aa2565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff9093168352602083019190915201610395565b348015610802575f5ffd5b506104665f81565b348015610815575f5ffd5b50610847610824366004613dc4565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610395565b348015610867575f5ffd5b506103bd610876366004613aa2565b611b15565b348015610886575f5ffd5b506103bd610895366004613dec565b611c7a565b3480156108a5575f5ffd5b506108ca604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103959190613e89565b3480156108e2575f5ffd5b506103896108f1366004613abb565b60046020525f908152604090205460ff1681565b348015610910575f5ffd5b50600154610739906001600160a01b031681565b34801561092f575f5ffd5b5061046661093e366004613aa2565b60056020525f908152604090205481565b34801561095a575f5ffd5b5061096e610969366004613dc4565b611da4565b604080516001600160401b039094168452602084019290925290820152606001610395565b34801561099e575f5ffd5b50610466600b5481565b3480156109b3575f5ffd5b506103bd6109c2366004613e9b565b611e35565b3480156109d2575f5ffd5b506104666109e1366004613dc4565b600660209081525f928352604080842090915290825290205481565b348015610a08575f5ffd5b506103bd610a17366004613c23565b611f4c565b348015610a27575f5ffd5b5061046660095481565b348015610a3c575f5ffd5b506103bd610a4b366004613d71565b611f74565b348015610a5b575f5ffd5b506106b16212750081565b348015610a71575f5ffd5b5061059061271081565b348015610a86575f5ffd5b506104665f5160206143585f395f51905f5281565b348015610aa6575f5ffd5b506103bd610ab5366004613aa2565b611f99565b348015610ac5575f5ffd5b50610aef610ad4366004613aa2565b60036020525f90815260409020805460019091015460ff1682565b604051610395929190613eee565b348015610b08575f5ffd5b50600254610739906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610b4c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b5a612021565b610b6382612053565b335f829003610b8557604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ba857604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613f1e565b905082811015610c4c5760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610c64906001600160a01b03168330866120d4565b6001600160a01b0384165f9081526003602052604081208054859290610c8b908490613f49565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610cc6908490613f49565b9250508190555082600b5f828254610cde9190613f49565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610d2a91815260200190565b60405180910390a350505050565b60405163c2d7f81360e01b815260040160405180910390fd5b5f610d5b81612178565b6202a3006001600160401b0383161080610d805750621275006001600160401b038316115b15610d9e5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b610ded612021565b6001600160a01b0381165f908152600560205260408120543391819003610e27576040516379298a5360e11b815260040160405180910390fd5b80421015610e4857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610e9057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610ed4908490613f5c565b9091555050600254610ef0906001600160a01b03168483612182565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610d2a91815260200190565b5f9081525f5160206143785f395f51905f52602052604090206001015490565b610f5d612021565b33610f678161220b565b610f7086612258565b610f7a8787612293565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610fac81878a61230c565b8451604014610fce57604051634247068760e01b815260040160405180910390fd5b61271061ffff85161115610ff55760405163dc81db8560e01b815260040160405180910390fd5b610ffe83611f74565b600160045f61100c8b611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61103d8a6123a1565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f81526020016001600281111561108457611084613eda565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156110ca576110ca613eda565b02179055505060408051808201825261ffff87811682525f60208084018281526001600160a01b038916808452600d909252918590209351845461ffff191693169290921783555160019092019190915590519091507f26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b26848990611157908b908b9089908c908c908b90613f6f565b60405180910390a25050505050505050565b5f61117381612178565b5f8261ffff1611801561118c575061271061ffff831611155b6111a95760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001610dd9565b816111ff576111fb81611f99565b5050565b6111fb82826123c5565b8161122757604051638b78631d60e01b815260040160405180910390fd5b6111fb82826123e1565b5f61123b81612178565b5f8211801561124e57506301e133808211155b61126b5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610dd9565b6112a8612021565b336112b281612053565b61271061ffff831611156112d95760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff90811690841681900361131b57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff1611156113a757600182015480158061134957506009546113459082613f49565b4210155b611366576040516316eb94cb60e01b815260040160405180910390fd5b600a546113779061ffff1683613ff6565b61ffff168561ffff16111561139f576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f61141681612178565b60018210156114385760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001610dd9565b5f5160206143585f395f51905f5261148481612178565b61148c612414565b50565b611497612021565b6114a082612053565b335f8290036114c257604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156115055760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561154e57604051639266535160e01b815260048101829052602401610c43565b600f80545f916001600160401b03909116908261156a83614010565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e39190613f5c565b90915550506008545f906115f79042613f49565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611687908490613f5c565b9250508190555084600b5f82825461169f9190613f5c565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611708612473565b61171182612517565b6111fb8282612521565b6117236125dd565b5f5160206143b85f395f51905f52805460029190600160401b900460ff1680611759575080546001600160401b03808416911610155b156117775760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b0386166117bf5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166117e65760405163d92e233d60e01b815260040160405180910390fd5b6117ee61260f565b6117f6612617565b61180d5f5160206143585f395f51905f5288612627565b506118185f87612627565b505f611822611a57565b9050806001600160a01b0316876001600160a01b03161461184657611846876126c8565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c556118868585612738565b61188f866128cd565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b5f6118e961295c565b505f5160206143385f395f51905f5290565b611903612021565b3361190d81612053565b6001600160a01b0381165f908152600360205260408120600101805460ff1916600217905560085461193f9042613f49565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b8054939450909290919061197b908490613f5c565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab906020015b60405180910390a25050565b6119cb6125dd565b6040516317d5c96560e11b815260040160405180910390fd5b5f5160206143585f395f51905f526119fb81612178565b61148c6129a5565b611a0b612021565b33611a1581612053565b611a1e82611f74565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516119b79190613e89565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f5160206143785f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611af8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b611b1d612021565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b6257604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611baa57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691611c1d91168484612182565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a852285604051611c6c91815260200190565b60405180910390a450505050565b611c82612021565b33611c8c81612053565b611c9584612258565b611c9f8585612293565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cd181858861230c565b8251604014611cf357604051634247068760e01b815260040160405180910390fd5b600160045f611d0189611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611d32886123a1565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051611d94949392919061403a565b60405180910390a2505050505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054829182918203611def57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f5160206143b85f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611e665750825b90505f826001600160401b03166001148015611e815750303b155b905081158015611e8f575080155b15611ead5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ed757845460ff60401b1916600160401b1785555b611ee0866129ed565b611ee861260f565b611ef06129fe565b611efb898989612aef565b8315611f4157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b81611f6a5760405163b0b5fb9960e01b815260040160405180910390fd5b6111fb8282612b9a565b80516108008111156111fb5760405163239ff57f60e01b815260040160405180910390fd5b5f611fa381612178565b6001600160a01b038216611fcc57604051631e4fbdf760e01b81525f6004820152602401610c43565b5f611fd5611a57565b9050826001600160a01b0316816001600160a01b031603611ffe57611ff983612bb6565b505050565b6120085f846123c5565b61201183612bb6565b61201b5f82612bf0565b50505050565b5f5160206143985f395f51905f525460ff16156120515760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff169081600281111561208457612084613eda565b036120a25760405163508a793f60e01b815260040160405180910390fd5b60028160028111156120b6576120b6613eda565b036111fb5760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561212d5750833b153d17155b806121715760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610c43565b5050505050565b61148c8133612c69565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156121cc5750823b153d17155b8061201b5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610c43565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561223a5761223a613eda565b1461148c5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526122758282612ca2565b156111fb576040516306cf438f60e01b815260040160405180910390fd5b60045f61229f84611abb565b815260208101919091526040015f205460ff16156122cf5760405162da8a5760e11b815260040160405180910390fd5b600e5f6122db836123a1565b815260208101919091526040015f205460ff16156111fb5760405163ae493b0360e01b815260040160405180910390fd5b61231582612cc3565b5f6040518060600160405280602481526020016142f46024913990505f84826040516020016123459291906140b7565b60405160208183030381529060405290505f61236082612d2a565b905061237d818561237088612e17565b612378612e8e565b612f5b565b6123995760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611af8929190918252602082015260400190565b6123ce82610f35565b6123d781612178565b61201b8383612627565b6001600160a01b038116331461240a5760405163334bd91960e11b815260040160405180910390fd5b611ff98282612bf0565b61241c61300a565b5f5160206143985f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806124f957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124ed5f5160206143385f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156120515760405163703e46dd60e11b815260040160405180910390fd5b5f6111fb81612178565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561257b575060408051601f3d908101601f1916820190925261257891810190613f1e565b60015b6125a357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c43565b5f5160206143385f395f51905f5281146125d357604051632a87526960e21b815260048101829052602401610c43565b611ff98383613039565b336125e6611a57565b6001600160a01b0316146120515760405163118cdaa760e01b8152336004820152602401610c43565b61205161308e565b61261f61308e565b6120516130c4565b5f5f5160206143785f395f51905f526126408484611a85565b6126bf575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556126753390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b4c565b5f915050610b4c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015611ff9575f838383818110612755576127556140cb565b61276b9260206040909202019081019150613aa2565b90505f848484818110612780576127806140cb565b90506040020160200160208101906127989190613c0a565b905061271061ffff821611156127c15760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156127f2576127f2613eda565b036128105760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d602052604090206001015415801561285157506001600160a01b0383165f908152600d602052604090205461ffff16155b839061287c5760405163050814e160e41b81526001600160a01b039091166004820152602401610c43565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff1916921691909117815590516001918201550161273a565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612913573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190613f1e565b81111561295757604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120515760405163703e46dd60e11b815260040160405180910390fd5b6129ad612021565b5f5160206143985f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612455565b6129f561308e565b61148c816130e4565b5f5160206143b85f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015612a2f5750825b90505f826001600160401b03166001148015612a4a5750303b155b905081158015612a58575080155b15612a765760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612aa057845460ff60401b1916600160401b1785555b435f55831561217157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b038316612b165760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216612b3d5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a30080821015612b925760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b612ba382610f35565b612bac81612178565b61201b8383612bf0565b612bbe6125dd565b6001600160a01b038116612be757604051631e4fbdf760e01b81525f6004820152602401610c43565b61148c816126c8565b5f5f5160206143785f395f51905f52612c098484611a85565b156126bf575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b4c565b612c738282611a85565b6111fb5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c43565b805182515f91148015612cbc575081602001518360200151145b9392505050565b805160208201515f915f5160206143185f395f51905f52911590151615612ce957505050565b825160208401518260038485858609850908838283091483821084841016169350505081611ff95760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612d47836130ec565b90505f5160206143185f395f51905f5260035f8284850990508280612d6e57612d6e6140df565b84820990508280612d8157612d816140df565b82820890505f5f612d91836132f4565b925090505b80612dfa578480612da957612da96140df565b6001870895508480612dbd57612dbd6140df565b86870992508480612dd057612dd06140df565b86840992508480612de357612de36140df565b8484089250612df1836132f4565b92509050612d96565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612e3e575090565b6040518060400160405280835f015181526020015f5160206143185f395f51905f528460200151612e6f91906140f3565b612e86905f5160206143185f395f51905f52613f5c565b905292915050565b612eb560405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080612ffe5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f5160206143985f395f51905f525460ff1661205157604051638dfc202b60e01b815260040160405180910390fd5b613042826133bc565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561308657611ff9828261341f565b6111fb613491565b5f5160206143b85f395f51905f5254600160401b900460ff1661205157604051631afcd79f60e31b815260040160405180910390fd5b6130cc61308e565b5f5160206143985f395f51905f52805460ff19169055565b612bbe61308e565b5f5f6130f7836134b0565b80519091506030811461310c5761310c614112565b5f816001600160401b038111156131255761312561394a565b6040519080825280601f01601f19166020018201604052801561314f576020820181803683370190505b5090505f5b828110156131be578360016131698386613f5c565b6131739190613f5c565b81518110613183576131836140cb565b602001015160f81c60f81b8282815181106131a0576131a06140cb565b60200101906001600160f81b03191690815f1a905350600101613154565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b8281101561324e5783816131fa8588613f5c565b6132049190613f49565b81518110613214576132146140cb565b602001015160f81c60f81b60f81c828281518110613234576132346140cb565b60ff909216602092830291909101909101526001016131e6565b505f613259826137fb565b90506101005f5160206143185f395f51905f525f6132778689613f5c565b90505f5b818110156132e4575f8860016132918486613f5c565b61329b9190613f5c565b815181106132ab576132ab6140cb565b016020015160f81c905083806132c3576132c36140df565b858709955083806132d6576132d66140df565b81870895505060010161327b565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206143185f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361338257604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b111561339b576133988382613f5c565b92505b80806133a9576133a96140df565b8384099690961496919550909350505050565b806001600160a01b03163b5f036133f157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c43565b5f5160206143385f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161343b9190614126565b5f60405180830381855af49150503d805f8114613473576040519150601f19603f3d011682016040523d82523d5f602084013e613478565b606091505b5091509150613488858383613862565b95945050505050565b34156120515760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f908460208201818036833701905050905080866040516020016134f09291906140b7565b6040516020818303038152906040529050808460f81b604051602001613517929190614131565b604051602081830303815290604052905080604051602001613539919061415b565b60408051601f1981840301815290829052915061010160f01b906135639083908390602001614173565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b038111156135d2576135d261394a565b6040519080825280601f01601f1916602001820160405280156135fc576020820181803683370190505b5090505f8260405160200161361391815260200190565b60408051601f1981840301815291905290505f5b815181101561367d57818181518110613642576136426140cb565b602001015160f81c60f81b83828151811061365f5761365f6140cb565b60200101906001600160f81b03191690815f1a905350600101613627565b505f8460405160200161369291815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613724575f8382815181106136cb576136cb6140cb565b602001015160f81c60f81b8383815181106136e8576136e86140cb565b602001015160f81c60f81b1890508881604051602001613709929190614197565b60408051601f198184030181529190529850506001016136b0565b5086888760405160200161373a939291906141bb565b6040516020818303038152906040529650868051906020012093508360405160200161376891815260200190565b60408051601f1981840301815291905291505f5b6137898a60ff8d16613f5c565b8110156137ea578281815181106137a2576137a26140cb565b01602001516001600160f81b031916846137bc838d613f49565b815181106137cc576137cc6140cb565b60200101906001600160f81b03191690815f1a90535060010161377c565b50919b9a5050505050505050505050565b5f80805b835181101561385b5783818151811061381a5761381a6140cb565b602002602001015160ff1681600861383291906141ee565b61383d9060026142e8565b61384791906141ee565b6138519083613f49565b91506001016137ff565b5092915050565b60608261387757613872826138b7565b612cbc565b815115801561388e57506001600160a01b0384163b155b1561385b57604051639996b31560e01b81526001600160a01b0385166004820152602401610c43565b8051156138c75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156138f0575f5ffd5b81356001600160e01b031981168114612cbc575f5ffd5b80356001600160a01b038116811461391d575f5ffd5b919050565b5f5f60408385031215613933575f5ffd5b61393c83613907565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156139805761398061394a565b60405290565b5f60808284031215613996575f5ffd5b604051608081016001600160401b03811182821017156139b8576139b861394a565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156139f6575f5ffd5b6139fe61395e565b823581526020928301359281019290925250919050565b803561ffff8116811461391d575f5ffd5b5f5f5f5f6101208587031215613a3a575f5ffd5b613a448686613986565b9350613a5386608087016139e6565b9250613a628660c087016139e6565b9150613a716101008601613a15565b905092959194509250565b5f60208284031215613a8c575f5ffd5b81356001600160401b0381168114612cbc575f5ffd5b5f60208284031215613ab2575f5ffd5b612cbc82613907565b5f60208284031215613acb575f5ffd5b5035919050565b5f82601f830112613ae1575f5ffd5b8135602083015f5f6001600160401b03841115613b0057613b0061394a565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613b2e57613b2e61394a565b604052838152905080828401871015613b45575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f5f5f5f5f6101608789031215613b77575f5ffd5b613b818888613986565b9550613b9088608089016139e6565b9450613b9f8860c089016139e6565b93506101008701356001600160401b03811115613bba575f5ffd5b613bc689828a01613ad2565b935050613bd66101208801613a15565b91506101408701356001600160401b03811115613bf1575f5ffd5b613bfd89828a01613ad2565b9150509295509295509295565b5f60208284031215613c1a575f5ffd5b612cbc82613a15565b5f5f60408385031215613c34575f5ffd5b82359150613c4460208401613907565b90509250929050565b5f5f60408385031215613c5e575f5ffd5b613c6783613907565b915060208301356001600160401b03811115613c81575f5ffd5b613c8d85828601613ad2565b9150509250929050565b5f5f5f5f5f60808688031215613cab575f5ffd5b613cb486613907565b9450613cc260208701613907565b93506040860135925060608601356001600160401b03811115613ce3575f5ffd5b8601601f81018813613cf3575f5ffd5b80356001600160401b03811115613d08575f5ffd5b8860208260061b8401011115613d1c575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215613d40575f5ffd5b613d4a8585613986565b9250613d5985608086016139e6565b9150613d688560c086016139e6565b90509250925092565b5f60208284031215613d81575f5ffd5b81356001600160401b03811115613d96575f5ffd5b613da284828501613ad2565b949350505050565b5f60808284031215613dba575f5ffd5b612cbc8383613986565b5f5f60408385031215613dd5575f5ffd5b613dde83613907565b9150613c4460208401613907565b5f5f5f5f6101208587031215613e00575f5ffd5b613e0a8686613986565b9350613e1986608087016139e6565b9250613e288660c087016139e6565b91506101008501356001600160401b03811115613e43575f5ffd5b613e4f87828801613ad2565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612cbc6020830184613e5b565b5f5f5f5f60808587031215613eae575f5ffd5b613eb785613907565b9350613ec560208601613907565b925060408501359150613a7160608601613907565b634e487b7160e01b5f52602160045260245ffd5b8281526040810160038310613f1157634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613f2e575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4c57610b4c613f35565b81810381811115610b4c57610b4c613f35565b8651815260208088015190820152604080880151908201526060808801519082015285516080820152602086015160a082015261ffff851660c0820152835160e082015260208401516101008201526101606101208201525f613fd6610160830185613e5b565b828103610140840152613fe98185613e5b565b9998505050505050505050565b61ffff8181168382160190811115610b4c57610b4c613f35565b5f6001600160401b0382166001600160401b03810361403157614031613f35565b60010192915050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f614096610120830184613e5b565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f613da26140c583866140a0565b846140a0565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261410d57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f612cbc82846140a0565b5f61413c82856140a0565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61416682846140a0565b5f81526001019392505050565b5f61417e82856140a0565b6001600160f01b03199390931683525050600201919050565b5f6141a282856140a0565b6001600160f81b03199390931683525050600101919050565b5f6141c682866140a0565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610b4c57610b4c613f35565b6001815b60018411156142405780850481111561422457614224613f35565b600184161561423257908102905b60019390931c928002614209565b935093915050565b5f8261425657506001610b4c565b8161426257505f610b4c565b816001811461427857600281146142825761429e565b6001915050610b4c565b60ff84111561429357614293613f35565b50506001821b610b4c565b5060208310610133831016604e8410600b84101617156142c1575081810a610b4c565b6142cd5f198484614205565b805f19048211156142e0576142e0613f35565b029392505050565b5f612cbc838361424856fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3802    /// ```
3803    #[rustfmt::skip]
3804    #[allow(clippy::all)]
3805    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3806        b"`\x80`@R`\x046\x10a\x03fW_5`\xE0\x1C\x80cr\xE9\xC94\x11a\x01\xC8W\x80c\xB5p\x0Eh\x11a\0\xFDW\x80c\xD9\xCC}&\x11a\0\x9DW\x80c\xE6:\xB1\xE9\x11a\0mW\x80c\xE6:\xB1\xE9\x14a\n{W\x80c\xF2\xFD\xE3\x8B\x14a\n\x9BW\x80c\xFAR\xC7\xD8\x14a\n\xBAW\x80c\xFC\x0CTj\x14a\n\xFDW__\xFD[\x80c\xD9\xCC}&\x14a\n\x1CW\x80c\xE3\xF27\xE6\x14a\n1W\x80c\xE4\xD1\xFB\x94\x14a\nPW\x80c\xE6)w\xF8\x14a\nfW__\xFD[\x80c\xBDI\xC3_\x11a\0\xD8W\x80c\xBDI\xC3_\x14a\t\x93W\x80c\xBE 0\x94\x14a\t\xA8W\x80c\xC6H\x14\xDD\x14a\t\xC7W\x80c\xD5Gt\x1F\x14a\t\xFDW__\xFD[\x80c\xB5p\x0Eh\x14a\t\x05W\x80c\xB5\xEC\xB3D\x14a\t$W\x80c\xBB`\xBF\xB0\x14a\tOW__\xFD[\x80c\x9F\xFBkC\x11a\x01hW\x80c\xA3\x06j\xAB\x11a\x01CW\x80c\xA3\x06j\xAB\x14a\x08\\W\x80c\xAC\\*\xD0\x14a\x08{W\x80c\xAD<\xB1\xCC\x14a\x08\x9AW\x80c\xB3\xE6\xEB\xD5\x14a\x08\xD7W__\xFD[\x80c\x9F\xFBkC\x14a\x07\xA4W\x80c\xA2\x17\xFD\xDF\x14a\x07\xF7W\x80c\xA2\xD7\x8D\xD5\x14a\x08\nW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\xA3W\x80c\x8D\xA5\xCB[\x14a\x07%W\x80c\x91\xD1HT\x14a\x07QW\x80c\x9B0\xA5\xE6\x14a\x07pW\x80c\x9E\x9A\x8F1\x14a\x07\x8FW__\xFD[\x80cr\xE9\xC94\x14a\x06\xDDW\x80c\x84V\xCBY\x14a\x06\xF2W\x80c\x87\x0C\x8F&\x14a\x07\x06W__\xFD[\x80c>s.\xBA\x11a\x02\x9EW\x80cR\xD1\x90-\x11a\x02>W\x80c_\x87T\xA6\x11a\x02\x19W\x80c_\x87T\xA6\x14a\x06YW\x80cj\x91\x1C\xCF\x14a\x06\x87W\x80cj\xD2\x8E\x9F\x14a\x06\x9BW\x80cqP\x18\xA6\x14a\x06\xC9W__\xFD[\x80cR\xD1\x90-\x14a\x06\x08W\x80cUD\xC2\xF1\x14a\x06\x1CW\x80c\\\x97Z\xBB\x14a\x066W__\xFD[\x80c?K\xA8:\x11a\x02yW\x80c?K\xA8:\x14a\x05\xA3W\x80cM\x99\xDD\x16\x14a\x05\xB7W\x80cO\x1E\xF2\x86\x14a\x05\xD6W\x80cRx\x0Bn\x14a\x05\xE9W__\xFD[\x80c>s.\xBA\x14a\x05CW\x80c>\x9D\xF9\xB5\x14a\x05bW\x80c?;\xB3f\x14a\x05vW__\xFD[\x80c+\x9E\\\x8A\x11a\x03\tW\x80c/\xE2\x87Y\x11a\x02\xE4W\x80c/\xE2\x87Y\x14a\x04\xD1W\x80c6V\x8A\xBE\x14a\x04\xE6W\x80c9K4\x8F\x14a\x05\x05W\x80c;+\x7F\xFA\x14a\x05$W__\xFD[\x80c+\x9E\\\x8A\x14a\x04tW\x80c-\xC9\xBA\xC6\x14a\x04\x93W\x80c//\xF1]\x14a\x04\xB2W__\xFD[\x80c\x13\xB9\x05z\x11a\x03DW\x80c\x13\xB9\x05z\x14a\x03\xEAW\x80c\x1A \xCDc\x14a\x04\tW\x80c!@\xFE\xCD\x14a\x04(W\x80c$\x8A\x9C\xA3\x14a\x04GW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03jW\x80c\x02n@+\x14a\x03\x9EW\x80c\r\x8En,\x14a\x03\xBFW[__\xFD[4\x80\x15a\x03uW__\xFD[Pa\x03\x89a\x03\x846`\x04a8\xE0V[a\x0B\x1CV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x03\xA9W__\xFD[Pa\x03\xBDa\x03\xB86`\x04a9\"V[a\x0BRV[\0[4\x80\x15a\x03\xCAW__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\x95V[4\x80\x15a\x03\xF5W__\xFD[Pa\x03\xBDa\x04\x046`\x04a:&V[a\r8V[4\x80\x15a\x04\x14W__\xFD[Pa\x03\xBDa\x04#6`\x04a:|V[a\rQV[4\x80\x15a\x043W__\xFD[Pa\x03\xBDa\x04B6`\x04a:\xA2V[a\r\xE5V[4\x80\x15a\x04RW__\xFD[Pa\x04fa\x04a6`\x04a:\xBBV[a\x0F5V[`@Q\x90\x81R` \x01a\x03\x95V[4\x80\x15a\x04\x7FW__\xFD[Pa\x03\xBDa\x04\x8E6`\x04a;aV[a\x0FUV[4\x80\x15a\x04\x9EW__\xFD[Pa\x03\xBDa\x04\xAD6`\x04a<\nV[a\x11iV[4\x80\x15a\x04\xBDW__\xFD[Pa\x03\xBDa\x04\xCC6`\x04a<#V[a\x11\xEDV[4\x80\x15a\x04\xDCW__\xFD[Pa\x04fa\x08\0\x81V[4\x80\x15a\x04\xF1W__\xFD[Pa\x03\xBDa\x05\x006`\x04a<#V[a\x12\tV[4\x80\x15a\x05\x10W__\xFD[Pa\x03\xBDa\x05\x1F6`\x04a:\xBBV[a\x121V[4\x80\x15a\x05/W__\xFD[Pa\x03\xBDa\x05>6`\x04a<\nV[a\x12\xA0V[4\x80\x15a\x05NW__\xFD[Pa\x03\xBDa\x05]6`\x04a:\xBBV[a\x14\x0CV[4\x80\x15a\x05mW__\xFD[Pa\x04f_T\x81V[4\x80\x15a\x05\x81W__\xFD[P`\nTa\x05\x90\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x05\xAEW__\xFD[Pa\x03\xBDa\x14mV[4\x80\x15a\x05\xC2W__\xFD[Pa\x03\xBDa\x05\xD16`\x04a9\"V[a\x14\x8FV[a\x03\xBDa\x05\xE46`\x04a<MV[a\x17\0V[4\x80\x15a\x05\xF4W__\xFD[Pa\x03\xBDa\x06\x036`\x04a<\x97V[a\x17\x1BV[4\x80\x15a\x06\x13W__\xFD[Pa\x04fa\x18\xE0V[4\x80\x15a\x06'W__\xFD[Pa\x03\xBDa\x04\x046`\x04a=-V[4\x80\x15a\x06AW__\xFD[P_Q` aC\x98_9_Q\x90_RT`\xFF\x16a\x03\x89V[4\x80\x15a\x06dW__\xFD[Pa\x03\x89a\x06s6`\x04a:\xBBV[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x06\x92W__\xFD[Pa\x03\xBDa\x18\xFBV[4\x80\x15a\x06\xA6W__\xFD[Pa\x06\xB1b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x06\xD4W__\xFD[Pa\x03\xBDa\x19\xC3V[4\x80\x15a\x06\xE8W__\xFD[Pa\x04f`\x0CT\x81V[4\x80\x15a\x06\xFDW__\xFD[Pa\x03\xBDa\x19\xE4V[4\x80\x15a\x07\x11W__\xFD[Pa\x03\xBDa\x07 6`\x04a=qV[a\x1A\x03V[4\x80\x15a\x070W__\xFD[Pa\x079a\x1AWV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x07\\W__\xFD[Pa\x03\x89a\x07k6`\x04a<#V[a\x1A\x85V[4\x80\x15a\x07{W__\xFD[Pa\x04fa\x07\x8A6`\x04a=\xAAV[a\x1A\xBBV[4\x80\x15a\x07\x9AW__\xFD[Pa\x04f`\x08T\x81V[4\x80\x15a\x07\xAFW__\xFD[Pa\x07\xDDa\x07\xBE6`\x04a:\xA2V[`\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\x95V[4\x80\x15a\x08\x02W__\xFD[Pa\x04f_\x81V[4\x80\x15a\x08\x15W__\xFD[Pa\x08Ga\x08$6`\x04a=\xC4V[`\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\x95V[4\x80\x15a\x08gW__\xFD[Pa\x03\xBDa\x08v6`\x04a:\xA2V[a\x1B\x15V[4\x80\x15a\x08\x86W__\xFD[Pa\x03\xBDa\x08\x956`\x04a=\xECV[a\x1CzV[4\x80\x15a\x08\xA5W__\xFD[Pa\x08\xCA`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\x95\x91\x90a>\x89V[4\x80\x15a\x08\xE2W__\xFD[Pa\x03\x89a\x08\xF16`\x04a:\xBBV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\t\x10W__\xFD[P`\x01Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\t/W__\xFD[Pa\x04fa\t>6`\x04a:\xA2V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\tZW__\xFD[Pa\tna\ti6`\x04a=\xC4V[a\x1D\xA4V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\x95V[4\x80\x15a\t\x9EW__\xFD[Pa\x04f`\x0BT\x81V[4\x80\x15a\t\xB3W__\xFD[Pa\x03\xBDa\t\xC26`\x04a>\x9BV[a\x1E5V[4\x80\x15a\t\xD2W__\xFD[Pa\x04fa\t\xE16`\x04a=\xC4V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\n\x08W__\xFD[Pa\x03\xBDa\n\x176`\x04a<#V[a\x1FLV[4\x80\x15a\n'W__\xFD[Pa\x04f`\tT\x81V[4\x80\x15a\n<W__\xFD[Pa\x03\xBDa\nK6`\x04a=qV[a\x1FtV[4\x80\x15a\n[W__\xFD[Pa\x06\xB1b\x12u\0\x81V[4\x80\x15a\nqW__\xFD[Pa\x05\x90a'\x10\x81V[4\x80\x15a\n\x86W__\xFD[Pa\x04f_Q` aCX_9_Q\x90_R\x81V[4\x80\x15a\n\xA6W__\xFD[Pa\x03\xBDa\n\xB56`\x04a:\xA2V[a\x1F\x99V[4\x80\x15a\n\xC5W__\xFD[Pa\n\xEFa\n\xD46`\x04a:\xA2V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\x95\x92\x91\x90a>\xEEV[4\x80\x15a\x0B\x08W__\xFD[P`\x02Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0BLWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0BZa !V[a\x0Bc\x82a SV[3_\x82\x90\x03a\x0B\x85W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\x0B\xA8W`@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\x0B\xF6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x1A\x91\x90a?\x1EV[\x90P\x82\x81\x10\x15a\x0CLW`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x0Cd\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a \xD4V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x0C\x8B\x90\x84\x90a?IV[\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\x0C\xC6\x90\x84\x90a?IV[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0C\xDE\x91\x90a?IV[\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\r*\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\r[\x81a!xV[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\r\x80WPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\r\x9EW`@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\r\xEDa !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x0E'W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x0EHW`@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\x0E\x90W`@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\x0E\xD4\x90\x84\x90a?\\V[\x90\x91UPP`\x02Ta\x0E\xF0\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a!\x82V[\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\r*\x91\x81R` \x01\x90V[_\x90\x81R_Q` aCx_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x0F]a !V[3a\x0Fg\x81a\"\x0BV[a\x0Fp\x86a\"XV[a\x0Fz\x87\x87a\"\x93V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0F\xAC\x81\x87\x8Aa#\x0CV[\x84Q`@\x14a\x0F\xCEW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x85\x16\x11\x15a\x0F\xF5W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xFE\x83a\x1FtV[`\x01`\x04_a\x10\x0C\x8Ba\x1A\xBBV[\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\x10=\x8Aa#\xA1V[\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\x10\x84Wa\x10\x84a>\xDAV[\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\x10\xCAWa\x10\xCAa>\xDAV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x87\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x90\x92R\x91\x85\x90 \x93Q\x84Ta\xFF\xFF\x19\x16\x93\x16\x92\x90\x92\x17\x83UQ`\x01\x90\x92\x01\x91\x90\x91U\x90Q\x90\x91P\x7F&\xDE\xF1t\xFC\xE8\x14\x7FV\x01}\t[\xF3\x9C\xDF+\x97(\xF9\x1A\xB2\xF2t\x97J/\xD9{&\x84\x89\x90a\x11W\x90\x8B\x90\x8B\x90\x89\x90\x8C\x90\x8C\x90\x8B\x90a?oV[`@Q\x80\x91\x03\x90\xA2PPPPPPPPV[_a\x11s\x81a!xV[_\x82a\xFF\xFF\x16\x11\x80\x15a\x11\x8CWPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x11\xA9W`@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\r\xD9V[\x81a\x11\xFFWa\x11\xFB\x81a\x1F\x99V[PPV[a\x11\xFB\x82\x82a#\xC5V[\x81a\x12'W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a#\xE1V[_a\x12;\x81a!xV[_\x82\x11\x80\x15a\x12NWPc\x01\xE13\x80\x82\x11\x15[a\x12kW`@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\r\xD9V[a\x12\xA8a !V[3a\x12\xB2\x81a SV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x12\xD9W`@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\x13\x1BW`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x13\xA7W`\x01\x82\x01T\x80\x15\x80a\x13IWP`\tTa\x13E\x90\x82a?IV[B\x10\x15[a\x13fW`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x13w\x90a\xFF\xFF\x16\x83a?\xF6V[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x13\x9FW`@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\x14\x16\x81a!xV[`\x01\x82\x10\x15a\x148W`@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\r\xD9V[_Q` aCX_9_Q\x90_Ra\x14\x84\x81a!xV[a\x14\x8Ca$\x14V[PV[a\x14\x97a !V[a\x14\xA0\x82a SV[3_\x82\x90\x03a\x14\xC2W`@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\x15\x05W`@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\x15NW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x15j\x83a@\x10V[\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\x15\xE3\x91\x90a?\\V[\x90\x91UPP`\x08T_\x90a\x15\xF7\x90Ba?IV[`@\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\x16\x87\x90\x84\x90a?\\V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x16\x9F\x91\x90a?\\V[\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\x17\x08a$sV[a\x17\x11\x82a%\x17V[a\x11\xFB\x82\x82a%!V[a\x17#a%\xDDV[_Q` aC\xB8_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x17YWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x17wW`@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\x17\xBFW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x17\xE6W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xEEa&\x0FV[a\x17\xF6a&\x17V[a\x18\r_Q` aCX_9_Q\x90_R\x88a&'V[Pa\x18\x18_\x87a&'V[P_a\x18\"a\x1AWV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18FWa\x18F\x87a&\xC8V[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\x18\x86\x85\x85a'8V[a\x18\x8F\x86a(\xCDV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\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\xA1PPPPPPPV[_a\x18\xE9a)\\V[P_Q` aC8_9_Q\x90_R\x90V[a\x19\x03a !V[3a\x19\r\x81a SV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19?\x90Ba?IV[`\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\x19{\x90\x84\x90a?\\V[\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` \x01[`@Q\x80\x91\x03\x90\xA2PPV[a\x19\xCBa%\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aCX_9_Q\x90_Ra\x19\xFB\x81a!xV[a\x14\x8Ca)\xA5V[a\x1A\x0Ba !V[3a\x1A\x15\x81a SV[a\x1A\x1E\x82a\x1FtV[\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\x19\xB7\x91\x90a>\x89V[\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` aCx_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\x1A\xF8\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\x1B\x1Da !V[`\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\x1BbW`@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\x1B\xAAW`@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\x1C\x1D\x91\x16\x84\x84a!\x82V[\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\x1Cl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\x1C\x82a !V[3a\x1C\x8C\x81a SV[a\x1C\x95\x84a\"XV[a\x1C\x9F\x85\x85a\"\x93V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xD1\x81\x85\x88a#\x0CV[\x82Q`@\x14a\x1C\xF3W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x1D\x01\x89a\x1A\xBBV[\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\x1D2\x88a#\xA1V[\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\x1D\x94\x94\x93\x92\x91\x90a@:V[`@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\x1D\xEFW`@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` aC\xB8_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1EfWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1E\x81WP0;\x15[\x90P\x81\x15\x80\x15a\x1E\x8FWP\x80\x15[\x15a\x1E\xADW`@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\x1E\xD7W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x1E\xE0\x86a)\xEDV[a\x1E\xE8a&\x0FV[a\x1E\xF0a)\xFEV[a\x1E\xFB\x89\x89\x89a*\xEFV[\x83\x15a\x1FAW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\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[PPPPPPPPPV[\x81a\x1FjW`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a+\x9AV[\x80Qa\x08\0\x81\x11\x15a\x11\xFBW`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xA3\x81a!xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1F\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[_a\x1F\xD5a\x1AWV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F\xFEWa\x1F\xF9\x83a+\xB6V[PPPV[a \x08_\x84a#\xC5V[a \x11\x83a+\xB6V[a \x1B_\x82a+\xF0V[PPPPV[_Q` aC\x98_9_Q\x90_RT`\xFF\x16\x15a QW`@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 \x84Wa \x84a>\xDAV[\x03a \xA2W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a \xB6Wa \xB6a>\xDAV[\x03a\x11\xFBW`@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!-WP\x83;\x15=\x17\x15[\x80a!qW`@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\x0CCV[PPPPPV[a\x14\x8C\x813a,iV[_`@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!\xCCWP\x82;\x15=\x17\x15[\x80a \x1BW`@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\x0CCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\":Wa\":a>\xDAV[\x14a\x14\x8CW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\"u\x82\x82a,\xA2V[\x15a\x11\xFBW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\"\x9F\x84a\x1A\xBBV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\"\xCFW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a\"\xDB\x83a#\xA1V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11\xFBW`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\x15\x82a,\xC3V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aB\xF4`$\x919\x90P_\x84\x82`@Q` \x01a#E\x92\x91\x90a@\xB7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a#`\x82a-*V[\x90Pa#}\x81\x85a#p\x88a.\x17V[a#xa.\x8EV[a/[V[a#\x99W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a\x1A\xF8\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a#\xCE\x82a\x0F5V[a#\xD7\x81a!xV[a \x1B\x83\x83a&'V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a$\nW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xF9\x82\x82a+\xF0V[a$\x1Ca0\nV[_Q` aC\x98_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$\xF9WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\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$\xED_Q` aC8_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xFB\x81a!xV[\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%{WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra%x\x91\x81\x01\x90a?\x1EV[`\x01[a%\xA3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC8_9_Q\x90_R\x81\x14a%\xD3W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[a\x1F\xF9\x83\x83a09V[3a%\xE6a\x1AWV[`\x01`\x01`\xA0\x1B\x03\x16\x14a QW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0CCV[a Qa0\x8EV[a&\x1Fa0\x8EV[a Qa0\xC4V[__Q` aCx_9_Q\x90_Ra&@\x84\x84a\x1A\x85V[a&\xBFW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua&u3\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\x0BLV[_\x91PPa\x0BLV[\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\x1F\xF9W_\x83\x83\x83\x81\x81\x10a'UWa'Ua@\xCBV[a'k\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa:\xA2V[\x90P_\x84\x84\x84\x81\x81\x10a'\x80Wa'\x80a@\xCBV[\x90P`@\x02\x01` \x01` \x81\x01\x90a'\x98\x91\x90a<\nV[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a'\xC1W`@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'\xF2Wa'\xF2a>\xDAV[\x03a(\x10W`@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(QWP`\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\x0CCV[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)\x13W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a)7\x91\x90a?\x1EV[\x81\x11\x15a)WW`@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 QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a)\xADa !V[_Q` aC\x98_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$UV[a)\xF5a0\x8EV[a\x14\x8C\x81a0\xE4V[_Q` aC\xB8_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a*/WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a*JWP0;\x15[\x90P\x81\x15\x80\x15a*XWP\x80\x15[\x15a*vW`@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*\xA0W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a!qW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\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\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a+\x16W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a+=W`@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\x15a+\x92W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a+\xA3\x82a\x0F5V[a+\xAC\x81a!xV[a \x1B\x83\x83a+\xF0V[a+\xBEa%\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a+\xE7W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[a\x14\x8C\x81a&\xC8V[__Q` aCx_9_Q\x90_Ra,\t\x84\x84a\x1A\x85V[\x15a&\xBFW_\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\x0BLV[a,s\x82\x82a\x1A\x85V[a\x11\xFBW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0CCV[\x80Q\x82Q_\x91\x14\x80\x15a,\xBCWP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` aC\x18_9_Q\x90_R\x91\x15\x90\x15\x16\x15a,\xE9WPPPV[\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\x1F\xF9W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a-G\x83a0\xECV[\x90P_Q` aC\x18_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a-nWa-na@\xDFV[\x84\x82\t\x90P\x82\x80a-\x81Wa-\x81a@\xDFV[\x82\x82\x08\x90P__a-\x91\x83a2\xF4V[\x92P\x90P[\x80a-\xFAW\x84\x80a-\xA9Wa-\xA9a@\xDFV[`\x01\x87\x08\x95P\x84\x80a-\xBDWa-\xBDa@\xDFV[\x86\x87\t\x92P\x84\x80a-\xD0Wa-\xD0a@\xDFV[\x86\x84\t\x92P\x84\x80a-\xE3Wa-\xE3a@\xDFV[\x84\x84\x08\x92Pa-\xF1\x83a2\xF4V[\x92P\x90Pa-\x96V[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\x15a.>WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aC\x18_9_Q\x90_R\x84` \x01Qa.o\x91\x90a@\xF3V[a.\x86\x90_Q` aC\x18_9_Q\x90_Ra?\\V[\x90R\x92\x91PPV[a.\xB5`@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\x80a/\xFEW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` aC\x98_9_Q\x90_RT`\xFF\x16a QW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0B\x82a3\xBCV[`@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\x15a0\x86Wa\x1F\xF9\x82\x82a4\x1FV[a\x11\xFBa4\x91V[_Q` aC\xB8_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a QW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0\xCCa0\x8EV[_Q` aC\x98_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a+\xBEa0\x8EV[__a0\xF7\x83a4\xB0V[\x80Q\x90\x91P`0\x81\x14a1\x0CWa1\x0CaA\x12V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a1%Wa1%a9JV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a1OW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a1\xBEW\x83`\x01a1i\x83\x86a?\\V[a1s\x91\x90a?\\V[\x81Q\x81\x10a1\x83Wa1\x83a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a1\xA0Wa1\xA0a@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a1TV[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\x15a2NW\x83\x81a1\xFA\x85\x88a?\\V[a2\x04\x91\x90a?IV[\x81Q\x81\x10a2\x14Wa2\x14a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a24Wa24a@\xCBV[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a1\xE6V[P_a2Y\x82a7\xFBV[\x90Pa\x01\0_Q` aC\x18_9_Q\x90_R_a2w\x86\x89a?\\V[\x90P_[\x81\x81\x10\x15a2\xE4W_\x88`\x01a2\x91\x84\x86a?\\V[a2\x9B\x91\x90a?\\V[\x81Q\x81\x10a2\xABWa2\xABa@\xCBV[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a2\xC3Wa2\xC3a@\xDFV[\x85\x87\t\x95P\x83\x80a2\xD6Wa2\xD6a@\xDFV[\x81\x87\x08\x95PP`\x01\x01a2{V[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` aC\x18_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\x83a3\x82W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a3\x9BWa3\x98\x83\x82a?\\V[\x92P[\x80\x80a3\xA9Wa3\xA9a@\xDFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a3\xF1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC8_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`@Qa4;\x91\x90aA&V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a4sW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a4xV[``\x91P[P\x91P\x91Pa4\x88\x85\x83\x83a8bV[\x95\x94PPPPPV[4\x15a QW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\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` \x01a4\xF0\x92\x91\x90a@\xB7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a5\x17\x92\x91\x90aA1V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a59\x91\x90aA[V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a5c\x90\x83\x90\x83\x90` \x01aAsV[`@\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\x15a5\xD2Wa5\xD2a9JV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a5\xFCW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a6\x13\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a6}W\x81\x81\x81Q\x81\x10a6BWa6Ba@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a6_Wa6_a@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a6'V[P_\x84`@Q` \x01a6\x92\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a7$W_\x83\x82\x81Q\x81\x10a6\xCBWa6\xCBa@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a6\xE8Wa6\xE8a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a7\t\x92\x91\x90aA\x97V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a6\xB0V[P\x86\x88\x87`@Q` \x01a7:\x93\x92\x91\x90aA\xBBV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a7h\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a7\x89\x8A`\xFF\x8D\x16a?\\V[\x81\x10\x15a7\xEAW\x82\x81\x81Q\x81\x10a7\xA2Wa7\xA2a@\xCBV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a7\xBC\x83\x8Da?IV[\x81Q\x81\x10a7\xCCWa7\xCCa@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a7|V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a8[W\x83\x81\x81Q\x81\x10a8\x1AWa8\x1Aa@\xCBV[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a82\x91\x90aA\xEEV[a8=\x90`\x02aB\xE8V[a8G\x91\x90aA\xEEV[a8Q\x90\x83a?IV[\x91P`\x01\x01a7\xFFV[P\x92\x91PPV[``\x82a8wWa8r\x82a8\xB7V[a,\xBCV[\x81Q\x15\x80\x15a8\x8EWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a8[W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0CCV[\x80Q\x15a8\xC7W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a8\xF0W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a,\xBCW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a9\x1DW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a93W__\xFD[a9<\x83a9\x07V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a9\x80Wa9\x80a9JV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a9\x96W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a9\xB8Wa9\xB8a9JV[`@\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\x15a9\xF6W__\xFD[a9\xFEa9^V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a9\x1DW__\xFD[____a\x01 \x85\x87\x03\x12\x15a::W__\xFD[a:D\x86\x86a9\x86V[\x93Pa:S\x86`\x80\x87\x01a9\xE6V[\x92Pa:b\x86`\xC0\x87\x01a9\xE6V[\x91Pa:qa\x01\0\x86\x01a:\x15V[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15a:\x8CW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a,\xBCW__\xFD[_` \x82\x84\x03\x12\x15a:\xB2W__\xFD[a,\xBC\x82a9\x07V[_` \x82\x84\x03\x12\x15a:\xCBW__\xFD[P5\x91\x90PV[_\x82`\x1F\x83\x01\x12a:\xE1W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a;\0Wa;\0a9JV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a;.Wa;.a9JV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a;EW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[______a\x01`\x87\x89\x03\x12\x15a;wW__\xFD[a;\x81\x88\x88a9\x86V[\x95Pa;\x90\x88`\x80\x89\x01a9\xE6V[\x94Pa;\x9F\x88`\xC0\x89\x01a9\xE6V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a;\xBAW__\xFD[a;\xC6\x89\x82\x8A\x01a:\xD2V[\x93PPa;\xD6a\x01 \x88\x01a:\x15V[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a;\xF1W__\xFD[a;\xFD\x89\x82\x8A\x01a:\xD2V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15a<\x1AW__\xFD[a,\xBC\x82a:\x15V[__`@\x83\x85\x03\x12\x15a<4W__\xFD[\x825\x91Pa<D` \x84\x01a9\x07V[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a<^W__\xFD[a<g\x83a9\x07V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x81W__\xFD[a<\x8D\x85\x82\x86\x01a:\xD2V[\x91PP\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a<\xABW__\xFD[a<\xB4\x86a9\x07V[\x94Pa<\xC2` \x87\x01a9\x07V[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xE3W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a<\xF3W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x08W__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15a=\x1CW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15a=@W__\xFD[a=J\x85\x85a9\x86V[\x92Pa=Y\x85`\x80\x86\x01a9\xE6V[\x91Pa=h\x85`\xC0\x86\x01a9\xE6V[\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a=\x81W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x96W__\xFD[a=\xA2\x84\x82\x85\x01a:\xD2V[\x94\x93PPPPV[_`\x80\x82\x84\x03\x12\x15a=\xBAW__\xFD[a,\xBC\x83\x83a9\x86V[__`@\x83\x85\x03\x12\x15a=\xD5W__\xFD[a=\xDE\x83a9\x07V[\x91Pa<D` \x84\x01a9\x07V[____a\x01 \x85\x87\x03\x12\x15a>\0W__\xFD[a>\n\x86\x86a9\x86V[\x93Pa>\x19\x86`\x80\x87\x01a9\xE6V[\x92Pa>(\x86`\xC0\x87\x01a9\xE6V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a>CW__\xFD[a>O\x87\x82\x88\x01a:\xD2V[\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,\xBC` \x83\x01\x84a>[V[____`\x80\x85\x87\x03\x12\x15a>\xAEW__\xFD[a>\xB7\x85a9\x07V[\x93Pa>\xC5` \x86\x01a9\x07V[\x92P`@\x85\x015\x91Pa:q``\x86\x01a9\x07V[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a?\x11WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a?.W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0BLWa\x0BLa?5V[\x81\x81\x03\x81\x81\x11\x15a\x0BLWa\x0BLa?5V[\x86Q\x81R` \x80\x88\x01Q\x90\x82\x01R`@\x80\x88\x01Q\x90\x82\x01R``\x80\x88\x01Q\x90\x82\x01R\x85Q`\x80\x82\x01R` \x86\x01Q`\xA0\x82\x01Ra\xFF\xFF\x85\x16`\xC0\x82\x01R\x83Q`\xE0\x82\x01R` \x84\x01Qa\x01\0\x82\x01Ra\x01`a\x01 \x82\x01R_a?\xD6a\x01`\x83\x01\x85a>[V[\x82\x81\x03a\x01@\x84\x01Ra?\xE9\x81\x85a>[V[\x99\x98PPPPPPPPPV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BLWa\x0BLa?5V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a@1Wa@1a?5V[`\x01\x01\x92\x91PPV[\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_a@\x96a\x01 \x83\x01\x84a>[V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a=\xA2a@\xC5\x83\x86a@\xA0V[\x84a@\xA0V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aA\rWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a,\xBC\x82\x84a@\xA0V[_aA<\x82\x85a@\xA0V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aAf\x82\x84a@\xA0V[_\x81R`\x01\x01\x93\x92PPPV[_aA~\x82\x85a@\xA0V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aA\xA2\x82\x85a@\xA0V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aA\xC6\x82\x86a@\xA0V[`\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[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0BLWa\x0BLa?5V[`\x01\x81[`\x01\x84\x11\x15aB@W\x80\x85\x04\x81\x11\x15aB$WaB$a?5V[`\x01\x84\x16\x15aB2W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aB\tV[\x93P\x93\x91PPV[_\x82aBVWP`\x01a\x0BLV[\x81aBbWP_a\x0BLV[\x81`\x01\x81\x14aBxW`\x02\x81\x14aB\x82WaB\x9EV[`\x01\x91PPa\x0BLV[`\xFF\x84\x11\x15aB\x93WaB\x93a?5V[PP`\x01\x82\x1Ba\x0BLV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aB\xC1WP\x81\x81\na\x0BLV[aB\xCD_\x19\x84\x84aB\x05V[\x80_\x19\x04\x82\x11\x15aB\xE0WaB\xE0a?5V[\x02\x93\x92PPPV[_a,\xBC\x83\x83aBHV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\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\x1C\0\n",
3807    );
3808    #[derive(serde::Serialize, serde::Deserialize)]
3809    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3810    /**```solidity
3811struct InitialCommission { address validator; uint16 commission; }
3812```*/
3813    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3814    #[derive(Clone)]
3815    pub struct InitialCommission {
3816        #[allow(missing_docs)]
3817        pub validator: alloy::sol_types::private::Address,
3818        #[allow(missing_docs)]
3819        pub commission: u16,
3820    }
3821    #[allow(
3822        non_camel_case_types,
3823        non_snake_case,
3824        clippy::pub_underscore_fields,
3825        clippy::style
3826    )]
3827    const _: () = {
3828        use alloy::sol_types as alloy_sol_types;
3829        #[doc(hidden)]
3830        #[allow(dead_code)]
3831        type UnderlyingSolTuple<'a> = (
3832            alloy::sol_types::sol_data::Address,
3833            alloy::sol_types::sol_data::Uint<16>,
3834        );
3835        #[doc(hidden)]
3836        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u16);
3837        #[cfg(test)]
3838        #[allow(dead_code, unreachable_patterns)]
3839        fn _type_assertion(
3840            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3841        ) {
3842            match _t {
3843                alloy_sol_types::private::AssertTypeEq::<
3844                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3845                >(_) => {}
3846            }
3847        }
3848        #[automatically_derived]
3849        #[doc(hidden)]
3850        impl ::core::convert::From<InitialCommission> for UnderlyingRustTuple<'_> {
3851            fn from(value: InitialCommission) -> Self {
3852                (value.validator, value.commission)
3853            }
3854        }
3855        #[automatically_derived]
3856        #[doc(hidden)]
3857        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InitialCommission {
3858            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3859                Self {
3860                    validator: tuple.0,
3861                    commission: tuple.1,
3862                }
3863            }
3864        }
3865        #[automatically_derived]
3866        impl alloy_sol_types::SolValue for InitialCommission {
3867            type SolType = Self;
3868        }
3869        #[automatically_derived]
3870        impl alloy_sol_types::private::SolTypeValue<Self> for InitialCommission {
3871            #[inline]
3872            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3873                (
3874                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3875                        &self.validator,
3876                    ),
3877                    <alloy::sol_types::sol_data::Uint<
3878                        16,
3879                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
3880                )
3881            }
3882            #[inline]
3883            fn stv_abi_encoded_size(&self) -> usize {
3884                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3885                    return size;
3886                }
3887                let tuple = <UnderlyingRustTuple<
3888                    '_,
3889                > as ::core::convert::From<Self>>::from(self.clone());
3890                <UnderlyingSolTuple<
3891                    '_,
3892                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3893            }
3894            #[inline]
3895            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3896                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3897            }
3898            #[inline]
3899            fn stv_abi_encode_packed_to(
3900                &self,
3901                out: &mut alloy_sol_types::private::Vec<u8>,
3902            ) {
3903                let tuple = <UnderlyingRustTuple<
3904                    '_,
3905                > as ::core::convert::From<Self>>::from(self.clone());
3906                <UnderlyingSolTuple<
3907                    '_,
3908                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3909            }
3910            #[inline]
3911            fn stv_abi_packed_encoded_size(&self) -> usize {
3912                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3913                    return size;
3914                }
3915                let tuple = <UnderlyingRustTuple<
3916                    '_,
3917                > as ::core::convert::From<Self>>::from(self.clone());
3918                <UnderlyingSolTuple<
3919                    '_,
3920                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3921            }
3922        }
3923        #[automatically_derived]
3924        impl alloy_sol_types::SolType for InitialCommission {
3925            type RustType = Self;
3926            type Token<'a> = <UnderlyingSolTuple<
3927                'a,
3928            > as alloy_sol_types::SolType>::Token<'a>;
3929            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3930            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3931                '_,
3932            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3933            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3934                '_,
3935            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3936            #[inline]
3937            fn valid_token(token: &Self::Token<'_>) -> bool {
3938                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3939            }
3940            #[inline]
3941            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3942                let tuple = <UnderlyingSolTuple<
3943                    '_,
3944                > as alloy_sol_types::SolType>::detokenize(token);
3945                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3946            }
3947        }
3948        #[automatically_derived]
3949        impl alloy_sol_types::SolStruct for InitialCommission {
3950            const NAME: &'static str = "InitialCommission";
3951            #[inline]
3952            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3953                alloy_sol_types::private::Cow::Borrowed(
3954                    "InitialCommission(address validator,uint16 commission)",
3955                )
3956            }
3957            #[inline]
3958            fn eip712_components() -> alloy_sol_types::private::Vec<
3959                alloy_sol_types::private::Cow<'static, str>,
3960            > {
3961                alloy_sol_types::private::Vec::new()
3962            }
3963            #[inline]
3964            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3965                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3966            }
3967            #[inline]
3968            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3969                [
3970                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
3971                            &self.validator,
3972                        )
3973                        .0,
3974                    <alloy::sol_types::sol_data::Uint<
3975                        16,
3976                    > as alloy_sol_types::SolType>::eip712_data_word(&self.commission)
3977                        .0,
3978                ]
3979                    .concat()
3980            }
3981        }
3982        #[automatically_derived]
3983        impl alloy_sol_types::EventTopic for InitialCommission {
3984            #[inline]
3985            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3986                0usize
3987                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
3988                        &rust.validator,
3989                    )
3990                    + <alloy::sol_types::sol_data::Uint<
3991                        16,
3992                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3993                        &rust.commission,
3994                    )
3995            }
3996            #[inline]
3997            fn encode_topic_preimage(
3998                rust: &Self::RustType,
3999                out: &mut alloy_sol_types::private::Vec<u8>,
4000            ) {
4001                out.reserve(
4002                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4003                );
4004                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
4005                    &rust.validator,
4006                    out,
4007                );
4008                <alloy::sol_types::sol_data::Uint<
4009                    16,
4010                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4011                    &rust.commission,
4012                    out,
4013                );
4014            }
4015            #[inline]
4016            fn encode_topic(
4017                rust: &Self::RustType,
4018            ) -> alloy_sol_types::abi::token::WordToken {
4019                let mut out = alloy_sol_types::private::Vec::new();
4020                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4021                    rust,
4022                    &mut out,
4023                );
4024                alloy_sol_types::abi::token::WordToken(
4025                    alloy_sol_types::private::keccak256(out),
4026                )
4027            }
4028        }
4029    };
4030    #[derive(serde::Serialize, serde::Deserialize)]
4031    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4032    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
4033```solidity
4034error AccessControlBadConfirmation();
4035```*/
4036    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4037    #[derive(Clone)]
4038    pub struct AccessControlBadConfirmation;
4039    #[allow(
4040        non_camel_case_types,
4041        non_snake_case,
4042        clippy::pub_underscore_fields,
4043        clippy::style
4044    )]
4045    const _: () = {
4046        use alloy::sol_types as alloy_sol_types;
4047        #[doc(hidden)]
4048        #[allow(dead_code)]
4049        type UnderlyingSolTuple<'a> = ();
4050        #[doc(hidden)]
4051        type UnderlyingRustTuple<'a> = ();
4052        #[cfg(test)]
4053        #[allow(dead_code, unreachable_patterns)]
4054        fn _type_assertion(
4055            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4056        ) {
4057            match _t {
4058                alloy_sol_types::private::AssertTypeEq::<
4059                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4060                >(_) => {}
4061            }
4062        }
4063        #[automatically_derived]
4064        #[doc(hidden)]
4065        impl ::core::convert::From<AccessControlBadConfirmation>
4066        for UnderlyingRustTuple<'_> {
4067            fn from(value: AccessControlBadConfirmation) -> Self {
4068                ()
4069            }
4070        }
4071        #[automatically_derived]
4072        #[doc(hidden)]
4073        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4074        for AccessControlBadConfirmation {
4075            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4076                Self
4077            }
4078        }
4079        #[automatically_derived]
4080        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
4081            type Parameters<'a> = UnderlyingSolTuple<'a>;
4082            type Token<'a> = <Self::Parameters<
4083                'a,
4084            > as alloy_sol_types::SolType>::Token<'a>;
4085            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
4086            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
4087            #[inline]
4088            fn new<'a>(
4089                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4090            ) -> Self {
4091                tuple.into()
4092            }
4093            #[inline]
4094            fn tokenize(&self) -> Self::Token<'_> {
4095                ()
4096            }
4097            #[inline]
4098            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4099                <Self::Parameters<
4100                    '_,
4101                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4102                    .map(Self::new)
4103            }
4104        }
4105    };
4106    #[derive(serde::Serialize, serde::Deserialize)]
4107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4108    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
4109```solidity
4110error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
4111```*/
4112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4113    #[derive(Clone)]
4114    pub struct AccessControlUnauthorizedAccount {
4115        #[allow(missing_docs)]
4116        pub account: alloy::sol_types::private::Address,
4117        #[allow(missing_docs)]
4118        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
4119    }
4120    #[allow(
4121        non_camel_case_types,
4122        non_snake_case,
4123        clippy::pub_underscore_fields,
4124        clippy::style
4125    )]
4126    const _: () = {
4127        use alloy::sol_types as alloy_sol_types;
4128        #[doc(hidden)]
4129        #[allow(dead_code)]
4130        type UnderlyingSolTuple<'a> = (
4131            alloy::sol_types::sol_data::Address,
4132            alloy::sol_types::sol_data::FixedBytes<32>,
4133        );
4134        #[doc(hidden)]
4135        type UnderlyingRustTuple<'a> = (
4136            alloy::sol_types::private::Address,
4137            alloy::sol_types::private::FixedBytes<32>,
4138        );
4139        #[cfg(test)]
4140        #[allow(dead_code, unreachable_patterns)]
4141        fn _type_assertion(
4142            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4143        ) {
4144            match _t {
4145                alloy_sol_types::private::AssertTypeEq::<
4146                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4147                >(_) => {}
4148            }
4149        }
4150        #[automatically_derived]
4151        #[doc(hidden)]
4152        impl ::core::convert::From<AccessControlUnauthorizedAccount>
4153        for UnderlyingRustTuple<'_> {
4154            fn from(value: AccessControlUnauthorizedAccount) -> Self {
4155                (value.account, value.neededRole)
4156            }
4157        }
4158        #[automatically_derived]
4159        #[doc(hidden)]
4160        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4161        for AccessControlUnauthorizedAccount {
4162            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4163                Self {
4164                    account: tuple.0,
4165                    neededRole: tuple.1,
4166                }
4167            }
4168        }
4169        #[automatically_derived]
4170        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
4171            type Parameters<'a> = UnderlyingSolTuple<'a>;
4172            type Token<'a> = <Self::Parameters<
4173                'a,
4174            > as alloy_sol_types::SolType>::Token<'a>;
4175            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
4176            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
4177            #[inline]
4178            fn new<'a>(
4179                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4180            ) -> Self {
4181                tuple.into()
4182            }
4183            #[inline]
4184            fn tokenize(&self) -> Self::Token<'_> {
4185                (
4186                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4187                        &self.account,
4188                    ),
4189                    <alloy::sol_types::sol_data::FixedBytes<
4190                        32,
4191                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
4192                )
4193            }
4194            #[inline]
4195            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4196                <Self::Parameters<
4197                    '_,
4198                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4199                    .map(Self::new)
4200            }
4201        }
4202    };
4203    #[derive(serde::Serialize, serde::Deserialize)]
4204    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4205    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4206```solidity
4207error AddressEmptyCode(address target);
4208```*/
4209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4210    #[derive(Clone)]
4211    pub struct AddressEmptyCode {
4212        #[allow(missing_docs)]
4213        pub target: alloy::sol_types::private::Address,
4214    }
4215    #[allow(
4216        non_camel_case_types,
4217        non_snake_case,
4218        clippy::pub_underscore_fields,
4219        clippy::style
4220    )]
4221    const _: () = {
4222        use alloy::sol_types as alloy_sol_types;
4223        #[doc(hidden)]
4224        #[allow(dead_code)]
4225        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4226        #[doc(hidden)]
4227        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4228        #[cfg(test)]
4229        #[allow(dead_code, unreachable_patterns)]
4230        fn _type_assertion(
4231            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4232        ) {
4233            match _t {
4234                alloy_sol_types::private::AssertTypeEq::<
4235                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4236                >(_) => {}
4237            }
4238        }
4239        #[automatically_derived]
4240        #[doc(hidden)]
4241        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4242            fn from(value: AddressEmptyCode) -> Self {
4243                (value.target,)
4244            }
4245        }
4246        #[automatically_derived]
4247        #[doc(hidden)]
4248        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4249            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4250                Self { target: tuple.0 }
4251            }
4252        }
4253        #[automatically_derived]
4254        impl alloy_sol_types::SolError for AddressEmptyCode {
4255            type Parameters<'a> = UnderlyingSolTuple<'a>;
4256            type Token<'a> = <Self::Parameters<
4257                'a,
4258            > as alloy_sol_types::SolType>::Token<'a>;
4259            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4260            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4261            #[inline]
4262            fn new<'a>(
4263                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4264            ) -> Self {
4265                tuple.into()
4266            }
4267            #[inline]
4268            fn tokenize(&self) -> Self::Token<'_> {
4269                (
4270                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4271                        &self.target,
4272                    ),
4273                )
4274            }
4275            #[inline]
4276            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4277                <Self::Parameters<
4278                    '_,
4279                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4280                    .map(Self::new)
4281            }
4282        }
4283    };
4284    #[derive(serde::Serialize, serde::Deserialize)]
4285    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4286    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
4287```solidity
4288error BLSSigVerificationFailed();
4289```*/
4290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4291    #[derive(Clone)]
4292    pub struct BLSSigVerificationFailed;
4293    #[allow(
4294        non_camel_case_types,
4295        non_snake_case,
4296        clippy::pub_underscore_fields,
4297        clippy::style
4298    )]
4299    const _: () = {
4300        use alloy::sol_types as alloy_sol_types;
4301        #[doc(hidden)]
4302        #[allow(dead_code)]
4303        type UnderlyingSolTuple<'a> = ();
4304        #[doc(hidden)]
4305        type UnderlyingRustTuple<'a> = ();
4306        #[cfg(test)]
4307        #[allow(dead_code, unreachable_patterns)]
4308        fn _type_assertion(
4309            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4310        ) {
4311            match _t {
4312                alloy_sol_types::private::AssertTypeEq::<
4313                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4314                >(_) => {}
4315            }
4316        }
4317        #[automatically_derived]
4318        #[doc(hidden)]
4319        impl ::core::convert::From<BLSSigVerificationFailed>
4320        for UnderlyingRustTuple<'_> {
4321            fn from(value: BLSSigVerificationFailed) -> Self {
4322                ()
4323            }
4324        }
4325        #[automatically_derived]
4326        #[doc(hidden)]
4327        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4328        for BLSSigVerificationFailed {
4329            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4330                Self
4331            }
4332        }
4333        #[automatically_derived]
4334        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
4335            type Parameters<'a> = UnderlyingSolTuple<'a>;
4336            type Token<'a> = <Self::Parameters<
4337                'a,
4338            > as alloy_sol_types::SolType>::Token<'a>;
4339            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
4340            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
4341            #[inline]
4342            fn new<'a>(
4343                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4344            ) -> Self {
4345                tuple.into()
4346            }
4347            #[inline]
4348            fn tokenize(&self) -> Self::Token<'_> {
4349                ()
4350            }
4351            #[inline]
4352            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4353                <Self::Parameters<
4354                    '_,
4355                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4356                    .map(Self::new)
4357            }
4358        }
4359    };
4360    #[derive(serde::Serialize, serde::Deserialize)]
4361    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4362    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
4363```solidity
4364error BN254PairingProdFailed();
4365```*/
4366    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4367    #[derive(Clone)]
4368    pub struct BN254PairingProdFailed;
4369    #[allow(
4370        non_camel_case_types,
4371        non_snake_case,
4372        clippy::pub_underscore_fields,
4373        clippy::style
4374    )]
4375    const _: () = {
4376        use alloy::sol_types as alloy_sol_types;
4377        #[doc(hidden)]
4378        #[allow(dead_code)]
4379        type UnderlyingSolTuple<'a> = ();
4380        #[doc(hidden)]
4381        type UnderlyingRustTuple<'a> = ();
4382        #[cfg(test)]
4383        #[allow(dead_code, unreachable_patterns)]
4384        fn _type_assertion(
4385            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4386        ) {
4387            match _t {
4388                alloy_sol_types::private::AssertTypeEq::<
4389                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4390                >(_) => {}
4391            }
4392        }
4393        #[automatically_derived]
4394        #[doc(hidden)]
4395        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
4396            fn from(value: BN254PairingProdFailed) -> Self {
4397                ()
4398            }
4399        }
4400        #[automatically_derived]
4401        #[doc(hidden)]
4402        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
4403            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4404                Self
4405            }
4406        }
4407        #[automatically_derived]
4408        impl alloy_sol_types::SolError for BN254PairingProdFailed {
4409            type Parameters<'a> = UnderlyingSolTuple<'a>;
4410            type Token<'a> = <Self::Parameters<
4411                'a,
4412            > as alloy_sol_types::SolType>::Token<'a>;
4413            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
4414            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
4415            #[inline]
4416            fn new<'a>(
4417                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4418            ) -> Self {
4419                tuple.into()
4420            }
4421            #[inline]
4422            fn tokenize(&self) -> Self::Token<'_> {
4423                ()
4424            }
4425            #[inline]
4426            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4427                <Self::Parameters<
4428                    '_,
4429                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4430                    .map(Self::new)
4431            }
4432        }
4433    };
4434    #[derive(serde::Serialize, serde::Deserialize)]
4435    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4436    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
4437```solidity
4438error BlsKeyAlreadyUsed();
4439```*/
4440    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4441    #[derive(Clone)]
4442    pub struct BlsKeyAlreadyUsed;
4443    #[allow(
4444        non_camel_case_types,
4445        non_snake_case,
4446        clippy::pub_underscore_fields,
4447        clippy::style
4448    )]
4449    const _: () = {
4450        use alloy::sol_types as alloy_sol_types;
4451        #[doc(hidden)]
4452        #[allow(dead_code)]
4453        type UnderlyingSolTuple<'a> = ();
4454        #[doc(hidden)]
4455        type UnderlyingRustTuple<'a> = ();
4456        #[cfg(test)]
4457        #[allow(dead_code, unreachable_patterns)]
4458        fn _type_assertion(
4459            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4460        ) {
4461            match _t {
4462                alloy_sol_types::private::AssertTypeEq::<
4463                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4464                >(_) => {}
4465            }
4466        }
4467        #[automatically_derived]
4468        #[doc(hidden)]
4469        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
4470            fn from(value: BlsKeyAlreadyUsed) -> Self {
4471                ()
4472            }
4473        }
4474        #[automatically_derived]
4475        #[doc(hidden)]
4476        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
4477            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4478                Self
4479            }
4480        }
4481        #[automatically_derived]
4482        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
4483            type Parameters<'a> = UnderlyingSolTuple<'a>;
4484            type Token<'a> = <Self::Parameters<
4485                'a,
4486            > as alloy_sol_types::SolType>::Token<'a>;
4487            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
4488            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
4489            #[inline]
4490            fn new<'a>(
4491                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4492            ) -> Self {
4493                tuple.into()
4494            }
4495            #[inline]
4496            fn tokenize(&self) -> Self::Token<'_> {
4497                ()
4498            }
4499            #[inline]
4500            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4501                <Self::Parameters<
4502                    '_,
4503                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4504                    .map(Self::new)
4505            }
4506        }
4507    };
4508    #[derive(serde::Serialize, serde::Deserialize)]
4509    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4510    /**Custom error with signature `CommissionAlreadyInitialized(address)` and selector `0x50814e10`.
4511```solidity
4512error CommissionAlreadyInitialized(address validator);
4513```*/
4514    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4515    #[derive(Clone)]
4516    pub struct CommissionAlreadyInitialized {
4517        #[allow(missing_docs)]
4518        pub validator: alloy::sol_types::private::Address,
4519    }
4520    #[allow(
4521        non_camel_case_types,
4522        non_snake_case,
4523        clippy::pub_underscore_fields,
4524        clippy::style
4525    )]
4526    const _: () = {
4527        use alloy::sol_types as alloy_sol_types;
4528        #[doc(hidden)]
4529        #[allow(dead_code)]
4530        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4531        #[doc(hidden)]
4532        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4533        #[cfg(test)]
4534        #[allow(dead_code, unreachable_patterns)]
4535        fn _type_assertion(
4536            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4537        ) {
4538            match _t {
4539                alloy_sol_types::private::AssertTypeEq::<
4540                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4541                >(_) => {}
4542            }
4543        }
4544        #[automatically_derived]
4545        #[doc(hidden)]
4546        impl ::core::convert::From<CommissionAlreadyInitialized>
4547        for UnderlyingRustTuple<'_> {
4548            fn from(value: CommissionAlreadyInitialized) -> Self {
4549                (value.validator,)
4550            }
4551        }
4552        #[automatically_derived]
4553        #[doc(hidden)]
4554        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4555        for CommissionAlreadyInitialized {
4556            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4557                Self { validator: tuple.0 }
4558            }
4559        }
4560        #[automatically_derived]
4561        impl alloy_sol_types::SolError for CommissionAlreadyInitialized {
4562            type Parameters<'a> = UnderlyingSolTuple<'a>;
4563            type Token<'a> = <Self::Parameters<
4564                'a,
4565            > as alloy_sol_types::SolType>::Token<'a>;
4566            const SIGNATURE: &'static str = "CommissionAlreadyInitialized(address)";
4567            const SELECTOR: [u8; 4] = [80u8, 129u8, 78u8, 16u8];
4568            #[inline]
4569            fn new<'a>(
4570                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4571            ) -> Self {
4572                tuple.into()
4573            }
4574            #[inline]
4575            fn tokenize(&self) -> Self::Token<'_> {
4576                (
4577                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4578                        &self.validator,
4579                    ),
4580                )
4581            }
4582            #[inline]
4583            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4584                <Self::Parameters<
4585                    '_,
4586                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4587                    .map(Self::new)
4588            }
4589        }
4590    };
4591    #[derive(serde::Serialize, serde::Deserialize)]
4592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4593    /**Custom error with signature `CommissionIncreaseExceedsMax()` and selector `0x25ad48ca`.
4594```solidity
4595error CommissionIncreaseExceedsMax();
4596```*/
4597    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4598    #[derive(Clone)]
4599    pub struct CommissionIncreaseExceedsMax;
4600    #[allow(
4601        non_camel_case_types,
4602        non_snake_case,
4603        clippy::pub_underscore_fields,
4604        clippy::style
4605    )]
4606    const _: () = {
4607        use alloy::sol_types as alloy_sol_types;
4608        #[doc(hidden)]
4609        #[allow(dead_code)]
4610        type UnderlyingSolTuple<'a> = ();
4611        #[doc(hidden)]
4612        type UnderlyingRustTuple<'a> = ();
4613        #[cfg(test)]
4614        #[allow(dead_code, unreachable_patterns)]
4615        fn _type_assertion(
4616            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4617        ) {
4618            match _t {
4619                alloy_sol_types::private::AssertTypeEq::<
4620                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4621                >(_) => {}
4622            }
4623        }
4624        #[automatically_derived]
4625        #[doc(hidden)]
4626        impl ::core::convert::From<CommissionIncreaseExceedsMax>
4627        for UnderlyingRustTuple<'_> {
4628            fn from(value: CommissionIncreaseExceedsMax) -> Self {
4629                ()
4630            }
4631        }
4632        #[automatically_derived]
4633        #[doc(hidden)]
4634        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4635        for CommissionIncreaseExceedsMax {
4636            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4637                Self
4638            }
4639        }
4640        #[automatically_derived]
4641        impl alloy_sol_types::SolError for CommissionIncreaseExceedsMax {
4642            type Parameters<'a> = UnderlyingSolTuple<'a>;
4643            type Token<'a> = <Self::Parameters<
4644                'a,
4645            > as alloy_sol_types::SolType>::Token<'a>;
4646            const SIGNATURE: &'static str = "CommissionIncreaseExceedsMax()";
4647            const SELECTOR: [u8; 4] = [37u8, 173u8, 72u8, 202u8];
4648            #[inline]
4649            fn new<'a>(
4650                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4651            ) -> Self {
4652                tuple.into()
4653            }
4654            #[inline]
4655            fn tokenize(&self) -> Self::Token<'_> {
4656                ()
4657            }
4658            #[inline]
4659            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4660                <Self::Parameters<
4661                    '_,
4662                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4663                    .map(Self::new)
4664            }
4665        }
4666    };
4667    #[derive(serde::Serialize, serde::Deserialize)]
4668    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4669    /**Custom error with signature `CommissionUnchanged()` and selector `0xc20bac94`.
4670```solidity
4671error CommissionUnchanged();
4672```*/
4673    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4674    #[derive(Clone)]
4675    pub struct CommissionUnchanged;
4676    #[allow(
4677        non_camel_case_types,
4678        non_snake_case,
4679        clippy::pub_underscore_fields,
4680        clippy::style
4681    )]
4682    const _: () = {
4683        use alloy::sol_types as alloy_sol_types;
4684        #[doc(hidden)]
4685        #[allow(dead_code)]
4686        type UnderlyingSolTuple<'a> = ();
4687        #[doc(hidden)]
4688        type UnderlyingRustTuple<'a> = ();
4689        #[cfg(test)]
4690        #[allow(dead_code, unreachable_patterns)]
4691        fn _type_assertion(
4692            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4693        ) {
4694            match _t {
4695                alloy_sol_types::private::AssertTypeEq::<
4696                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4697                >(_) => {}
4698            }
4699        }
4700        #[automatically_derived]
4701        #[doc(hidden)]
4702        impl ::core::convert::From<CommissionUnchanged> for UnderlyingRustTuple<'_> {
4703            fn from(value: CommissionUnchanged) -> Self {
4704                ()
4705            }
4706        }
4707        #[automatically_derived]
4708        #[doc(hidden)]
4709        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUnchanged {
4710            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4711                Self
4712            }
4713        }
4714        #[automatically_derived]
4715        impl alloy_sol_types::SolError for CommissionUnchanged {
4716            type Parameters<'a> = UnderlyingSolTuple<'a>;
4717            type Token<'a> = <Self::Parameters<
4718                'a,
4719            > as alloy_sol_types::SolType>::Token<'a>;
4720            const SIGNATURE: &'static str = "CommissionUnchanged()";
4721            const SELECTOR: [u8; 4] = [194u8, 11u8, 172u8, 148u8];
4722            #[inline]
4723            fn new<'a>(
4724                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4725            ) -> Self {
4726                tuple.into()
4727            }
4728            #[inline]
4729            fn tokenize(&self) -> Self::Token<'_> {
4730                ()
4731            }
4732            #[inline]
4733            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4734                <Self::Parameters<
4735                    '_,
4736                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4737                    .map(Self::new)
4738            }
4739        }
4740    };
4741    #[derive(serde::Serialize, serde::Deserialize)]
4742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4743    /**Custom error with signature `CommissionUpdateTooSoon()` and selector `0x16eb94cb`.
4744```solidity
4745error CommissionUpdateTooSoon();
4746```*/
4747    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4748    #[derive(Clone)]
4749    pub struct CommissionUpdateTooSoon;
4750    #[allow(
4751        non_camel_case_types,
4752        non_snake_case,
4753        clippy::pub_underscore_fields,
4754        clippy::style
4755    )]
4756    const _: () = {
4757        use alloy::sol_types as alloy_sol_types;
4758        #[doc(hidden)]
4759        #[allow(dead_code)]
4760        type UnderlyingSolTuple<'a> = ();
4761        #[doc(hidden)]
4762        type UnderlyingRustTuple<'a> = ();
4763        #[cfg(test)]
4764        #[allow(dead_code, unreachable_patterns)]
4765        fn _type_assertion(
4766            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4767        ) {
4768            match _t {
4769                alloy_sol_types::private::AssertTypeEq::<
4770                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4771                >(_) => {}
4772            }
4773        }
4774        #[automatically_derived]
4775        #[doc(hidden)]
4776        impl ::core::convert::From<CommissionUpdateTooSoon> for UnderlyingRustTuple<'_> {
4777            fn from(value: CommissionUpdateTooSoon) -> Self {
4778                ()
4779            }
4780        }
4781        #[automatically_derived]
4782        #[doc(hidden)]
4783        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUpdateTooSoon {
4784            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4785                Self
4786            }
4787        }
4788        #[automatically_derived]
4789        impl alloy_sol_types::SolError for CommissionUpdateTooSoon {
4790            type Parameters<'a> = UnderlyingSolTuple<'a>;
4791            type Token<'a> = <Self::Parameters<
4792                'a,
4793            > as alloy_sol_types::SolType>::Token<'a>;
4794            const SIGNATURE: &'static str = "CommissionUpdateTooSoon()";
4795            const SELECTOR: [u8; 4] = [22u8, 235u8, 148u8, 203u8];
4796            #[inline]
4797            fn new<'a>(
4798                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4799            ) -> Self {
4800                tuple.into()
4801            }
4802            #[inline]
4803            fn tokenize(&self) -> Self::Token<'_> {
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 `DefaultAdminCannotBeRenounced()` and selector `0x8b78631d`.
4818```solidity
4819error DefaultAdminCannotBeRenounced();
4820```*/
4821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4822    #[derive(Clone)]
4823    pub struct DefaultAdminCannotBeRenounced;
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<DefaultAdminCannotBeRenounced>
4851        for UnderlyingRustTuple<'_> {
4852            fn from(value: DefaultAdminCannotBeRenounced) -> Self {
4853                ()
4854            }
4855        }
4856        #[automatically_derived]
4857        #[doc(hidden)]
4858        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4859        for DefaultAdminCannotBeRenounced {
4860            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4861                Self
4862            }
4863        }
4864        #[automatically_derived]
4865        impl alloy_sol_types::SolError for DefaultAdminCannotBeRenounced {
4866            type Parameters<'a> = UnderlyingSolTuple<'a>;
4867            type Token<'a> = <Self::Parameters<
4868                'a,
4869            > as alloy_sol_types::SolType>::Token<'a>;
4870            const SIGNATURE: &'static str = "DefaultAdminCannotBeRenounced()";
4871            const SELECTOR: [u8; 4] = [139u8, 120u8, 99u8, 29u8];
4872            #[inline]
4873            fn new<'a>(
4874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4875            ) -> Self {
4876                tuple.into()
4877            }
4878            #[inline]
4879            fn tokenize(&self) -> Self::Token<'_> {
4880                ()
4881            }
4882            #[inline]
4883            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4884                <Self::Parameters<
4885                    '_,
4886                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4887                    .map(Self::new)
4888            }
4889        }
4890    };
4891    #[derive(serde::Serialize, serde::Deserialize)]
4892    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4893    /**Custom error with signature `DefaultAdminCannotBeRevoked()` and selector `0xb0b5fb99`.
4894```solidity
4895error DefaultAdminCannotBeRevoked();
4896```*/
4897    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4898    #[derive(Clone)]
4899    pub struct DefaultAdminCannotBeRevoked;
4900    #[allow(
4901        non_camel_case_types,
4902        non_snake_case,
4903        clippy::pub_underscore_fields,
4904        clippy::style
4905    )]
4906    const _: () = {
4907        use alloy::sol_types as alloy_sol_types;
4908        #[doc(hidden)]
4909        #[allow(dead_code)]
4910        type UnderlyingSolTuple<'a> = ();
4911        #[doc(hidden)]
4912        type UnderlyingRustTuple<'a> = ();
4913        #[cfg(test)]
4914        #[allow(dead_code, unreachable_patterns)]
4915        fn _type_assertion(
4916            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4917        ) {
4918            match _t {
4919                alloy_sol_types::private::AssertTypeEq::<
4920                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4921                >(_) => {}
4922            }
4923        }
4924        #[automatically_derived]
4925        #[doc(hidden)]
4926        impl ::core::convert::From<DefaultAdminCannotBeRevoked>
4927        for UnderlyingRustTuple<'_> {
4928            fn from(value: DefaultAdminCannotBeRevoked) -> Self {
4929                ()
4930            }
4931        }
4932        #[automatically_derived]
4933        #[doc(hidden)]
4934        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4935        for DefaultAdminCannotBeRevoked {
4936            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4937                Self
4938            }
4939        }
4940        #[automatically_derived]
4941        impl alloy_sol_types::SolError for DefaultAdminCannotBeRevoked {
4942            type Parameters<'a> = UnderlyingSolTuple<'a>;
4943            type Token<'a> = <Self::Parameters<
4944                'a,
4945            > as alloy_sol_types::SolType>::Token<'a>;
4946            const SIGNATURE: &'static str = "DefaultAdminCannotBeRevoked()";
4947            const SELECTOR: [u8; 4] = [176u8, 181u8, 251u8, 153u8];
4948            #[inline]
4949            fn new<'a>(
4950                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4951            ) -> Self {
4952                tuple.into()
4953            }
4954            #[inline]
4955            fn tokenize(&self) -> Self::Token<'_> {
4956                ()
4957            }
4958            #[inline]
4959            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4960                <Self::Parameters<
4961                    '_,
4962                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4963                    .map(Self::new)
4964            }
4965        }
4966    };
4967    #[derive(serde::Serialize, serde::Deserialize)]
4968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4969    /**Custom error with signature `DelegateAmountTooSmall()` and selector `0x7d298731`.
4970```solidity
4971error DelegateAmountTooSmall();
4972```*/
4973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4974    #[derive(Clone)]
4975    pub struct DelegateAmountTooSmall;
4976    #[allow(
4977        non_camel_case_types,
4978        non_snake_case,
4979        clippy::pub_underscore_fields,
4980        clippy::style
4981    )]
4982    const _: () = {
4983        use alloy::sol_types as alloy_sol_types;
4984        #[doc(hidden)]
4985        #[allow(dead_code)]
4986        type UnderlyingSolTuple<'a> = ();
4987        #[doc(hidden)]
4988        type UnderlyingRustTuple<'a> = ();
4989        #[cfg(test)]
4990        #[allow(dead_code, unreachable_patterns)]
4991        fn _type_assertion(
4992            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4993        ) {
4994            match _t {
4995                alloy_sol_types::private::AssertTypeEq::<
4996                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4997                >(_) => {}
4998            }
4999        }
5000        #[automatically_derived]
5001        #[doc(hidden)]
5002        impl ::core::convert::From<DelegateAmountTooSmall> for UnderlyingRustTuple<'_> {
5003            fn from(value: DelegateAmountTooSmall) -> Self {
5004                ()
5005            }
5006        }
5007        #[automatically_derived]
5008        #[doc(hidden)]
5009        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DelegateAmountTooSmall {
5010            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5011                Self
5012            }
5013        }
5014        #[automatically_derived]
5015        impl alloy_sol_types::SolError for DelegateAmountTooSmall {
5016            type Parameters<'a> = UnderlyingSolTuple<'a>;
5017            type Token<'a> = <Self::Parameters<
5018                'a,
5019            > as alloy_sol_types::SolType>::Token<'a>;
5020            const SIGNATURE: &'static str = "DelegateAmountTooSmall()";
5021            const SELECTOR: [u8; 4] = [125u8, 41u8, 135u8, 49u8];
5022            #[inline]
5023            fn new<'a>(
5024                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5025            ) -> Self {
5026                tuple.into()
5027            }
5028            #[inline]
5029            fn tokenize(&self) -> Self::Token<'_> {
5030                ()
5031            }
5032            #[inline]
5033            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5034                <Self::Parameters<
5035                    '_,
5036                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5037                    .map(Self::new)
5038            }
5039        }
5040    };
5041    #[derive(serde::Serialize, serde::Deserialize)]
5042    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5043    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
5044```solidity
5045error DeprecatedFunction();
5046```*/
5047    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5048    #[derive(Clone)]
5049    pub struct DeprecatedFunction;
5050    #[allow(
5051        non_camel_case_types,
5052        non_snake_case,
5053        clippy::pub_underscore_fields,
5054        clippy::style
5055    )]
5056    const _: () = {
5057        use alloy::sol_types as alloy_sol_types;
5058        #[doc(hidden)]
5059        #[allow(dead_code)]
5060        type UnderlyingSolTuple<'a> = ();
5061        #[doc(hidden)]
5062        type UnderlyingRustTuple<'a> = ();
5063        #[cfg(test)]
5064        #[allow(dead_code, unreachable_patterns)]
5065        fn _type_assertion(
5066            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5067        ) {
5068            match _t {
5069                alloy_sol_types::private::AssertTypeEq::<
5070                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5071                >(_) => {}
5072            }
5073        }
5074        #[automatically_derived]
5075        #[doc(hidden)]
5076        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
5077            fn from(value: DeprecatedFunction) -> Self {
5078                ()
5079            }
5080        }
5081        #[automatically_derived]
5082        #[doc(hidden)]
5083        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
5084            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5085                Self
5086            }
5087        }
5088        #[automatically_derived]
5089        impl alloy_sol_types::SolError for DeprecatedFunction {
5090            type Parameters<'a> = UnderlyingSolTuple<'a>;
5091            type Token<'a> = <Self::Parameters<
5092                'a,
5093            > as alloy_sol_types::SolType>::Token<'a>;
5094            const SIGNATURE: &'static str = "DeprecatedFunction()";
5095            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
5096            #[inline]
5097            fn new<'a>(
5098                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5099            ) -> Self {
5100                tuple.into()
5101            }
5102            #[inline]
5103            fn tokenize(&self) -> Self::Token<'_> {
5104                ()
5105            }
5106            #[inline]
5107            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5108                <Self::Parameters<
5109                    '_,
5110                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5111                    .map(Self::new)
5112            }
5113        }
5114    };
5115    #[derive(serde::Serialize, serde::Deserialize)]
5116    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5117    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5118```solidity
5119error ERC1967InvalidImplementation(address implementation);
5120```*/
5121    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5122    #[derive(Clone)]
5123    pub struct ERC1967InvalidImplementation {
5124        #[allow(missing_docs)]
5125        pub implementation: alloy::sol_types::private::Address,
5126    }
5127    #[allow(
5128        non_camel_case_types,
5129        non_snake_case,
5130        clippy::pub_underscore_fields,
5131        clippy::style
5132    )]
5133    const _: () = {
5134        use alloy::sol_types as alloy_sol_types;
5135        #[doc(hidden)]
5136        #[allow(dead_code)]
5137        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5138        #[doc(hidden)]
5139        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5140        #[cfg(test)]
5141        #[allow(dead_code, unreachable_patterns)]
5142        fn _type_assertion(
5143            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5144        ) {
5145            match _t {
5146                alloy_sol_types::private::AssertTypeEq::<
5147                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5148                >(_) => {}
5149            }
5150        }
5151        #[automatically_derived]
5152        #[doc(hidden)]
5153        impl ::core::convert::From<ERC1967InvalidImplementation>
5154        for UnderlyingRustTuple<'_> {
5155            fn from(value: ERC1967InvalidImplementation) -> Self {
5156                (value.implementation,)
5157            }
5158        }
5159        #[automatically_derived]
5160        #[doc(hidden)]
5161        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5162        for ERC1967InvalidImplementation {
5163            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5164                Self { implementation: tuple.0 }
5165            }
5166        }
5167        #[automatically_derived]
5168        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5169            type Parameters<'a> = UnderlyingSolTuple<'a>;
5170            type Token<'a> = <Self::Parameters<
5171                'a,
5172            > as alloy_sol_types::SolType>::Token<'a>;
5173            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5174            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5175            #[inline]
5176            fn new<'a>(
5177                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5178            ) -> Self {
5179                tuple.into()
5180            }
5181            #[inline]
5182            fn tokenize(&self) -> Self::Token<'_> {
5183                (
5184                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5185                        &self.implementation,
5186                    ),
5187                )
5188            }
5189            #[inline]
5190            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5191                <Self::Parameters<
5192                    '_,
5193                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5194                    .map(Self::new)
5195            }
5196        }
5197    };
5198    #[derive(serde::Serialize, serde::Deserialize)]
5199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5200    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5201```solidity
5202error ERC1967NonPayable();
5203```*/
5204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5205    #[derive(Clone)]
5206    pub struct ERC1967NonPayable;
5207    #[allow(
5208        non_camel_case_types,
5209        non_snake_case,
5210        clippy::pub_underscore_fields,
5211        clippy::style
5212    )]
5213    const _: () = {
5214        use alloy::sol_types as alloy_sol_types;
5215        #[doc(hidden)]
5216        #[allow(dead_code)]
5217        type UnderlyingSolTuple<'a> = ();
5218        #[doc(hidden)]
5219        type UnderlyingRustTuple<'a> = ();
5220        #[cfg(test)]
5221        #[allow(dead_code, unreachable_patterns)]
5222        fn _type_assertion(
5223            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5224        ) {
5225            match _t {
5226                alloy_sol_types::private::AssertTypeEq::<
5227                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5228                >(_) => {}
5229            }
5230        }
5231        #[automatically_derived]
5232        #[doc(hidden)]
5233        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5234            fn from(value: ERC1967NonPayable) -> Self {
5235                ()
5236            }
5237        }
5238        #[automatically_derived]
5239        #[doc(hidden)]
5240        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5241            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5242                Self
5243            }
5244        }
5245        #[automatically_derived]
5246        impl alloy_sol_types::SolError for ERC1967NonPayable {
5247            type Parameters<'a> = UnderlyingSolTuple<'a>;
5248            type Token<'a> = <Self::Parameters<
5249                'a,
5250            > as alloy_sol_types::SolType>::Token<'a>;
5251            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5252            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5253            #[inline]
5254            fn new<'a>(
5255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5256            ) -> Self {
5257                tuple.into()
5258            }
5259            #[inline]
5260            fn tokenize(&self) -> Self::Token<'_> {
5261                ()
5262            }
5263            #[inline]
5264            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5265                <Self::Parameters<
5266                    '_,
5267                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5268                    .map(Self::new)
5269            }
5270        }
5271    };
5272    #[derive(serde::Serialize, serde::Deserialize)]
5273    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5274    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
5275```solidity
5276error EnforcedPause();
5277```*/
5278    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5279    #[derive(Clone)]
5280    pub struct EnforcedPause;
5281    #[allow(
5282        non_camel_case_types,
5283        non_snake_case,
5284        clippy::pub_underscore_fields,
5285        clippy::style
5286    )]
5287    const _: () = {
5288        use alloy::sol_types as alloy_sol_types;
5289        #[doc(hidden)]
5290        #[allow(dead_code)]
5291        type UnderlyingSolTuple<'a> = ();
5292        #[doc(hidden)]
5293        type UnderlyingRustTuple<'a> = ();
5294        #[cfg(test)]
5295        #[allow(dead_code, unreachable_patterns)]
5296        fn _type_assertion(
5297            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5298        ) {
5299            match _t {
5300                alloy_sol_types::private::AssertTypeEq::<
5301                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5302                >(_) => {}
5303            }
5304        }
5305        #[automatically_derived]
5306        #[doc(hidden)]
5307        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
5308            fn from(value: EnforcedPause) -> Self {
5309                ()
5310            }
5311        }
5312        #[automatically_derived]
5313        #[doc(hidden)]
5314        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
5315            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5316                Self
5317            }
5318        }
5319        #[automatically_derived]
5320        impl alloy_sol_types::SolError for EnforcedPause {
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 = "EnforcedPause()";
5326            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
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 `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
5349```solidity
5350error ExitEscrowPeriodInvalid();
5351```*/
5352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5353    #[derive(Clone)]
5354    pub struct ExitEscrowPeriodInvalid;
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<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
5382            fn from(value: ExitEscrowPeriodInvalid) -> Self {
5383                ()
5384            }
5385        }
5386        #[automatically_derived]
5387        #[doc(hidden)]
5388        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
5389            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5390                Self
5391            }
5392        }
5393        #[automatically_derived]
5394        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
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 = "ExitEscrowPeriodInvalid()";
5400            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
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 `ExpectedPause()` and selector `0x8dfc202b`.
5423```solidity
5424error ExpectedPause();
5425```*/
5426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5427    #[derive(Clone)]
5428    pub struct ExpectedPause;
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<ExpectedPause> for UnderlyingRustTuple<'_> {
5456            fn from(value: ExpectedPause) -> Self {
5457                ()
5458            }
5459        }
5460        #[automatically_derived]
5461        #[doc(hidden)]
5462        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
5463            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5464                Self
5465            }
5466        }
5467        #[automatically_derived]
5468        impl alloy_sol_types::SolError for ExpectedPause {
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 = "ExpectedPause()";
5474            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
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 `FailedInnerCall()` and selector `0x1425ea42`.
5497```solidity
5498error FailedInnerCall();
5499```*/
5500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5501    #[derive(Clone)]
5502    pub struct FailedInnerCall;
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<FailedInnerCall> for UnderlyingRustTuple<'_> {
5530            fn from(value: FailedInnerCall) -> Self {
5531                ()
5532            }
5533        }
5534        #[automatically_derived]
5535        #[doc(hidden)]
5536        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5537            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5538                Self
5539            }
5540        }
5541        #[automatically_derived]
5542        impl alloy_sol_types::SolError for FailedInnerCall {
5543            type Parameters<'a> = UnderlyingSolTuple<'a>;
5544            type Token<'a> = <Self::Parameters<
5545                'a,
5546            > as alloy_sol_types::SolType>::Token<'a>;
5547            const SIGNATURE: &'static str = "FailedInnerCall()";
5548            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5549            #[inline]
5550            fn new<'a>(
5551                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5552            ) -> Self {
5553                tuple.into()
5554            }
5555            #[inline]
5556            fn tokenize(&self) -> Self::Token<'_> {
5557                ()
5558            }
5559            #[inline]
5560            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5561                <Self::Parameters<
5562                    '_,
5563                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5564                    .map(Self::new)
5565            }
5566        }
5567    };
5568    #[derive(serde::Serialize, serde::Deserialize)]
5569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5570    /**Custom error with signature `InitialActiveStakeExceedsBalance()` and selector `0x7b269e92`.
5571```solidity
5572error InitialActiveStakeExceedsBalance();
5573```*/
5574    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5575    #[derive(Clone)]
5576    pub struct InitialActiveStakeExceedsBalance;
5577    #[allow(
5578        non_camel_case_types,
5579        non_snake_case,
5580        clippy::pub_underscore_fields,
5581        clippy::style
5582    )]
5583    const _: () = {
5584        use alloy::sol_types as alloy_sol_types;
5585        #[doc(hidden)]
5586        #[allow(dead_code)]
5587        type UnderlyingSolTuple<'a> = ();
5588        #[doc(hidden)]
5589        type UnderlyingRustTuple<'a> = ();
5590        #[cfg(test)]
5591        #[allow(dead_code, unreachable_patterns)]
5592        fn _type_assertion(
5593            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5594        ) {
5595            match _t {
5596                alloy_sol_types::private::AssertTypeEq::<
5597                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5598                >(_) => {}
5599            }
5600        }
5601        #[automatically_derived]
5602        #[doc(hidden)]
5603        impl ::core::convert::From<InitialActiveStakeExceedsBalance>
5604        for UnderlyingRustTuple<'_> {
5605            fn from(value: InitialActiveStakeExceedsBalance) -> Self {
5606                ()
5607            }
5608        }
5609        #[automatically_derived]
5610        #[doc(hidden)]
5611        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5612        for InitialActiveStakeExceedsBalance {
5613            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5614                Self
5615            }
5616        }
5617        #[automatically_derived]
5618        impl alloy_sol_types::SolError for InitialActiveStakeExceedsBalance {
5619            type Parameters<'a> = UnderlyingSolTuple<'a>;
5620            type Token<'a> = <Self::Parameters<
5621                'a,
5622            > as alloy_sol_types::SolType>::Token<'a>;
5623            const SIGNATURE: &'static str = "InitialActiveStakeExceedsBalance()";
5624            const SELECTOR: [u8; 4] = [123u8, 38u8, 158u8, 146u8];
5625            #[inline]
5626            fn new<'a>(
5627                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5628            ) -> Self {
5629                tuple.into()
5630            }
5631            #[inline]
5632            fn tokenize(&self) -> Self::Token<'_> {
5633                ()
5634            }
5635            #[inline]
5636            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5637                <Self::Parameters<
5638                    '_,
5639                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5640                    .map(Self::new)
5641            }
5642        }
5643    };
5644    #[derive(serde::Serialize, serde::Deserialize)]
5645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5646    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
5647```solidity
5648error InsufficientAllowance(uint256, uint256);
5649```*/
5650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5651    #[derive(Clone)]
5652    pub struct InsufficientAllowance {
5653        #[allow(missing_docs)]
5654        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5655        #[allow(missing_docs)]
5656        pub _1: alloy::sol_types::private::primitives::aliases::U256,
5657    }
5658    #[allow(
5659        non_camel_case_types,
5660        non_snake_case,
5661        clippy::pub_underscore_fields,
5662        clippy::style
5663    )]
5664    const _: () = {
5665        use alloy::sol_types as alloy_sol_types;
5666        #[doc(hidden)]
5667        #[allow(dead_code)]
5668        type UnderlyingSolTuple<'a> = (
5669            alloy::sol_types::sol_data::Uint<256>,
5670            alloy::sol_types::sol_data::Uint<256>,
5671        );
5672        #[doc(hidden)]
5673        type UnderlyingRustTuple<'a> = (
5674            alloy::sol_types::private::primitives::aliases::U256,
5675            alloy::sol_types::private::primitives::aliases::U256,
5676        );
5677        #[cfg(test)]
5678        #[allow(dead_code, unreachable_patterns)]
5679        fn _type_assertion(
5680            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5681        ) {
5682            match _t {
5683                alloy_sol_types::private::AssertTypeEq::<
5684                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5685                >(_) => {}
5686            }
5687        }
5688        #[automatically_derived]
5689        #[doc(hidden)]
5690        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
5691            fn from(value: InsufficientAllowance) -> Self {
5692                (value._0, value._1)
5693            }
5694        }
5695        #[automatically_derived]
5696        #[doc(hidden)]
5697        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
5698            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5699                Self { _0: tuple.0, _1: tuple.1 }
5700            }
5701        }
5702        #[automatically_derived]
5703        impl alloy_sol_types::SolError for InsufficientAllowance {
5704            type Parameters<'a> = UnderlyingSolTuple<'a>;
5705            type Token<'a> = <Self::Parameters<
5706                'a,
5707            > as alloy_sol_types::SolType>::Token<'a>;
5708            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
5709            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
5710            #[inline]
5711            fn new<'a>(
5712                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5713            ) -> Self {
5714                tuple.into()
5715            }
5716            #[inline]
5717            fn tokenize(&self) -> Self::Token<'_> {
5718                (
5719                    <alloy::sol_types::sol_data::Uint<
5720                        256,
5721                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5722                    <alloy::sol_types::sol_data::Uint<
5723                        256,
5724                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5725                )
5726            }
5727            #[inline]
5728            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5729                <Self::Parameters<
5730                    '_,
5731                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5732                    .map(Self::new)
5733            }
5734        }
5735    };
5736    #[derive(serde::Serialize, serde::Deserialize)]
5737    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5738    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
5739```solidity
5740error InsufficientBalance(uint256);
5741```*/
5742    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5743    #[derive(Clone)]
5744    pub struct InsufficientBalance(
5745        pub alloy::sol_types::private::primitives::aliases::U256,
5746    );
5747    #[allow(
5748        non_camel_case_types,
5749        non_snake_case,
5750        clippy::pub_underscore_fields,
5751        clippy::style
5752    )]
5753    const _: () = {
5754        use alloy::sol_types as alloy_sol_types;
5755        #[doc(hidden)]
5756        #[allow(dead_code)]
5757        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5758        #[doc(hidden)]
5759        type UnderlyingRustTuple<'a> = (
5760            alloy::sol_types::private::primitives::aliases::U256,
5761        );
5762        #[cfg(test)]
5763        #[allow(dead_code, unreachable_patterns)]
5764        fn _type_assertion(
5765            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5766        ) {
5767            match _t {
5768                alloy_sol_types::private::AssertTypeEq::<
5769                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5770                >(_) => {}
5771            }
5772        }
5773        #[automatically_derived]
5774        #[doc(hidden)]
5775        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
5776            fn from(value: InsufficientBalance) -> Self {
5777                (value.0,)
5778            }
5779        }
5780        #[automatically_derived]
5781        #[doc(hidden)]
5782        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
5783            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5784                Self(tuple.0)
5785            }
5786        }
5787        #[automatically_derived]
5788        impl alloy_sol_types::SolError for InsufficientBalance {
5789            type Parameters<'a> = UnderlyingSolTuple<'a>;
5790            type Token<'a> = <Self::Parameters<
5791                'a,
5792            > as alloy_sol_types::SolType>::Token<'a>;
5793            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
5794            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
5795            #[inline]
5796            fn new<'a>(
5797                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5798            ) -> Self {
5799                tuple.into()
5800            }
5801            #[inline]
5802            fn tokenize(&self) -> Self::Token<'_> {
5803                (
5804                    <alloy::sol_types::sol_data::Uint<
5805                        256,
5806                    > as alloy_sol_types::SolType>::tokenize(&self.0),
5807                )
5808            }
5809            #[inline]
5810            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5811                <Self::Parameters<
5812                    '_,
5813                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5814                    .map(Self::new)
5815            }
5816        }
5817    };
5818    #[derive(serde::Serialize, serde::Deserialize)]
5819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5820    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
5821```solidity
5822error InvalidCommission();
5823```*/
5824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5825    #[derive(Clone)]
5826    pub struct InvalidCommission;
5827    #[allow(
5828        non_camel_case_types,
5829        non_snake_case,
5830        clippy::pub_underscore_fields,
5831        clippy::style
5832    )]
5833    const _: () = {
5834        use alloy::sol_types as alloy_sol_types;
5835        #[doc(hidden)]
5836        #[allow(dead_code)]
5837        type UnderlyingSolTuple<'a> = ();
5838        #[doc(hidden)]
5839        type UnderlyingRustTuple<'a> = ();
5840        #[cfg(test)]
5841        #[allow(dead_code, unreachable_patterns)]
5842        fn _type_assertion(
5843            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5844        ) {
5845            match _t {
5846                alloy_sol_types::private::AssertTypeEq::<
5847                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5848                >(_) => {}
5849            }
5850        }
5851        #[automatically_derived]
5852        #[doc(hidden)]
5853        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
5854            fn from(value: InvalidCommission) -> Self {
5855                ()
5856            }
5857        }
5858        #[automatically_derived]
5859        #[doc(hidden)]
5860        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
5861            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5862                Self
5863            }
5864        }
5865        #[automatically_derived]
5866        impl alloy_sol_types::SolError for InvalidCommission {
5867            type Parameters<'a> = UnderlyingSolTuple<'a>;
5868            type Token<'a> = <Self::Parameters<
5869                'a,
5870            > as alloy_sol_types::SolType>::Token<'a>;
5871            const SIGNATURE: &'static str = "InvalidCommission()";
5872            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
5873            #[inline]
5874            fn new<'a>(
5875                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5876            ) -> Self {
5877                tuple.into()
5878            }
5879            #[inline]
5880            fn tokenize(&self) -> Self::Token<'_> {
5881                ()
5882            }
5883            #[inline]
5884            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5885                <Self::Parameters<
5886                    '_,
5887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5888                    .map(Self::new)
5889            }
5890        }
5891    };
5892    #[derive(serde::Serialize, serde::Deserialize)]
5893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5894    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
5895```solidity
5896error InvalidG1();
5897```*/
5898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5899    #[derive(Clone)]
5900    pub struct InvalidG1;
5901    #[allow(
5902        non_camel_case_types,
5903        non_snake_case,
5904        clippy::pub_underscore_fields,
5905        clippy::style
5906    )]
5907    const _: () = {
5908        use alloy::sol_types as alloy_sol_types;
5909        #[doc(hidden)]
5910        #[allow(dead_code)]
5911        type UnderlyingSolTuple<'a> = ();
5912        #[doc(hidden)]
5913        type UnderlyingRustTuple<'a> = ();
5914        #[cfg(test)]
5915        #[allow(dead_code, unreachable_patterns)]
5916        fn _type_assertion(
5917            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5918        ) {
5919            match _t {
5920                alloy_sol_types::private::AssertTypeEq::<
5921                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5922                >(_) => {}
5923            }
5924        }
5925        #[automatically_derived]
5926        #[doc(hidden)]
5927        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
5928            fn from(value: InvalidG1) -> Self {
5929                ()
5930            }
5931        }
5932        #[automatically_derived]
5933        #[doc(hidden)]
5934        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
5935            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5936                Self
5937            }
5938        }
5939        #[automatically_derived]
5940        impl alloy_sol_types::SolError for InvalidG1 {
5941            type Parameters<'a> = UnderlyingSolTuple<'a>;
5942            type Token<'a> = <Self::Parameters<
5943                'a,
5944            > as alloy_sol_types::SolType>::Token<'a>;
5945            const SIGNATURE: &'static str = "InvalidG1()";
5946            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
5947            #[inline]
5948            fn new<'a>(
5949                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5950            ) -> Self {
5951                tuple.into()
5952            }
5953            #[inline]
5954            fn tokenize(&self) -> Self::Token<'_> {
5955                ()
5956            }
5957            #[inline]
5958            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5959                <Self::Parameters<
5960                    '_,
5961                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5962                    .map(Self::new)
5963            }
5964        }
5965    };
5966    #[derive(serde::Serialize, serde::Deserialize)]
5967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5968    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5969```solidity
5970error InvalidInitialization();
5971```*/
5972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5973    #[derive(Clone)]
5974    pub struct InvalidInitialization;
5975    #[allow(
5976        non_camel_case_types,
5977        non_snake_case,
5978        clippy::pub_underscore_fields,
5979        clippy::style
5980    )]
5981    const _: () = {
5982        use alloy::sol_types as alloy_sol_types;
5983        #[doc(hidden)]
5984        #[allow(dead_code)]
5985        type UnderlyingSolTuple<'a> = ();
5986        #[doc(hidden)]
5987        type UnderlyingRustTuple<'a> = ();
5988        #[cfg(test)]
5989        #[allow(dead_code, unreachable_patterns)]
5990        fn _type_assertion(
5991            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5992        ) {
5993            match _t {
5994                alloy_sol_types::private::AssertTypeEq::<
5995                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5996                >(_) => {}
5997            }
5998        }
5999        #[automatically_derived]
6000        #[doc(hidden)]
6001        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6002            fn from(value: InvalidInitialization) -> Self {
6003                ()
6004            }
6005        }
6006        #[automatically_derived]
6007        #[doc(hidden)]
6008        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6009            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6010                Self
6011            }
6012        }
6013        #[automatically_derived]
6014        impl alloy_sol_types::SolError for InvalidInitialization {
6015            type Parameters<'a> = UnderlyingSolTuple<'a>;
6016            type Token<'a> = <Self::Parameters<
6017                'a,
6018            > as alloy_sol_types::SolType>::Token<'a>;
6019            const SIGNATURE: &'static str = "InvalidInitialization()";
6020            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6021            #[inline]
6022            fn new<'a>(
6023                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6024            ) -> Self {
6025                tuple.into()
6026            }
6027            #[inline]
6028            fn tokenize(&self) -> Self::Token<'_> {
6029                ()
6030            }
6031            #[inline]
6032            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6033                <Self::Parameters<
6034                    '_,
6035                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6036                    .map(Self::new)
6037            }
6038        }
6039    };
6040    #[derive(serde::Serialize, serde::Deserialize)]
6041    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6042    /**Custom error with signature `InvalidMetadataUriLength()` and selector `0x239ff57f`.
6043```solidity
6044error InvalidMetadataUriLength();
6045```*/
6046    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6047    #[derive(Clone)]
6048    pub struct InvalidMetadataUriLength;
6049    #[allow(
6050        non_camel_case_types,
6051        non_snake_case,
6052        clippy::pub_underscore_fields,
6053        clippy::style
6054    )]
6055    const _: () = {
6056        use alloy::sol_types as alloy_sol_types;
6057        #[doc(hidden)]
6058        #[allow(dead_code)]
6059        type UnderlyingSolTuple<'a> = ();
6060        #[doc(hidden)]
6061        type UnderlyingRustTuple<'a> = ();
6062        #[cfg(test)]
6063        #[allow(dead_code, unreachable_patterns)]
6064        fn _type_assertion(
6065            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6066        ) {
6067            match _t {
6068                alloy_sol_types::private::AssertTypeEq::<
6069                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6070                >(_) => {}
6071            }
6072        }
6073        #[automatically_derived]
6074        #[doc(hidden)]
6075        impl ::core::convert::From<InvalidMetadataUriLength>
6076        for UnderlyingRustTuple<'_> {
6077            fn from(value: InvalidMetadataUriLength) -> Self {
6078                ()
6079            }
6080        }
6081        #[automatically_derived]
6082        #[doc(hidden)]
6083        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6084        for InvalidMetadataUriLength {
6085            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6086                Self
6087            }
6088        }
6089        #[automatically_derived]
6090        impl alloy_sol_types::SolError for InvalidMetadataUriLength {
6091            type Parameters<'a> = UnderlyingSolTuple<'a>;
6092            type Token<'a> = <Self::Parameters<
6093                'a,
6094            > as alloy_sol_types::SolType>::Token<'a>;
6095            const SIGNATURE: &'static str = "InvalidMetadataUriLength()";
6096            const SELECTOR: [u8; 4] = [35u8, 159u8, 245u8, 127u8];
6097            #[inline]
6098            fn new<'a>(
6099                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6100            ) -> Self {
6101                tuple.into()
6102            }
6103            #[inline]
6104            fn tokenize(&self) -> Self::Token<'_> {
6105                ()
6106            }
6107            #[inline]
6108            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6109                <Self::Parameters<
6110                    '_,
6111                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6112                    .map(Self::new)
6113            }
6114        }
6115    };
6116    #[derive(serde::Serialize, serde::Deserialize)]
6117    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6118    /**Custom error with signature `InvalidRateLimitParameters()` and selector `0x674e8ef3`.
6119```solidity
6120error InvalidRateLimitParameters();
6121```*/
6122    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6123    #[derive(Clone)]
6124    pub struct InvalidRateLimitParameters;
6125    #[allow(
6126        non_camel_case_types,
6127        non_snake_case,
6128        clippy::pub_underscore_fields,
6129        clippy::style
6130    )]
6131    const _: () = {
6132        use alloy::sol_types as alloy_sol_types;
6133        #[doc(hidden)]
6134        #[allow(dead_code)]
6135        type UnderlyingSolTuple<'a> = ();
6136        #[doc(hidden)]
6137        type UnderlyingRustTuple<'a> = ();
6138        #[cfg(test)]
6139        #[allow(dead_code, unreachable_patterns)]
6140        fn _type_assertion(
6141            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6142        ) {
6143            match _t {
6144                alloy_sol_types::private::AssertTypeEq::<
6145                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6146                >(_) => {}
6147            }
6148        }
6149        #[automatically_derived]
6150        #[doc(hidden)]
6151        impl ::core::convert::From<InvalidRateLimitParameters>
6152        for UnderlyingRustTuple<'_> {
6153            fn from(value: InvalidRateLimitParameters) -> Self {
6154                ()
6155            }
6156        }
6157        #[automatically_derived]
6158        #[doc(hidden)]
6159        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6160        for InvalidRateLimitParameters {
6161            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6162                Self
6163            }
6164        }
6165        #[automatically_derived]
6166        impl alloy_sol_types::SolError for InvalidRateLimitParameters {
6167            type Parameters<'a> = UnderlyingSolTuple<'a>;
6168            type Token<'a> = <Self::Parameters<
6169                'a,
6170            > as alloy_sol_types::SolType>::Token<'a>;
6171            const SIGNATURE: &'static str = "InvalidRateLimitParameters()";
6172            const SELECTOR: [u8; 4] = [103u8, 78u8, 142u8, 243u8];
6173            #[inline]
6174            fn new<'a>(
6175                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6176            ) -> Self {
6177                tuple.into()
6178            }
6179            #[inline]
6180            fn tokenize(&self) -> Self::Token<'_> {
6181                ()
6182            }
6183            #[inline]
6184            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6185                <Self::Parameters<
6186                    '_,
6187                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6188                    .map(Self::new)
6189            }
6190        }
6191    };
6192    #[derive(serde::Serialize, serde::Deserialize)]
6193    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6194    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
6195```solidity
6196error InvalidSchnorrSig();
6197```*/
6198    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6199    #[derive(Clone)]
6200    pub struct InvalidSchnorrSig;
6201    #[allow(
6202        non_camel_case_types,
6203        non_snake_case,
6204        clippy::pub_underscore_fields,
6205        clippy::style
6206    )]
6207    const _: () = {
6208        use alloy::sol_types as alloy_sol_types;
6209        #[doc(hidden)]
6210        #[allow(dead_code)]
6211        type UnderlyingSolTuple<'a> = ();
6212        #[doc(hidden)]
6213        type UnderlyingRustTuple<'a> = ();
6214        #[cfg(test)]
6215        #[allow(dead_code, unreachable_patterns)]
6216        fn _type_assertion(
6217            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6218        ) {
6219            match _t {
6220                alloy_sol_types::private::AssertTypeEq::<
6221                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6222                >(_) => {}
6223            }
6224        }
6225        #[automatically_derived]
6226        #[doc(hidden)]
6227        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
6228            fn from(value: InvalidSchnorrSig) -> Self {
6229                ()
6230            }
6231        }
6232        #[automatically_derived]
6233        #[doc(hidden)]
6234        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
6235            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6236                Self
6237            }
6238        }
6239        #[automatically_derived]
6240        impl alloy_sol_types::SolError for InvalidSchnorrSig {
6241            type Parameters<'a> = UnderlyingSolTuple<'a>;
6242            type Token<'a> = <Self::Parameters<
6243                'a,
6244            > as alloy_sol_types::SolType>::Token<'a>;
6245            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
6246            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
6247            #[inline]
6248            fn new<'a>(
6249                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6250            ) -> Self {
6251                tuple.into()
6252            }
6253            #[inline]
6254            fn tokenize(&self) -> Self::Token<'_> {
6255                ()
6256            }
6257            #[inline]
6258            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6259                <Self::Parameters<
6260                    '_,
6261                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6262                    .map(Self::new)
6263            }
6264        }
6265    };
6266    #[derive(serde::Serialize, serde::Deserialize)]
6267    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6268    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
6269```solidity
6270error InvalidSchnorrVK();
6271```*/
6272    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6273    #[derive(Clone)]
6274    pub struct InvalidSchnorrVK;
6275    #[allow(
6276        non_camel_case_types,
6277        non_snake_case,
6278        clippy::pub_underscore_fields,
6279        clippy::style
6280    )]
6281    const _: () = {
6282        use alloy::sol_types as alloy_sol_types;
6283        #[doc(hidden)]
6284        #[allow(dead_code)]
6285        type UnderlyingSolTuple<'a> = ();
6286        #[doc(hidden)]
6287        type UnderlyingRustTuple<'a> = ();
6288        #[cfg(test)]
6289        #[allow(dead_code, unreachable_patterns)]
6290        fn _type_assertion(
6291            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6292        ) {
6293            match _t {
6294                alloy_sol_types::private::AssertTypeEq::<
6295                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6296                >(_) => {}
6297            }
6298        }
6299        #[automatically_derived]
6300        #[doc(hidden)]
6301        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
6302            fn from(value: InvalidSchnorrVK) -> Self {
6303                ()
6304            }
6305        }
6306        #[automatically_derived]
6307        #[doc(hidden)]
6308        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
6309            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6310                Self
6311            }
6312        }
6313        #[automatically_derived]
6314        impl alloy_sol_types::SolError for InvalidSchnorrVK {
6315            type Parameters<'a> = UnderlyingSolTuple<'a>;
6316            type Token<'a> = <Self::Parameters<
6317                'a,
6318            > as alloy_sol_types::SolType>::Token<'a>;
6319            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
6320            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
6321            #[inline]
6322            fn new<'a>(
6323                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6324            ) -> Self {
6325                tuple.into()
6326            }
6327            #[inline]
6328            fn tokenize(&self) -> Self::Token<'_> {
6329                ()
6330            }
6331            #[inline]
6332            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6333                <Self::Parameters<
6334                    '_,
6335                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6336                    .map(Self::new)
6337            }
6338        }
6339    };
6340    #[derive(serde::Serialize, serde::Deserialize)]
6341    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6342    /**Custom error with signature `MinDelegateAmountTooSmall()` and selector `0x90b8678a`.
6343```solidity
6344error MinDelegateAmountTooSmall();
6345```*/
6346    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6347    #[derive(Clone)]
6348    pub struct MinDelegateAmountTooSmall;
6349    #[allow(
6350        non_camel_case_types,
6351        non_snake_case,
6352        clippy::pub_underscore_fields,
6353        clippy::style
6354    )]
6355    const _: () = {
6356        use alloy::sol_types as alloy_sol_types;
6357        #[doc(hidden)]
6358        #[allow(dead_code)]
6359        type UnderlyingSolTuple<'a> = ();
6360        #[doc(hidden)]
6361        type UnderlyingRustTuple<'a> = ();
6362        #[cfg(test)]
6363        #[allow(dead_code, unreachable_patterns)]
6364        fn _type_assertion(
6365            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6366        ) {
6367            match _t {
6368                alloy_sol_types::private::AssertTypeEq::<
6369                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6370                >(_) => {}
6371            }
6372        }
6373        #[automatically_derived]
6374        #[doc(hidden)]
6375        impl ::core::convert::From<MinDelegateAmountTooSmall>
6376        for UnderlyingRustTuple<'_> {
6377            fn from(value: MinDelegateAmountTooSmall) -> Self {
6378                ()
6379            }
6380        }
6381        #[automatically_derived]
6382        #[doc(hidden)]
6383        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6384        for MinDelegateAmountTooSmall {
6385            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6386                Self
6387            }
6388        }
6389        #[automatically_derived]
6390        impl alloy_sol_types::SolError for MinDelegateAmountTooSmall {
6391            type Parameters<'a> = UnderlyingSolTuple<'a>;
6392            type Token<'a> = <Self::Parameters<
6393                'a,
6394            > as alloy_sol_types::SolType>::Token<'a>;
6395            const SIGNATURE: &'static str = "MinDelegateAmountTooSmall()";
6396            const SELECTOR: [u8; 4] = [144u8, 184u8, 103u8, 138u8];
6397            #[inline]
6398            fn new<'a>(
6399                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6400            ) -> Self {
6401                tuple.into()
6402            }
6403            #[inline]
6404            fn tokenize(&self) -> Self::Token<'_> {
6405                ()
6406            }
6407            #[inline]
6408            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6409                <Self::Parameters<
6410                    '_,
6411                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6412                    .map(Self::new)
6413            }
6414        }
6415    };
6416    #[derive(serde::Serialize, serde::Deserialize)]
6417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6418    /**Custom error with signature `NoUndelegationFound()` and selector `0xb524fd6a`.
6419```solidity
6420error NoUndelegationFound();
6421```*/
6422    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6423    #[derive(Clone)]
6424    pub struct NoUndelegationFound;
6425    #[allow(
6426        non_camel_case_types,
6427        non_snake_case,
6428        clippy::pub_underscore_fields,
6429        clippy::style
6430    )]
6431    const _: () = {
6432        use alloy::sol_types as alloy_sol_types;
6433        #[doc(hidden)]
6434        #[allow(dead_code)]
6435        type UnderlyingSolTuple<'a> = ();
6436        #[doc(hidden)]
6437        type UnderlyingRustTuple<'a> = ();
6438        #[cfg(test)]
6439        #[allow(dead_code, unreachable_patterns)]
6440        fn _type_assertion(
6441            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6442        ) {
6443            match _t {
6444                alloy_sol_types::private::AssertTypeEq::<
6445                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6446                >(_) => {}
6447            }
6448        }
6449        #[automatically_derived]
6450        #[doc(hidden)]
6451        impl ::core::convert::From<NoUndelegationFound> for UnderlyingRustTuple<'_> {
6452            fn from(value: NoUndelegationFound) -> Self {
6453                ()
6454            }
6455        }
6456        #[automatically_derived]
6457        #[doc(hidden)]
6458        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoUndelegationFound {
6459            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6460                Self
6461            }
6462        }
6463        #[automatically_derived]
6464        impl alloy_sol_types::SolError for NoUndelegationFound {
6465            type Parameters<'a> = UnderlyingSolTuple<'a>;
6466            type Token<'a> = <Self::Parameters<
6467                'a,
6468            > as alloy_sol_types::SolType>::Token<'a>;
6469            const SIGNATURE: &'static str = "NoUndelegationFound()";
6470            const SELECTOR: [u8; 4] = [181u8, 36u8, 253u8, 106u8];
6471            #[inline]
6472            fn new<'a>(
6473                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6474            ) -> Self {
6475                tuple.into()
6476            }
6477            #[inline]
6478            fn tokenize(&self) -> Self::Token<'_> {
6479                ()
6480            }
6481            #[inline]
6482            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6483                <Self::Parameters<
6484                    '_,
6485                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6486                    .map(Self::new)
6487            }
6488        }
6489    };
6490    #[derive(serde::Serialize, serde::Deserialize)]
6491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6492    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6493```solidity
6494error NotInitializing();
6495```*/
6496    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6497    #[derive(Clone)]
6498    pub struct NotInitializing;
6499    #[allow(
6500        non_camel_case_types,
6501        non_snake_case,
6502        clippy::pub_underscore_fields,
6503        clippy::style
6504    )]
6505    const _: () = {
6506        use alloy::sol_types as alloy_sol_types;
6507        #[doc(hidden)]
6508        #[allow(dead_code)]
6509        type UnderlyingSolTuple<'a> = ();
6510        #[doc(hidden)]
6511        type UnderlyingRustTuple<'a> = ();
6512        #[cfg(test)]
6513        #[allow(dead_code, unreachable_patterns)]
6514        fn _type_assertion(
6515            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6516        ) {
6517            match _t {
6518                alloy_sol_types::private::AssertTypeEq::<
6519                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6520                >(_) => {}
6521            }
6522        }
6523        #[automatically_derived]
6524        #[doc(hidden)]
6525        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6526            fn from(value: NotInitializing) -> Self {
6527                ()
6528            }
6529        }
6530        #[automatically_derived]
6531        #[doc(hidden)]
6532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6534                Self
6535            }
6536        }
6537        #[automatically_derived]
6538        impl alloy_sol_types::SolError for NotInitializing {
6539            type Parameters<'a> = UnderlyingSolTuple<'a>;
6540            type Token<'a> = <Self::Parameters<
6541                'a,
6542            > as alloy_sol_types::SolType>::Token<'a>;
6543            const SIGNATURE: &'static str = "NotInitializing()";
6544            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6545            #[inline]
6546            fn new<'a>(
6547                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6548            ) -> Self {
6549                tuple.into()
6550            }
6551            #[inline]
6552            fn tokenize(&self) -> Self::Token<'_> {
6553                ()
6554            }
6555            #[inline]
6556            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6557                <Self::Parameters<
6558                    '_,
6559                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6560                    .map(Self::new)
6561            }
6562        }
6563    };
6564    #[derive(serde::Serialize, serde::Deserialize)]
6565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6566    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
6567```solidity
6568error NothingToWithdraw();
6569```*/
6570    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6571    #[derive(Clone)]
6572    pub struct NothingToWithdraw;
6573    #[allow(
6574        non_camel_case_types,
6575        non_snake_case,
6576        clippy::pub_underscore_fields,
6577        clippy::style
6578    )]
6579    const _: () = {
6580        use alloy::sol_types as alloy_sol_types;
6581        #[doc(hidden)]
6582        #[allow(dead_code)]
6583        type UnderlyingSolTuple<'a> = ();
6584        #[doc(hidden)]
6585        type UnderlyingRustTuple<'a> = ();
6586        #[cfg(test)]
6587        #[allow(dead_code, unreachable_patterns)]
6588        fn _type_assertion(
6589            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6590        ) {
6591            match _t {
6592                alloy_sol_types::private::AssertTypeEq::<
6593                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6594                >(_) => {}
6595            }
6596        }
6597        #[automatically_derived]
6598        #[doc(hidden)]
6599        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
6600            fn from(value: NothingToWithdraw) -> Self {
6601                ()
6602            }
6603        }
6604        #[automatically_derived]
6605        #[doc(hidden)]
6606        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
6607            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6608                Self
6609            }
6610        }
6611        #[automatically_derived]
6612        impl alloy_sol_types::SolError for NothingToWithdraw {
6613            type Parameters<'a> = UnderlyingSolTuple<'a>;
6614            type Token<'a> = <Self::Parameters<
6615                'a,
6616            > as alloy_sol_types::SolType>::Token<'a>;
6617            const SIGNATURE: &'static str = "NothingToWithdraw()";
6618            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
6619            #[inline]
6620            fn new<'a>(
6621                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6622            ) -> Self {
6623                tuple.into()
6624            }
6625            #[inline]
6626            fn tokenize(&self) -> Self::Token<'_> {
6627                ()
6628            }
6629            #[inline]
6630            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6631                <Self::Parameters<
6632                    '_,
6633                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6634                    .map(Self::new)
6635            }
6636        }
6637    };
6638    #[derive(serde::Serialize, serde::Deserialize)]
6639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6640    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6641```solidity
6642error OwnableInvalidOwner(address owner);
6643```*/
6644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6645    #[derive(Clone)]
6646    pub struct OwnableInvalidOwner {
6647        #[allow(missing_docs)]
6648        pub owner: alloy::sol_types::private::Address,
6649    }
6650    #[allow(
6651        non_camel_case_types,
6652        non_snake_case,
6653        clippy::pub_underscore_fields,
6654        clippy::style
6655    )]
6656    const _: () = {
6657        use alloy::sol_types as alloy_sol_types;
6658        #[doc(hidden)]
6659        #[allow(dead_code)]
6660        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6661        #[doc(hidden)]
6662        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6663        #[cfg(test)]
6664        #[allow(dead_code, unreachable_patterns)]
6665        fn _type_assertion(
6666            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6667        ) {
6668            match _t {
6669                alloy_sol_types::private::AssertTypeEq::<
6670                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6671                >(_) => {}
6672            }
6673        }
6674        #[automatically_derived]
6675        #[doc(hidden)]
6676        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6677            fn from(value: OwnableInvalidOwner) -> Self {
6678                (value.owner,)
6679            }
6680        }
6681        #[automatically_derived]
6682        #[doc(hidden)]
6683        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6684            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6685                Self { owner: tuple.0 }
6686            }
6687        }
6688        #[automatically_derived]
6689        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6690            type Parameters<'a> = UnderlyingSolTuple<'a>;
6691            type Token<'a> = <Self::Parameters<
6692                'a,
6693            > as alloy_sol_types::SolType>::Token<'a>;
6694            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6695            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6696            #[inline]
6697            fn new<'a>(
6698                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6699            ) -> Self {
6700                tuple.into()
6701            }
6702            #[inline]
6703            fn tokenize(&self) -> Self::Token<'_> {
6704                (
6705                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6706                        &self.owner,
6707                    ),
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 `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6722```solidity
6723error OwnableUnauthorizedAccount(address account);
6724```*/
6725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6726    #[derive(Clone)]
6727    pub struct OwnableUnauthorizedAccount {
6728        #[allow(missing_docs)]
6729        pub account: alloy::sol_types::private::Address,
6730    }
6731    #[allow(
6732        non_camel_case_types,
6733        non_snake_case,
6734        clippy::pub_underscore_fields,
6735        clippy::style
6736    )]
6737    const _: () = {
6738        use alloy::sol_types as alloy_sol_types;
6739        #[doc(hidden)]
6740        #[allow(dead_code)]
6741        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6742        #[doc(hidden)]
6743        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6744        #[cfg(test)]
6745        #[allow(dead_code, unreachable_patterns)]
6746        fn _type_assertion(
6747            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6748        ) {
6749            match _t {
6750                alloy_sol_types::private::AssertTypeEq::<
6751                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6752                >(_) => {}
6753            }
6754        }
6755        #[automatically_derived]
6756        #[doc(hidden)]
6757        impl ::core::convert::From<OwnableUnauthorizedAccount>
6758        for UnderlyingRustTuple<'_> {
6759            fn from(value: OwnableUnauthorizedAccount) -> Self {
6760                (value.account,)
6761            }
6762        }
6763        #[automatically_derived]
6764        #[doc(hidden)]
6765        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6766        for OwnableUnauthorizedAccount {
6767            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6768                Self { account: tuple.0 }
6769            }
6770        }
6771        #[automatically_derived]
6772        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6773            type Parameters<'a> = UnderlyingSolTuple<'a>;
6774            type Token<'a> = <Self::Parameters<
6775                'a,
6776            > as alloy_sol_types::SolType>::Token<'a>;
6777            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6778            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6779            #[inline]
6780            fn new<'a>(
6781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6782            ) -> Self {
6783                tuple.into()
6784            }
6785            #[inline]
6786            fn tokenize(&self) -> Self::Token<'_> {
6787                (
6788                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6789                        &self.account,
6790                    ),
6791                )
6792            }
6793            #[inline]
6794            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6795                <Self::Parameters<
6796                    '_,
6797                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6798                    .map(Self::new)
6799            }
6800        }
6801    };
6802    #[derive(serde::Serialize, serde::Deserialize)]
6803    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6804    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6805```solidity
6806error OwnershipCannotBeRenounced();
6807```*/
6808    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6809    #[derive(Clone)]
6810    pub struct OwnershipCannotBeRenounced;
6811    #[allow(
6812        non_camel_case_types,
6813        non_snake_case,
6814        clippy::pub_underscore_fields,
6815        clippy::style
6816    )]
6817    const _: () = {
6818        use alloy::sol_types as alloy_sol_types;
6819        #[doc(hidden)]
6820        #[allow(dead_code)]
6821        type UnderlyingSolTuple<'a> = ();
6822        #[doc(hidden)]
6823        type UnderlyingRustTuple<'a> = ();
6824        #[cfg(test)]
6825        #[allow(dead_code, unreachable_patterns)]
6826        fn _type_assertion(
6827            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6828        ) {
6829            match _t {
6830                alloy_sol_types::private::AssertTypeEq::<
6831                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6832                >(_) => {}
6833            }
6834        }
6835        #[automatically_derived]
6836        #[doc(hidden)]
6837        impl ::core::convert::From<OwnershipCannotBeRenounced>
6838        for UnderlyingRustTuple<'_> {
6839            fn from(value: OwnershipCannotBeRenounced) -> Self {
6840                ()
6841            }
6842        }
6843        #[automatically_derived]
6844        #[doc(hidden)]
6845        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6846        for OwnershipCannotBeRenounced {
6847            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6848                Self
6849            }
6850        }
6851        #[automatically_derived]
6852        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6853            type Parameters<'a> = UnderlyingSolTuple<'a>;
6854            type Token<'a> = <Self::Parameters<
6855                'a,
6856            > as alloy_sol_types::SolType>::Token<'a>;
6857            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6858            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6859            #[inline]
6860            fn new<'a>(
6861                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6862            ) -> Self {
6863                tuple.into()
6864            }
6865            #[inline]
6866            fn tokenize(&self) -> Self::Token<'_> {
6867                ()
6868            }
6869            #[inline]
6870            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6871                <Self::Parameters<
6872                    '_,
6873                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6874                    .map(Self::new)
6875            }
6876        }
6877    };
6878    #[derive(serde::Serialize, serde::Deserialize)]
6879    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6880    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
6881```solidity
6882error PowPrecompileFailed();
6883```*/
6884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6885    #[derive(Clone)]
6886    pub struct PowPrecompileFailed;
6887    #[allow(
6888        non_camel_case_types,
6889        non_snake_case,
6890        clippy::pub_underscore_fields,
6891        clippy::style
6892    )]
6893    const _: () = {
6894        use alloy::sol_types as alloy_sol_types;
6895        #[doc(hidden)]
6896        #[allow(dead_code)]
6897        type UnderlyingSolTuple<'a> = ();
6898        #[doc(hidden)]
6899        type UnderlyingRustTuple<'a> = ();
6900        #[cfg(test)]
6901        #[allow(dead_code, unreachable_patterns)]
6902        fn _type_assertion(
6903            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6904        ) {
6905            match _t {
6906                alloy_sol_types::private::AssertTypeEq::<
6907                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6908                >(_) => {}
6909            }
6910        }
6911        #[automatically_derived]
6912        #[doc(hidden)]
6913        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
6914            fn from(value: PowPrecompileFailed) -> Self {
6915                ()
6916            }
6917        }
6918        #[automatically_derived]
6919        #[doc(hidden)]
6920        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
6921            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6922                Self
6923            }
6924        }
6925        #[automatically_derived]
6926        impl alloy_sol_types::SolError for PowPrecompileFailed {
6927            type Parameters<'a> = UnderlyingSolTuple<'a>;
6928            type Token<'a> = <Self::Parameters<
6929                'a,
6930            > as alloy_sol_types::SolType>::Token<'a>;
6931            const SIGNATURE: &'static str = "PowPrecompileFailed()";
6932            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
6933            #[inline]
6934            fn new<'a>(
6935                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6936            ) -> Self {
6937                tuple.into()
6938            }
6939            #[inline]
6940            fn tokenize(&self) -> Self::Token<'_> {
6941                ()
6942            }
6943            #[inline]
6944            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6945                <Self::Parameters<
6946                    '_,
6947                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6948                    .map(Self::new)
6949            }
6950        }
6951    };
6952    #[derive(serde::Serialize, serde::Deserialize)]
6953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6954    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
6955```solidity
6956error PrematureWithdrawal();
6957```*/
6958    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6959    #[derive(Clone)]
6960    pub struct PrematureWithdrawal;
6961    #[allow(
6962        non_camel_case_types,
6963        non_snake_case,
6964        clippy::pub_underscore_fields,
6965        clippy::style
6966    )]
6967    const _: () = {
6968        use alloy::sol_types as alloy_sol_types;
6969        #[doc(hidden)]
6970        #[allow(dead_code)]
6971        type UnderlyingSolTuple<'a> = ();
6972        #[doc(hidden)]
6973        type UnderlyingRustTuple<'a> = ();
6974        #[cfg(test)]
6975        #[allow(dead_code, unreachable_patterns)]
6976        fn _type_assertion(
6977            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6978        ) {
6979            match _t {
6980                alloy_sol_types::private::AssertTypeEq::<
6981                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6982                >(_) => {}
6983            }
6984        }
6985        #[automatically_derived]
6986        #[doc(hidden)]
6987        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
6988            fn from(value: PrematureWithdrawal) -> Self {
6989                ()
6990            }
6991        }
6992        #[automatically_derived]
6993        #[doc(hidden)]
6994        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
6995            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6996                Self
6997            }
6998        }
6999        #[automatically_derived]
7000        impl alloy_sol_types::SolError for PrematureWithdrawal {
7001            type Parameters<'a> = UnderlyingSolTuple<'a>;
7002            type Token<'a> = <Self::Parameters<
7003                'a,
7004            > as alloy_sol_types::SolType>::Token<'a>;
7005            const SIGNATURE: &'static str = "PrematureWithdrawal()";
7006            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
7007            #[inline]
7008            fn new<'a>(
7009                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7010            ) -> Self {
7011                tuple.into()
7012            }
7013            #[inline]
7014            fn tokenize(&self) -> Self::Token<'_> {
7015                ()
7016            }
7017            #[inline]
7018            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7019                <Self::Parameters<
7020                    '_,
7021                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7022                    .map(Self::new)
7023            }
7024        }
7025    };
7026    #[derive(serde::Serialize, serde::Deserialize)]
7027    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7028    /**Custom error with signature `SchnorrKeyAlreadyUsed()` and selector `0xae493b03`.
7029```solidity
7030error SchnorrKeyAlreadyUsed();
7031```*/
7032    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7033    #[derive(Clone)]
7034    pub struct SchnorrKeyAlreadyUsed;
7035    #[allow(
7036        non_camel_case_types,
7037        non_snake_case,
7038        clippy::pub_underscore_fields,
7039        clippy::style
7040    )]
7041    const _: () = {
7042        use alloy::sol_types as alloy_sol_types;
7043        #[doc(hidden)]
7044        #[allow(dead_code)]
7045        type UnderlyingSolTuple<'a> = ();
7046        #[doc(hidden)]
7047        type UnderlyingRustTuple<'a> = ();
7048        #[cfg(test)]
7049        #[allow(dead_code, unreachable_patterns)]
7050        fn _type_assertion(
7051            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7052        ) {
7053            match _t {
7054                alloy_sol_types::private::AssertTypeEq::<
7055                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7056                >(_) => {}
7057            }
7058        }
7059        #[automatically_derived]
7060        #[doc(hidden)]
7061        impl ::core::convert::From<SchnorrKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
7062            fn from(value: SchnorrKeyAlreadyUsed) -> Self {
7063                ()
7064            }
7065        }
7066        #[automatically_derived]
7067        #[doc(hidden)]
7068        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SchnorrKeyAlreadyUsed {
7069            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7070                Self
7071            }
7072        }
7073        #[automatically_derived]
7074        impl alloy_sol_types::SolError for SchnorrKeyAlreadyUsed {
7075            type Parameters<'a> = UnderlyingSolTuple<'a>;
7076            type Token<'a> = <Self::Parameters<
7077                'a,
7078            > as alloy_sol_types::SolType>::Token<'a>;
7079            const SIGNATURE: &'static str = "SchnorrKeyAlreadyUsed()";
7080            const SELECTOR: [u8; 4] = [174u8, 73u8, 59u8, 3u8];
7081            #[inline]
7082            fn new<'a>(
7083                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7084            ) -> Self {
7085                tuple.into()
7086            }
7087            #[inline]
7088            fn tokenize(&self) -> Self::Token<'_> {
7089                ()
7090            }
7091            #[inline]
7092            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7093                <Self::Parameters<
7094                    '_,
7095                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7096                    .map(Self::new)
7097            }
7098        }
7099    };
7100    #[derive(serde::Serialize, serde::Deserialize)]
7101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7102    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7103```solidity
7104error UUPSUnauthorizedCallContext();
7105```*/
7106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7107    #[derive(Clone)]
7108    pub struct UUPSUnauthorizedCallContext;
7109    #[allow(
7110        non_camel_case_types,
7111        non_snake_case,
7112        clippy::pub_underscore_fields,
7113        clippy::style
7114    )]
7115    const _: () = {
7116        use alloy::sol_types as alloy_sol_types;
7117        #[doc(hidden)]
7118        #[allow(dead_code)]
7119        type UnderlyingSolTuple<'a> = ();
7120        #[doc(hidden)]
7121        type UnderlyingRustTuple<'a> = ();
7122        #[cfg(test)]
7123        #[allow(dead_code, unreachable_patterns)]
7124        fn _type_assertion(
7125            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7126        ) {
7127            match _t {
7128                alloy_sol_types::private::AssertTypeEq::<
7129                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7130                >(_) => {}
7131            }
7132        }
7133        #[automatically_derived]
7134        #[doc(hidden)]
7135        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7136        for UnderlyingRustTuple<'_> {
7137            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7138                ()
7139            }
7140        }
7141        #[automatically_derived]
7142        #[doc(hidden)]
7143        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7144        for UUPSUnauthorizedCallContext {
7145            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7146                Self
7147            }
7148        }
7149        #[automatically_derived]
7150        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7151            type Parameters<'a> = UnderlyingSolTuple<'a>;
7152            type Token<'a> = <Self::Parameters<
7153                'a,
7154            > as alloy_sol_types::SolType>::Token<'a>;
7155            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7156            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7157            #[inline]
7158            fn new<'a>(
7159                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7160            ) -> Self {
7161                tuple.into()
7162            }
7163            #[inline]
7164            fn tokenize(&self) -> Self::Token<'_> {
7165                ()
7166            }
7167            #[inline]
7168            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7169                <Self::Parameters<
7170                    '_,
7171                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7172                    .map(Self::new)
7173            }
7174        }
7175    };
7176    #[derive(serde::Serialize, serde::Deserialize)]
7177    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7178    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7179```solidity
7180error UUPSUnsupportedProxiableUUID(bytes32 slot);
7181```*/
7182    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7183    #[derive(Clone)]
7184    pub struct UUPSUnsupportedProxiableUUID {
7185        #[allow(missing_docs)]
7186        pub slot: alloy::sol_types::private::FixedBytes<32>,
7187    }
7188    #[allow(
7189        non_camel_case_types,
7190        non_snake_case,
7191        clippy::pub_underscore_fields,
7192        clippy::style
7193    )]
7194    const _: () = {
7195        use alloy::sol_types as alloy_sol_types;
7196        #[doc(hidden)]
7197        #[allow(dead_code)]
7198        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7199        #[doc(hidden)]
7200        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7201        #[cfg(test)]
7202        #[allow(dead_code, unreachable_patterns)]
7203        fn _type_assertion(
7204            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7205        ) {
7206            match _t {
7207                alloy_sol_types::private::AssertTypeEq::<
7208                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7209                >(_) => {}
7210            }
7211        }
7212        #[automatically_derived]
7213        #[doc(hidden)]
7214        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7215        for UnderlyingRustTuple<'_> {
7216            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7217                (value.slot,)
7218            }
7219        }
7220        #[automatically_derived]
7221        #[doc(hidden)]
7222        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7223        for UUPSUnsupportedProxiableUUID {
7224            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7225                Self { slot: tuple.0 }
7226            }
7227        }
7228        #[automatically_derived]
7229        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7230            type Parameters<'a> = UnderlyingSolTuple<'a>;
7231            type Token<'a> = <Self::Parameters<
7232                'a,
7233            > as alloy_sol_types::SolType>::Token<'a>;
7234            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7235            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7236            #[inline]
7237            fn new<'a>(
7238                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7239            ) -> Self {
7240                tuple.into()
7241            }
7242            #[inline]
7243            fn tokenize(&self) -> Self::Token<'_> {
7244                (
7245                    <alloy::sol_types::sol_data::FixedBytes<
7246                        32,
7247                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7248                )
7249            }
7250            #[inline]
7251            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7252                <Self::Parameters<
7253                    '_,
7254                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7255                    .map(Self::new)
7256            }
7257        }
7258    };
7259    #[derive(serde::Serialize, serde::Deserialize)]
7260    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7261    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
7262```solidity
7263error UndelegationAlreadyExists();
7264```*/
7265    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7266    #[derive(Clone)]
7267    pub struct UndelegationAlreadyExists;
7268    #[allow(
7269        non_camel_case_types,
7270        non_snake_case,
7271        clippy::pub_underscore_fields,
7272        clippy::style
7273    )]
7274    const _: () = {
7275        use alloy::sol_types as alloy_sol_types;
7276        #[doc(hidden)]
7277        #[allow(dead_code)]
7278        type UnderlyingSolTuple<'a> = ();
7279        #[doc(hidden)]
7280        type UnderlyingRustTuple<'a> = ();
7281        #[cfg(test)]
7282        #[allow(dead_code, unreachable_patterns)]
7283        fn _type_assertion(
7284            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7285        ) {
7286            match _t {
7287                alloy_sol_types::private::AssertTypeEq::<
7288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7289                >(_) => {}
7290            }
7291        }
7292        #[automatically_derived]
7293        #[doc(hidden)]
7294        impl ::core::convert::From<UndelegationAlreadyExists>
7295        for UnderlyingRustTuple<'_> {
7296            fn from(value: UndelegationAlreadyExists) -> Self {
7297                ()
7298            }
7299        }
7300        #[automatically_derived]
7301        #[doc(hidden)]
7302        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7303        for UndelegationAlreadyExists {
7304            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7305                Self
7306            }
7307        }
7308        #[automatically_derived]
7309        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
7310            type Parameters<'a> = UnderlyingSolTuple<'a>;
7311            type Token<'a> = <Self::Parameters<
7312                'a,
7313            > as alloy_sol_types::SolType>::Token<'a>;
7314            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
7315            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
7316            #[inline]
7317            fn new<'a>(
7318                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7319            ) -> Self {
7320                tuple.into()
7321            }
7322            #[inline]
7323            fn tokenize(&self) -> Self::Token<'_> {
7324                ()
7325            }
7326            #[inline]
7327            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7328                <Self::Parameters<
7329                    '_,
7330                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7331                    .map(Self::new)
7332            }
7333        }
7334    };
7335    #[derive(serde::Serialize, serde::Deserialize)]
7336    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7337    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
7338```solidity
7339error ValidatorAlreadyExited();
7340```*/
7341    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7342    #[derive(Clone)]
7343    pub struct ValidatorAlreadyExited;
7344    #[allow(
7345        non_camel_case_types,
7346        non_snake_case,
7347        clippy::pub_underscore_fields,
7348        clippy::style
7349    )]
7350    const _: () = {
7351        use alloy::sol_types as alloy_sol_types;
7352        #[doc(hidden)]
7353        #[allow(dead_code)]
7354        type UnderlyingSolTuple<'a> = ();
7355        #[doc(hidden)]
7356        type UnderlyingRustTuple<'a> = ();
7357        #[cfg(test)]
7358        #[allow(dead_code, unreachable_patterns)]
7359        fn _type_assertion(
7360            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7361        ) {
7362            match _t {
7363                alloy_sol_types::private::AssertTypeEq::<
7364                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7365                >(_) => {}
7366            }
7367        }
7368        #[automatically_derived]
7369        #[doc(hidden)]
7370        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
7371            fn from(value: ValidatorAlreadyExited) -> Self {
7372                ()
7373            }
7374        }
7375        #[automatically_derived]
7376        #[doc(hidden)]
7377        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
7378            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7379                Self
7380            }
7381        }
7382        #[automatically_derived]
7383        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
7384            type Parameters<'a> = UnderlyingSolTuple<'a>;
7385            type Token<'a> = <Self::Parameters<
7386                'a,
7387            > as alloy_sol_types::SolType>::Token<'a>;
7388            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
7389            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
7390            #[inline]
7391            fn new<'a>(
7392                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7393            ) -> Self {
7394                tuple.into()
7395            }
7396            #[inline]
7397            fn tokenize(&self) -> Self::Token<'_> {
7398                ()
7399            }
7400            #[inline]
7401            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7402                <Self::Parameters<
7403                    '_,
7404                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7405                    .map(Self::new)
7406            }
7407        }
7408    };
7409    #[derive(serde::Serialize, serde::Deserialize)]
7410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7411    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
7412```solidity
7413error ValidatorAlreadyRegistered();
7414```*/
7415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7416    #[derive(Clone)]
7417    pub struct ValidatorAlreadyRegistered;
7418    #[allow(
7419        non_camel_case_types,
7420        non_snake_case,
7421        clippy::pub_underscore_fields,
7422        clippy::style
7423    )]
7424    const _: () = {
7425        use alloy::sol_types as alloy_sol_types;
7426        #[doc(hidden)]
7427        #[allow(dead_code)]
7428        type UnderlyingSolTuple<'a> = ();
7429        #[doc(hidden)]
7430        type UnderlyingRustTuple<'a> = ();
7431        #[cfg(test)]
7432        #[allow(dead_code, unreachable_patterns)]
7433        fn _type_assertion(
7434            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7435        ) {
7436            match _t {
7437                alloy_sol_types::private::AssertTypeEq::<
7438                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7439                >(_) => {}
7440            }
7441        }
7442        #[automatically_derived]
7443        #[doc(hidden)]
7444        impl ::core::convert::From<ValidatorAlreadyRegistered>
7445        for UnderlyingRustTuple<'_> {
7446            fn from(value: ValidatorAlreadyRegistered) -> Self {
7447                ()
7448            }
7449        }
7450        #[automatically_derived]
7451        #[doc(hidden)]
7452        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7453        for ValidatorAlreadyRegistered {
7454            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7455                Self
7456            }
7457        }
7458        #[automatically_derived]
7459        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
7460            type Parameters<'a> = UnderlyingSolTuple<'a>;
7461            type Token<'a> = <Self::Parameters<
7462                'a,
7463            > as alloy_sol_types::SolType>::Token<'a>;
7464            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
7465            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
7466            #[inline]
7467            fn new<'a>(
7468                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7469            ) -> Self {
7470                tuple.into()
7471            }
7472            #[inline]
7473            fn tokenize(&self) -> Self::Token<'_> {
7474                ()
7475            }
7476            #[inline]
7477            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7478                <Self::Parameters<
7479                    '_,
7480                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7481                    .map(Self::new)
7482            }
7483        }
7484    };
7485    #[derive(serde::Serialize, serde::Deserialize)]
7486    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7487    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
7488```solidity
7489error ValidatorInactive();
7490```*/
7491    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7492    #[derive(Clone)]
7493    pub struct ValidatorInactive;
7494    #[allow(
7495        non_camel_case_types,
7496        non_snake_case,
7497        clippy::pub_underscore_fields,
7498        clippy::style
7499    )]
7500    const _: () = {
7501        use alloy::sol_types as alloy_sol_types;
7502        #[doc(hidden)]
7503        #[allow(dead_code)]
7504        type UnderlyingSolTuple<'a> = ();
7505        #[doc(hidden)]
7506        type UnderlyingRustTuple<'a> = ();
7507        #[cfg(test)]
7508        #[allow(dead_code, unreachable_patterns)]
7509        fn _type_assertion(
7510            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7511        ) {
7512            match _t {
7513                alloy_sol_types::private::AssertTypeEq::<
7514                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7515                >(_) => {}
7516            }
7517        }
7518        #[automatically_derived]
7519        #[doc(hidden)]
7520        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
7521            fn from(value: ValidatorInactive) -> Self {
7522                ()
7523            }
7524        }
7525        #[automatically_derived]
7526        #[doc(hidden)]
7527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
7528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7529                Self
7530            }
7531        }
7532        #[automatically_derived]
7533        impl alloy_sol_types::SolError for ValidatorInactive {
7534            type Parameters<'a> = UnderlyingSolTuple<'a>;
7535            type Token<'a> = <Self::Parameters<
7536                'a,
7537            > as alloy_sol_types::SolType>::Token<'a>;
7538            const SIGNATURE: &'static str = "ValidatorInactive()";
7539            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
7540            #[inline]
7541            fn new<'a>(
7542                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7543            ) -> Self {
7544                tuple.into()
7545            }
7546            #[inline]
7547            fn tokenize(&self) -> Self::Token<'_> {
7548                ()
7549            }
7550            #[inline]
7551            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7552                <Self::Parameters<
7553                    '_,
7554                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7555                    .map(Self::new)
7556            }
7557        }
7558    };
7559    #[derive(serde::Serialize, serde::Deserialize)]
7560    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7561    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
7562```solidity
7563error ValidatorNotExited();
7564```*/
7565    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7566    #[derive(Clone)]
7567    pub struct ValidatorNotExited;
7568    #[allow(
7569        non_camel_case_types,
7570        non_snake_case,
7571        clippy::pub_underscore_fields,
7572        clippy::style
7573    )]
7574    const _: () = {
7575        use alloy::sol_types as alloy_sol_types;
7576        #[doc(hidden)]
7577        #[allow(dead_code)]
7578        type UnderlyingSolTuple<'a> = ();
7579        #[doc(hidden)]
7580        type UnderlyingRustTuple<'a> = ();
7581        #[cfg(test)]
7582        #[allow(dead_code, unreachable_patterns)]
7583        fn _type_assertion(
7584            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7585        ) {
7586            match _t {
7587                alloy_sol_types::private::AssertTypeEq::<
7588                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7589                >(_) => {}
7590            }
7591        }
7592        #[automatically_derived]
7593        #[doc(hidden)]
7594        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
7595            fn from(value: ValidatorNotExited) -> Self {
7596                ()
7597            }
7598        }
7599        #[automatically_derived]
7600        #[doc(hidden)]
7601        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
7602            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7603                Self
7604            }
7605        }
7606        #[automatically_derived]
7607        impl alloy_sol_types::SolError for ValidatorNotExited {
7608            type Parameters<'a> = UnderlyingSolTuple<'a>;
7609            type Token<'a> = <Self::Parameters<
7610                'a,
7611            > as alloy_sol_types::SolType>::Token<'a>;
7612            const SIGNATURE: &'static str = "ValidatorNotExited()";
7613            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
7614            #[inline]
7615            fn new<'a>(
7616                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7617            ) -> Self {
7618                tuple.into()
7619            }
7620            #[inline]
7621            fn tokenize(&self) -> Self::Token<'_> {
7622                ()
7623            }
7624            #[inline]
7625            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7626                <Self::Parameters<
7627                    '_,
7628                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7629                    .map(Self::new)
7630            }
7631        }
7632    };
7633    #[derive(serde::Serialize, serde::Deserialize)]
7634    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7635    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
7636```solidity
7637error ZeroAddress();
7638```*/
7639    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7640    #[derive(Clone)]
7641    pub struct ZeroAddress;
7642    #[allow(
7643        non_camel_case_types,
7644        non_snake_case,
7645        clippy::pub_underscore_fields,
7646        clippy::style
7647    )]
7648    const _: () = {
7649        use alloy::sol_types as alloy_sol_types;
7650        #[doc(hidden)]
7651        #[allow(dead_code)]
7652        type UnderlyingSolTuple<'a> = ();
7653        #[doc(hidden)]
7654        type UnderlyingRustTuple<'a> = ();
7655        #[cfg(test)]
7656        #[allow(dead_code, unreachable_patterns)]
7657        fn _type_assertion(
7658            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7659        ) {
7660            match _t {
7661                alloy_sol_types::private::AssertTypeEq::<
7662                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7663                >(_) => {}
7664            }
7665        }
7666        #[automatically_derived]
7667        #[doc(hidden)]
7668        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
7669            fn from(value: ZeroAddress) -> Self {
7670                ()
7671            }
7672        }
7673        #[automatically_derived]
7674        #[doc(hidden)]
7675        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
7676            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7677                Self
7678            }
7679        }
7680        #[automatically_derived]
7681        impl alloy_sol_types::SolError for ZeroAddress {
7682            type Parameters<'a> = UnderlyingSolTuple<'a>;
7683            type Token<'a> = <Self::Parameters<
7684                'a,
7685            > as alloy_sol_types::SolType>::Token<'a>;
7686            const SIGNATURE: &'static str = "ZeroAddress()";
7687            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
7688            #[inline]
7689            fn new<'a>(
7690                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7691            ) -> Self {
7692                tuple.into()
7693            }
7694            #[inline]
7695            fn tokenize(&self) -> Self::Token<'_> {
7696                ()
7697            }
7698            #[inline]
7699            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7700                <Self::Parameters<
7701                    '_,
7702                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7703                    .map(Self::new)
7704            }
7705        }
7706    };
7707    #[derive(serde::Serialize, serde::Deserialize)]
7708    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7709    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
7710```solidity
7711error ZeroAmount();
7712```*/
7713    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7714    #[derive(Clone)]
7715    pub struct ZeroAmount;
7716    #[allow(
7717        non_camel_case_types,
7718        non_snake_case,
7719        clippy::pub_underscore_fields,
7720        clippy::style
7721    )]
7722    const _: () = {
7723        use alloy::sol_types as alloy_sol_types;
7724        #[doc(hidden)]
7725        #[allow(dead_code)]
7726        type UnderlyingSolTuple<'a> = ();
7727        #[doc(hidden)]
7728        type UnderlyingRustTuple<'a> = ();
7729        #[cfg(test)]
7730        #[allow(dead_code, unreachable_patterns)]
7731        fn _type_assertion(
7732            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7733        ) {
7734            match _t {
7735                alloy_sol_types::private::AssertTypeEq::<
7736                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7737                >(_) => {}
7738            }
7739        }
7740        #[automatically_derived]
7741        #[doc(hidden)]
7742        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
7743            fn from(value: ZeroAmount) -> Self {
7744                ()
7745            }
7746        }
7747        #[automatically_derived]
7748        #[doc(hidden)]
7749        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
7750            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7751                Self
7752            }
7753        }
7754        #[automatically_derived]
7755        impl alloy_sol_types::SolError for ZeroAmount {
7756            type Parameters<'a> = UnderlyingSolTuple<'a>;
7757            type Token<'a> = <Self::Parameters<
7758                'a,
7759            > as alloy_sol_types::SolType>::Token<'a>;
7760            const SIGNATURE: &'static str = "ZeroAmount()";
7761            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
7762            #[inline]
7763            fn new<'a>(
7764                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7765            ) -> Self {
7766                tuple.into()
7767            }
7768            #[inline]
7769            fn tokenize(&self) -> Self::Token<'_> {
7770                ()
7771            }
7772            #[inline]
7773            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7774                <Self::Parameters<
7775                    '_,
7776                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7777                    .map(Self::new)
7778            }
7779        }
7780    };
7781    #[derive(serde::Serialize, serde::Deserialize)]
7782    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7783    /**Event with signature `CommissionUpdated(address,uint256,uint16,uint16)` and selector `0xbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd64`.
7784```solidity
7785event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
7786```*/
7787    #[allow(
7788        non_camel_case_types,
7789        non_snake_case,
7790        clippy::pub_underscore_fields,
7791        clippy::style
7792    )]
7793    #[derive(Clone)]
7794    pub struct CommissionUpdated {
7795        #[allow(missing_docs)]
7796        pub validator: alloy::sol_types::private::Address,
7797        #[allow(missing_docs)]
7798        pub timestamp: alloy::sol_types::private::primitives::aliases::U256,
7799        #[allow(missing_docs)]
7800        pub oldCommission: u16,
7801        #[allow(missing_docs)]
7802        pub newCommission: u16,
7803    }
7804    #[allow(
7805        non_camel_case_types,
7806        non_snake_case,
7807        clippy::pub_underscore_fields,
7808        clippy::style
7809    )]
7810    const _: () = {
7811        use alloy::sol_types as alloy_sol_types;
7812        #[automatically_derived]
7813        impl alloy_sol_types::SolEvent for CommissionUpdated {
7814            type DataTuple<'a> = (
7815                alloy::sol_types::sol_data::Uint<256>,
7816                alloy::sol_types::sol_data::Uint<16>,
7817                alloy::sol_types::sol_data::Uint<16>,
7818            );
7819            type DataToken<'a> = <Self::DataTuple<
7820                'a,
7821            > as alloy_sol_types::SolType>::Token<'a>;
7822            type TopicList = (
7823                alloy_sol_types::sol_data::FixedBytes<32>,
7824                alloy::sol_types::sol_data::Address,
7825            );
7826            const SIGNATURE: &'static str = "CommissionUpdated(address,uint256,uint16,uint16)";
7827            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7828                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
7829                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
7830                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
7831            ]);
7832            const ANONYMOUS: bool = false;
7833            #[allow(unused_variables)]
7834            #[inline]
7835            fn new(
7836                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7837                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7838            ) -> Self {
7839                Self {
7840                    validator: topics.1,
7841                    timestamp: data.0,
7842                    oldCommission: data.1,
7843                    newCommission: data.2,
7844                }
7845            }
7846            #[inline]
7847            fn check_signature(
7848                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7849            ) -> alloy_sol_types::Result<()> {
7850                if topics.0 != Self::SIGNATURE_HASH {
7851                    return Err(
7852                        alloy_sol_types::Error::invalid_event_signature_hash(
7853                            Self::SIGNATURE,
7854                            topics.0,
7855                            Self::SIGNATURE_HASH,
7856                        ),
7857                    );
7858                }
7859                Ok(())
7860            }
7861            #[inline]
7862            fn tokenize_body(&self) -> Self::DataToken<'_> {
7863                (
7864                    <alloy::sol_types::sol_data::Uint<
7865                        256,
7866                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
7867                    <alloy::sol_types::sol_data::Uint<
7868                        16,
7869                    > as alloy_sol_types::SolType>::tokenize(&self.oldCommission),
7870                    <alloy::sol_types::sol_data::Uint<
7871                        16,
7872                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
7873                )
7874            }
7875            #[inline]
7876            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7877                (Self::SIGNATURE_HASH.into(), self.validator.clone())
7878            }
7879            #[inline]
7880            fn encode_topics_raw(
7881                &self,
7882                out: &mut [alloy_sol_types::abi::token::WordToken],
7883            ) -> alloy_sol_types::Result<()> {
7884                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7885                    return Err(alloy_sol_types::Error::Overrun);
7886                }
7887                out[0usize] = alloy_sol_types::abi::token::WordToken(
7888                    Self::SIGNATURE_HASH,
7889                );
7890                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7891                    &self.validator,
7892                );
7893                Ok(())
7894            }
7895        }
7896        #[automatically_derived]
7897        impl alloy_sol_types::private::IntoLogData for CommissionUpdated {
7898            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7899                From::from(self)
7900            }
7901            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7902                From::from(&self)
7903            }
7904        }
7905        #[automatically_derived]
7906        impl From<&CommissionUpdated> for alloy_sol_types::private::LogData {
7907            #[inline]
7908            fn from(this: &CommissionUpdated) -> alloy_sol_types::private::LogData {
7909                alloy_sol_types::SolEvent::encode_log_data(this)
7910            }
7911        }
7912    };
7913    #[derive(serde::Serialize, serde::Deserialize)]
7914    #[derive()]
7915    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
7916```solidity
7917event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
7918```*/
7919    #[allow(
7920        non_camel_case_types,
7921        non_snake_case,
7922        clippy::pub_underscore_fields,
7923        clippy::style
7924    )]
7925    #[derive(Clone)]
7926    pub struct ConsensusKeysUpdated {
7927        #[allow(missing_docs)]
7928        pub account: alloy::sol_types::private::Address,
7929        #[allow(missing_docs)]
7930        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7931        #[allow(missing_docs)]
7932        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
7933    }
7934    #[allow(
7935        non_camel_case_types,
7936        non_snake_case,
7937        clippy::pub_underscore_fields,
7938        clippy::style
7939    )]
7940    const _: () = {
7941        use alloy::sol_types as alloy_sol_types;
7942        #[automatically_derived]
7943        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
7944            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
7945            type DataToken<'a> = <Self::DataTuple<
7946                'a,
7947            > as alloy_sol_types::SolType>::Token<'a>;
7948            type TopicList = (
7949                alloy_sol_types::sol_data::FixedBytes<32>,
7950                alloy::sol_types::sol_data::Address,
7951            );
7952            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
7953            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7954                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
7955                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
7956                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
7957            ]);
7958            const ANONYMOUS: bool = false;
7959            #[allow(unused_variables)]
7960            #[inline]
7961            fn new(
7962                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7963                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7964            ) -> Self {
7965                Self {
7966                    account: topics.1,
7967                    blsVK: data.0,
7968                    schnorrVK: data.1,
7969                }
7970            }
7971            #[inline]
7972            fn check_signature(
7973                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7974            ) -> alloy_sol_types::Result<()> {
7975                if topics.0 != Self::SIGNATURE_HASH {
7976                    return Err(
7977                        alloy_sol_types::Error::invalid_event_signature_hash(
7978                            Self::SIGNATURE,
7979                            topics.0,
7980                            Self::SIGNATURE_HASH,
7981                        ),
7982                    );
7983                }
7984                Ok(())
7985            }
7986            #[inline]
7987            fn tokenize_body(&self) -> Self::DataToken<'_> {
7988                (
7989                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
7990                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
7991                        &self.schnorrVK,
7992                    ),
7993                )
7994            }
7995            #[inline]
7996            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7997                (Self::SIGNATURE_HASH.into(), self.account.clone())
7998            }
7999            #[inline]
8000            fn encode_topics_raw(
8001                &self,
8002                out: &mut [alloy_sol_types::abi::token::WordToken],
8003            ) -> alloy_sol_types::Result<()> {
8004                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8005                    return Err(alloy_sol_types::Error::Overrun);
8006                }
8007                out[0usize] = alloy_sol_types::abi::token::WordToken(
8008                    Self::SIGNATURE_HASH,
8009                );
8010                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8011                    &self.account,
8012                );
8013                Ok(())
8014            }
8015        }
8016        #[automatically_derived]
8017        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
8018            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8019                From::from(self)
8020            }
8021            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8022                From::from(&self)
8023            }
8024        }
8025        #[automatically_derived]
8026        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
8027            #[inline]
8028            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
8029                alloy_sol_types::SolEvent::encode_log_data(this)
8030            }
8031        }
8032    };
8033    #[derive(serde::Serialize, serde::Deserialize)]
8034    #[derive()]
8035    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
8036```solidity
8037event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
8038```*/
8039    #[allow(
8040        non_camel_case_types,
8041        non_snake_case,
8042        clippy::pub_underscore_fields,
8043        clippy::style
8044    )]
8045    #[derive(Clone)]
8046    pub struct ConsensusKeysUpdatedV2 {
8047        #[allow(missing_docs)]
8048        pub account: alloy::sol_types::private::Address,
8049        #[allow(missing_docs)]
8050        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8051        #[allow(missing_docs)]
8052        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8053        #[allow(missing_docs)]
8054        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8055        #[allow(missing_docs)]
8056        pub schnorrSig: alloy::sol_types::private::Bytes,
8057    }
8058    #[allow(
8059        non_camel_case_types,
8060        non_snake_case,
8061        clippy::pub_underscore_fields,
8062        clippy::style
8063    )]
8064    const _: () = {
8065        use alloy::sol_types as alloy_sol_types;
8066        #[automatically_derived]
8067        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
8068            type DataTuple<'a> = (
8069                BN254::G2Point,
8070                EdOnBN254::EdOnBN254Point,
8071                BN254::G1Point,
8072                alloy::sol_types::sol_data::Bytes,
8073            );
8074            type DataToken<'a> = <Self::DataTuple<
8075                'a,
8076            > as alloy_sol_types::SolType>::Token<'a>;
8077            type TopicList = (
8078                alloy_sol_types::sol_data::FixedBytes<32>,
8079                alloy::sol_types::sol_data::Address,
8080            );
8081            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
8082            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8083                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
8084                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
8085                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
8086            ]);
8087            const ANONYMOUS: bool = false;
8088            #[allow(unused_variables)]
8089            #[inline]
8090            fn new(
8091                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8092                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8093            ) -> Self {
8094                Self {
8095                    account: topics.1,
8096                    blsVK: data.0,
8097                    schnorrVK: data.1,
8098                    blsSig: data.2,
8099                    schnorrSig: data.3,
8100                }
8101            }
8102            #[inline]
8103            fn check_signature(
8104                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8105            ) -> alloy_sol_types::Result<()> {
8106                if topics.0 != Self::SIGNATURE_HASH {
8107                    return Err(
8108                        alloy_sol_types::Error::invalid_event_signature_hash(
8109                            Self::SIGNATURE,
8110                            topics.0,
8111                            Self::SIGNATURE_HASH,
8112                        ),
8113                    );
8114                }
8115                Ok(())
8116            }
8117            #[inline]
8118            fn tokenize_body(&self) -> Self::DataToken<'_> {
8119                (
8120                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8121                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8122                        &self.schnorrVK,
8123                    ),
8124                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8125                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8126                        &self.schnorrSig,
8127                    ),
8128                )
8129            }
8130            #[inline]
8131            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8132                (Self::SIGNATURE_HASH.into(), self.account.clone())
8133            }
8134            #[inline]
8135            fn encode_topics_raw(
8136                &self,
8137                out: &mut [alloy_sol_types::abi::token::WordToken],
8138            ) -> alloy_sol_types::Result<()> {
8139                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8140                    return Err(alloy_sol_types::Error::Overrun);
8141                }
8142                out[0usize] = alloy_sol_types::abi::token::WordToken(
8143                    Self::SIGNATURE_HASH,
8144                );
8145                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8146                    &self.account,
8147                );
8148                Ok(())
8149            }
8150        }
8151        #[automatically_derived]
8152        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
8153            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8154                From::from(self)
8155            }
8156            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8157                From::from(&self)
8158            }
8159        }
8160        #[automatically_derived]
8161        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
8162            #[inline]
8163            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
8164                alloy_sol_types::SolEvent::encode_log_data(this)
8165            }
8166        }
8167    };
8168    #[derive(serde::Serialize, serde::Deserialize)]
8169    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8170    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
8171```solidity
8172event Delegated(address indexed delegator, address indexed validator, uint256 amount);
8173```*/
8174    #[allow(
8175        non_camel_case_types,
8176        non_snake_case,
8177        clippy::pub_underscore_fields,
8178        clippy::style
8179    )]
8180    #[derive(Clone)]
8181    pub struct Delegated {
8182        #[allow(missing_docs)]
8183        pub delegator: alloy::sol_types::private::Address,
8184        #[allow(missing_docs)]
8185        pub validator: alloy::sol_types::private::Address,
8186        #[allow(missing_docs)]
8187        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8188    }
8189    #[allow(
8190        non_camel_case_types,
8191        non_snake_case,
8192        clippy::pub_underscore_fields,
8193        clippy::style
8194    )]
8195    const _: () = {
8196        use alloy::sol_types as alloy_sol_types;
8197        #[automatically_derived]
8198        impl alloy_sol_types::SolEvent for Delegated {
8199            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8200            type DataToken<'a> = <Self::DataTuple<
8201                'a,
8202            > as alloy_sol_types::SolType>::Token<'a>;
8203            type TopicList = (
8204                alloy_sol_types::sol_data::FixedBytes<32>,
8205                alloy::sol_types::sol_data::Address,
8206                alloy::sol_types::sol_data::Address,
8207            );
8208            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
8209            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8210                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
8211                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
8212                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
8213            ]);
8214            const ANONYMOUS: bool = false;
8215            #[allow(unused_variables)]
8216            #[inline]
8217            fn new(
8218                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8219                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8220            ) -> Self {
8221                Self {
8222                    delegator: topics.1,
8223                    validator: topics.2,
8224                    amount: data.0,
8225                }
8226            }
8227            #[inline]
8228            fn check_signature(
8229                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8230            ) -> alloy_sol_types::Result<()> {
8231                if topics.0 != Self::SIGNATURE_HASH {
8232                    return Err(
8233                        alloy_sol_types::Error::invalid_event_signature_hash(
8234                            Self::SIGNATURE,
8235                            topics.0,
8236                            Self::SIGNATURE_HASH,
8237                        ),
8238                    );
8239                }
8240                Ok(())
8241            }
8242            #[inline]
8243            fn tokenize_body(&self) -> Self::DataToken<'_> {
8244                (
8245                    <alloy::sol_types::sol_data::Uint<
8246                        256,
8247                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8248                )
8249            }
8250            #[inline]
8251            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8252                (
8253                    Self::SIGNATURE_HASH.into(),
8254                    self.delegator.clone(),
8255                    self.validator.clone(),
8256                )
8257            }
8258            #[inline]
8259            fn encode_topics_raw(
8260                &self,
8261                out: &mut [alloy_sol_types::abi::token::WordToken],
8262            ) -> alloy_sol_types::Result<()> {
8263                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8264                    return Err(alloy_sol_types::Error::Overrun);
8265                }
8266                out[0usize] = alloy_sol_types::abi::token::WordToken(
8267                    Self::SIGNATURE_HASH,
8268                );
8269                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8270                    &self.delegator,
8271                );
8272                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8273                    &self.validator,
8274                );
8275                Ok(())
8276            }
8277        }
8278        #[automatically_derived]
8279        impl alloy_sol_types::private::IntoLogData for Delegated {
8280            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8281                From::from(self)
8282            }
8283            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8284                From::from(&self)
8285            }
8286        }
8287        #[automatically_derived]
8288        impl From<&Delegated> for alloy_sol_types::private::LogData {
8289            #[inline]
8290            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
8291                alloy_sol_types::SolEvent::encode_log_data(this)
8292            }
8293        }
8294    };
8295    #[derive(serde::Serialize, serde::Deserialize)]
8296    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8297    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
8298```solidity
8299event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
8300```*/
8301    #[allow(
8302        non_camel_case_types,
8303        non_snake_case,
8304        clippy::pub_underscore_fields,
8305        clippy::style
8306    )]
8307    #[derive(Clone)]
8308    pub struct ExitEscrowPeriodUpdated {
8309        #[allow(missing_docs)]
8310        pub newExitEscrowPeriod: u64,
8311    }
8312    #[allow(
8313        non_camel_case_types,
8314        non_snake_case,
8315        clippy::pub_underscore_fields,
8316        clippy::style
8317    )]
8318    const _: () = {
8319        use alloy::sol_types as alloy_sol_types;
8320        #[automatically_derived]
8321        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
8322            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8323            type DataToken<'a> = <Self::DataTuple<
8324                'a,
8325            > as alloy_sol_types::SolType>::Token<'a>;
8326            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8327            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
8328            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8329                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
8330                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
8331                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
8332            ]);
8333            const ANONYMOUS: bool = false;
8334            #[allow(unused_variables)]
8335            #[inline]
8336            fn new(
8337                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8338                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8339            ) -> Self {
8340                Self {
8341                    newExitEscrowPeriod: data.0,
8342                }
8343            }
8344            #[inline]
8345            fn check_signature(
8346                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8347            ) -> alloy_sol_types::Result<()> {
8348                if topics.0 != Self::SIGNATURE_HASH {
8349                    return Err(
8350                        alloy_sol_types::Error::invalid_event_signature_hash(
8351                            Self::SIGNATURE,
8352                            topics.0,
8353                            Self::SIGNATURE_HASH,
8354                        ),
8355                    );
8356                }
8357                Ok(())
8358            }
8359            #[inline]
8360            fn tokenize_body(&self) -> Self::DataToken<'_> {
8361                (
8362                    <alloy::sol_types::sol_data::Uint<
8363                        64,
8364                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
8365                )
8366            }
8367            #[inline]
8368            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8369                (Self::SIGNATURE_HASH.into(),)
8370            }
8371            #[inline]
8372            fn encode_topics_raw(
8373                &self,
8374                out: &mut [alloy_sol_types::abi::token::WordToken],
8375            ) -> alloy_sol_types::Result<()> {
8376                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8377                    return Err(alloy_sol_types::Error::Overrun);
8378                }
8379                out[0usize] = alloy_sol_types::abi::token::WordToken(
8380                    Self::SIGNATURE_HASH,
8381                );
8382                Ok(())
8383            }
8384        }
8385        #[automatically_derived]
8386        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
8387            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8388                From::from(self)
8389            }
8390            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8391                From::from(&self)
8392            }
8393        }
8394        #[automatically_derived]
8395        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
8396            #[inline]
8397            fn from(
8398                this: &ExitEscrowPeriodUpdated,
8399            ) -> alloy_sol_types::private::LogData {
8400                alloy_sol_types::SolEvent::encode_log_data(this)
8401            }
8402        }
8403    };
8404    #[derive(serde::Serialize, serde::Deserialize)]
8405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8406    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
8407```solidity
8408event Initialized(uint64 version);
8409```*/
8410    #[allow(
8411        non_camel_case_types,
8412        non_snake_case,
8413        clippy::pub_underscore_fields,
8414        clippy::style
8415    )]
8416    #[derive(Clone)]
8417    pub struct Initialized {
8418        #[allow(missing_docs)]
8419        pub version: u64,
8420    }
8421    #[allow(
8422        non_camel_case_types,
8423        non_snake_case,
8424        clippy::pub_underscore_fields,
8425        clippy::style
8426    )]
8427    const _: () = {
8428        use alloy::sol_types as alloy_sol_types;
8429        #[automatically_derived]
8430        impl alloy_sol_types::SolEvent for Initialized {
8431            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8432            type DataToken<'a> = <Self::DataTuple<
8433                'a,
8434            > as alloy_sol_types::SolType>::Token<'a>;
8435            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8436            const SIGNATURE: &'static str = "Initialized(uint64)";
8437            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8438                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
8439                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
8440                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
8441            ]);
8442            const ANONYMOUS: bool = false;
8443            #[allow(unused_variables)]
8444            #[inline]
8445            fn new(
8446                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8447                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8448            ) -> Self {
8449                Self { version: data.0 }
8450            }
8451            #[inline]
8452            fn check_signature(
8453                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8454            ) -> alloy_sol_types::Result<()> {
8455                if topics.0 != Self::SIGNATURE_HASH {
8456                    return Err(
8457                        alloy_sol_types::Error::invalid_event_signature_hash(
8458                            Self::SIGNATURE,
8459                            topics.0,
8460                            Self::SIGNATURE_HASH,
8461                        ),
8462                    );
8463                }
8464                Ok(())
8465            }
8466            #[inline]
8467            fn tokenize_body(&self) -> Self::DataToken<'_> {
8468                (
8469                    <alloy::sol_types::sol_data::Uint<
8470                        64,
8471                    > as alloy_sol_types::SolType>::tokenize(&self.version),
8472                )
8473            }
8474            #[inline]
8475            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8476                (Self::SIGNATURE_HASH.into(),)
8477            }
8478            #[inline]
8479            fn encode_topics_raw(
8480                &self,
8481                out: &mut [alloy_sol_types::abi::token::WordToken],
8482            ) -> alloy_sol_types::Result<()> {
8483                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8484                    return Err(alloy_sol_types::Error::Overrun);
8485                }
8486                out[0usize] = alloy_sol_types::abi::token::WordToken(
8487                    Self::SIGNATURE_HASH,
8488                );
8489                Ok(())
8490            }
8491        }
8492        #[automatically_derived]
8493        impl alloy_sol_types::private::IntoLogData for Initialized {
8494            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8495                From::from(self)
8496            }
8497            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8498                From::from(&self)
8499            }
8500        }
8501        #[automatically_derived]
8502        impl From<&Initialized> for alloy_sol_types::private::LogData {
8503            #[inline]
8504            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
8505                alloy_sol_types::SolEvent::encode_log_data(this)
8506            }
8507        }
8508    };
8509    #[derive(serde::Serialize, serde::Deserialize)]
8510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8511    /**Event with signature `MaxCommissionIncreaseUpdated(uint16)` and selector `0xbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd`.
8512```solidity
8513event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
8514```*/
8515    #[allow(
8516        non_camel_case_types,
8517        non_snake_case,
8518        clippy::pub_underscore_fields,
8519        clippy::style
8520    )]
8521    #[derive(Clone)]
8522    pub struct MaxCommissionIncreaseUpdated {
8523        #[allow(missing_docs)]
8524        pub newMaxIncrease: u16,
8525    }
8526    #[allow(
8527        non_camel_case_types,
8528        non_snake_case,
8529        clippy::pub_underscore_fields,
8530        clippy::style
8531    )]
8532    const _: () = {
8533        use alloy::sol_types as alloy_sol_types;
8534        #[automatically_derived]
8535        impl alloy_sol_types::SolEvent for MaxCommissionIncreaseUpdated {
8536            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
8537            type DataToken<'a> = <Self::DataTuple<
8538                'a,
8539            > as alloy_sol_types::SolType>::Token<'a>;
8540            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8541            const SIGNATURE: &'static str = "MaxCommissionIncreaseUpdated(uint16)";
8542            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8543                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
8544                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
8545                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
8546            ]);
8547            const ANONYMOUS: bool = false;
8548            #[allow(unused_variables)]
8549            #[inline]
8550            fn new(
8551                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8552                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8553            ) -> Self {
8554                Self { newMaxIncrease: data.0 }
8555            }
8556            #[inline]
8557            fn check_signature(
8558                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8559            ) -> alloy_sol_types::Result<()> {
8560                if topics.0 != Self::SIGNATURE_HASH {
8561                    return Err(
8562                        alloy_sol_types::Error::invalid_event_signature_hash(
8563                            Self::SIGNATURE,
8564                            topics.0,
8565                            Self::SIGNATURE_HASH,
8566                        ),
8567                    );
8568                }
8569                Ok(())
8570            }
8571            #[inline]
8572            fn tokenize_body(&self) -> Self::DataToken<'_> {
8573                (
8574                    <alloy::sol_types::sol_data::Uint<
8575                        16,
8576                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
8577                )
8578            }
8579            #[inline]
8580            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8581                (Self::SIGNATURE_HASH.into(),)
8582            }
8583            #[inline]
8584            fn encode_topics_raw(
8585                &self,
8586                out: &mut [alloy_sol_types::abi::token::WordToken],
8587            ) -> alloy_sol_types::Result<()> {
8588                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8589                    return Err(alloy_sol_types::Error::Overrun);
8590                }
8591                out[0usize] = alloy_sol_types::abi::token::WordToken(
8592                    Self::SIGNATURE_HASH,
8593                );
8594                Ok(())
8595            }
8596        }
8597        #[automatically_derived]
8598        impl alloy_sol_types::private::IntoLogData for MaxCommissionIncreaseUpdated {
8599            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8600                From::from(self)
8601            }
8602            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8603                From::from(&self)
8604            }
8605        }
8606        #[automatically_derived]
8607        impl From<&MaxCommissionIncreaseUpdated> for alloy_sol_types::private::LogData {
8608            #[inline]
8609            fn from(
8610                this: &MaxCommissionIncreaseUpdated,
8611            ) -> alloy_sol_types::private::LogData {
8612                alloy_sol_types::SolEvent::encode_log_data(this)
8613            }
8614        }
8615    };
8616    #[derive(serde::Serialize, serde::Deserialize)]
8617    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8618    /**Event with signature `MetadataUriUpdated(address,string)` and selector `0x20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34`.
8619```solidity
8620event MetadataUriUpdated(address indexed validator, string metadataUri);
8621```*/
8622    #[allow(
8623        non_camel_case_types,
8624        non_snake_case,
8625        clippy::pub_underscore_fields,
8626        clippy::style
8627    )]
8628    #[derive(Clone)]
8629    pub struct MetadataUriUpdated {
8630        #[allow(missing_docs)]
8631        pub validator: alloy::sol_types::private::Address,
8632        #[allow(missing_docs)]
8633        pub metadataUri: alloy::sol_types::private::String,
8634    }
8635    #[allow(
8636        non_camel_case_types,
8637        non_snake_case,
8638        clippy::pub_underscore_fields,
8639        clippy::style
8640    )]
8641    const _: () = {
8642        use alloy::sol_types as alloy_sol_types;
8643        #[automatically_derived]
8644        impl alloy_sol_types::SolEvent for MetadataUriUpdated {
8645            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
8646            type DataToken<'a> = <Self::DataTuple<
8647                'a,
8648            > as alloy_sol_types::SolType>::Token<'a>;
8649            type TopicList = (
8650                alloy_sol_types::sol_data::FixedBytes<32>,
8651                alloy::sol_types::sol_data::Address,
8652            );
8653            const SIGNATURE: &'static str = "MetadataUriUpdated(address,string)";
8654            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8655                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
8656                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
8657                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
8658            ]);
8659            const ANONYMOUS: bool = false;
8660            #[allow(unused_variables)]
8661            #[inline]
8662            fn new(
8663                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8664                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8665            ) -> Self {
8666                Self {
8667                    validator: topics.1,
8668                    metadataUri: data.0,
8669                }
8670            }
8671            #[inline]
8672            fn check_signature(
8673                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8674            ) -> alloy_sol_types::Result<()> {
8675                if topics.0 != Self::SIGNATURE_HASH {
8676                    return Err(
8677                        alloy_sol_types::Error::invalid_event_signature_hash(
8678                            Self::SIGNATURE,
8679                            topics.0,
8680                            Self::SIGNATURE_HASH,
8681                        ),
8682                    );
8683                }
8684                Ok(())
8685            }
8686            #[inline]
8687            fn tokenize_body(&self) -> Self::DataToken<'_> {
8688                (
8689                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8690                        &self.metadataUri,
8691                    ),
8692                )
8693            }
8694            #[inline]
8695            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8696                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8697            }
8698            #[inline]
8699            fn encode_topics_raw(
8700                &self,
8701                out: &mut [alloy_sol_types::abi::token::WordToken],
8702            ) -> alloy_sol_types::Result<()> {
8703                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8704                    return Err(alloy_sol_types::Error::Overrun);
8705                }
8706                out[0usize] = alloy_sol_types::abi::token::WordToken(
8707                    Self::SIGNATURE_HASH,
8708                );
8709                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8710                    &self.validator,
8711                );
8712                Ok(())
8713            }
8714        }
8715        #[automatically_derived]
8716        impl alloy_sol_types::private::IntoLogData for MetadataUriUpdated {
8717            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8718                From::from(self)
8719            }
8720            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8721                From::from(&self)
8722            }
8723        }
8724        #[automatically_derived]
8725        impl From<&MetadataUriUpdated> for alloy_sol_types::private::LogData {
8726            #[inline]
8727            fn from(this: &MetadataUriUpdated) -> alloy_sol_types::private::LogData {
8728                alloy_sol_types::SolEvent::encode_log_data(this)
8729            }
8730        }
8731    };
8732    #[derive(serde::Serialize, serde::Deserialize)]
8733    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8734    /**Event with signature `MinCommissionUpdateIntervalUpdated(uint256)` and selector `0x51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef259`.
8735```solidity
8736event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
8737```*/
8738    #[allow(
8739        non_camel_case_types,
8740        non_snake_case,
8741        clippy::pub_underscore_fields,
8742        clippy::style
8743    )]
8744    #[derive(Clone)]
8745    pub struct MinCommissionUpdateIntervalUpdated {
8746        #[allow(missing_docs)]
8747        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
8748    }
8749    #[allow(
8750        non_camel_case_types,
8751        non_snake_case,
8752        clippy::pub_underscore_fields,
8753        clippy::style
8754    )]
8755    const _: () = {
8756        use alloy::sol_types as alloy_sol_types;
8757        #[automatically_derived]
8758        impl alloy_sol_types::SolEvent for MinCommissionUpdateIntervalUpdated {
8759            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8760            type DataToken<'a> = <Self::DataTuple<
8761                'a,
8762            > as alloy_sol_types::SolType>::Token<'a>;
8763            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8764            const SIGNATURE: &'static str = "MinCommissionUpdateIntervalUpdated(uint256)";
8765            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8766                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
8767                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
8768                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
8769            ]);
8770            const ANONYMOUS: bool = false;
8771            #[allow(unused_variables)]
8772            #[inline]
8773            fn new(
8774                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8775                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8776            ) -> Self {
8777                Self { newInterval: data.0 }
8778            }
8779            #[inline]
8780            fn check_signature(
8781                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8782            ) -> alloy_sol_types::Result<()> {
8783                if topics.0 != Self::SIGNATURE_HASH {
8784                    return Err(
8785                        alloy_sol_types::Error::invalid_event_signature_hash(
8786                            Self::SIGNATURE,
8787                            topics.0,
8788                            Self::SIGNATURE_HASH,
8789                        ),
8790                    );
8791                }
8792                Ok(())
8793            }
8794            #[inline]
8795            fn tokenize_body(&self) -> Self::DataToken<'_> {
8796                (
8797                    <alloy::sol_types::sol_data::Uint<
8798                        256,
8799                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
8800                )
8801            }
8802            #[inline]
8803            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8804                (Self::SIGNATURE_HASH.into(),)
8805            }
8806            #[inline]
8807            fn encode_topics_raw(
8808                &self,
8809                out: &mut [alloy_sol_types::abi::token::WordToken],
8810            ) -> alloy_sol_types::Result<()> {
8811                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8812                    return Err(alloy_sol_types::Error::Overrun);
8813                }
8814                out[0usize] = alloy_sol_types::abi::token::WordToken(
8815                    Self::SIGNATURE_HASH,
8816                );
8817                Ok(())
8818            }
8819        }
8820        #[automatically_derived]
8821        impl alloy_sol_types::private::IntoLogData
8822        for MinCommissionUpdateIntervalUpdated {
8823            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8824                From::from(self)
8825            }
8826            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8827                From::from(&self)
8828            }
8829        }
8830        #[automatically_derived]
8831        impl From<&MinCommissionUpdateIntervalUpdated>
8832        for alloy_sol_types::private::LogData {
8833            #[inline]
8834            fn from(
8835                this: &MinCommissionUpdateIntervalUpdated,
8836            ) -> alloy_sol_types::private::LogData {
8837                alloy_sol_types::SolEvent::encode_log_data(this)
8838            }
8839        }
8840    };
8841    #[derive(serde::Serialize, serde::Deserialize)]
8842    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8843    /**Event with signature `MinDelegateAmountUpdated(uint256)` and selector `0x02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa5`.
8844```solidity
8845event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
8846```*/
8847    #[allow(
8848        non_camel_case_types,
8849        non_snake_case,
8850        clippy::pub_underscore_fields,
8851        clippy::style
8852    )]
8853    #[derive(Clone)]
8854    pub struct MinDelegateAmountUpdated {
8855        #[allow(missing_docs)]
8856        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
8857    }
8858    #[allow(
8859        non_camel_case_types,
8860        non_snake_case,
8861        clippy::pub_underscore_fields,
8862        clippy::style
8863    )]
8864    const _: () = {
8865        use alloy::sol_types as alloy_sol_types;
8866        #[automatically_derived]
8867        impl alloy_sol_types::SolEvent for MinDelegateAmountUpdated {
8868            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8869            type DataToken<'a> = <Self::DataTuple<
8870                'a,
8871            > as alloy_sol_types::SolType>::Token<'a>;
8872            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8873            const SIGNATURE: &'static str = "MinDelegateAmountUpdated(uint256)";
8874            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8875                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
8876                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
8877                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
8878            ]);
8879            const ANONYMOUS: bool = false;
8880            #[allow(unused_variables)]
8881            #[inline]
8882            fn new(
8883                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8884                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8885            ) -> Self {
8886                Self {
8887                    newMinDelegateAmount: data.0,
8888                }
8889            }
8890            #[inline]
8891            fn check_signature(
8892                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8893            ) -> alloy_sol_types::Result<()> {
8894                if topics.0 != Self::SIGNATURE_HASH {
8895                    return Err(
8896                        alloy_sol_types::Error::invalid_event_signature_hash(
8897                            Self::SIGNATURE,
8898                            topics.0,
8899                            Self::SIGNATURE_HASH,
8900                        ),
8901                    );
8902                }
8903                Ok(())
8904            }
8905            #[inline]
8906            fn tokenize_body(&self) -> Self::DataToken<'_> {
8907                (
8908                    <alloy::sol_types::sol_data::Uint<
8909                        256,
8910                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
8911                )
8912            }
8913            #[inline]
8914            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8915                (Self::SIGNATURE_HASH.into(),)
8916            }
8917            #[inline]
8918            fn encode_topics_raw(
8919                &self,
8920                out: &mut [alloy_sol_types::abi::token::WordToken],
8921            ) -> alloy_sol_types::Result<()> {
8922                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8923                    return Err(alloy_sol_types::Error::Overrun);
8924                }
8925                out[0usize] = alloy_sol_types::abi::token::WordToken(
8926                    Self::SIGNATURE_HASH,
8927                );
8928                Ok(())
8929            }
8930        }
8931        #[automatically_derived]
8932        impl alloy_sol_types::private::IntoLogData for MinDelegateAmountUpdated {
8933            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8934                From::from(self)
8935            }
8936            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8937                From::from(&self)
8938            }
8939        }
8940        #[automatically_derived]
8941        impl From<&MinDelegateAmountUpdated> for alloy_sol_types::private::LogData {
8942            #[inline]
8943            fn from(
8944                this: &MinDelegateAmountUpdated,
8945            ) -> alloy_sol_types::private::LogData {
8946                alloy_sol_types::SolEvent::encode_log_data(this)
8947            }
8948        }
8949    };
8950    #[derive(serde::Serialize, serde::Deserialize)]
8951    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8952    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
8953```solidity
8954event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
8955```*/
8956    #[allow(
8957        non_camel_case_types,
8958        non_snake_case,
8959        clippy::pub_underscore_fields,
8960        clippy::style
8961    )]
8962    #[derive(Clone)]
8963    pub struct OwnershipTransferred {
8964        #[allow(missing_docs)]
8965        pub previousOwner: alloy::sol_types::private::Address,
8966        #[allow(missing_docs)]
8967        pub newOwner: alloy::sol_types::private::Address,
8968    }
8969    #[allow(
8970        non_camel_case_types,
8971        non_snake_case,
8972        clippy::pub_underscore_fields,
8973        clippy::style
8974    )]
8975    const _: () = {
8976        use alloy::sol_types as alloy_sol_types;
8977        #[automatically_derived]
8978        impl alloy_sol_types::SolEvent for OwnershipTransferred {
8979            type DataTuple<'a> = ();
8980            type DataToken<'a> = <Self::DataTuple<
8981                'a,
8982            > as alloy_sol_types::SolType>::Token<'a>;
8983            type TopicList = (
8984                alloy_sol_types::sol_data::FixedBytes<32>,
8985                alloy::sol_types::sol_data::Address,
8986                alloy::sol_types::sol_data::Address,
8987            );
8988            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
8989            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8990                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
8991                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
8992                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
8993            ]);
8994            const ANONYMOUS: bool = false;
8995            #[allow(unused_variables)]
8996            #[inline]
8997            fn new(
8998                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8999                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9000            ) -> Self {
9001                Self {
9002                    previousOwner: topics.1,
9003                    newOwner: topics.2,
9004                }
9005            }
9006            #[inline]
9007            fn check_signature(
9008                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9009            ) -> alloy_sol_types::Result<()> {
9010                if topics.0 != Self::SIGNATURE_HASH {
9011                    return Err(
9012                        alloy_sol_types::Error::invalid_event_signature_hash(
9013                            Self::SIGNATURE,
9014                            topics.0,
9015                            Self::SIGNATURE_HASH,
9016                        ),
9017                    );
9018                }
9019                Ok(())
9020            }
9021            #[inline]
9022            fn tokenize_body(&self) -> Self::DataToken<'_> {
9023                ()
9024            }
9025            #[inline]
9026            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9027                (
9028                    Self::SIGNATURE_HASH.into(),
9029                    self.previousOwner.clone(),
9030                    self.newOwner.clone(),
9031                )
9032            }
9033            #[inline]
9034            fn encode_topics_raw(
9035                &self,
9036                out: &mut [alloy_sol_types::abi::token::WordToken],
9037            ) -> alloy_sol_types::Result<()> {
9038                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9039                    return Err(alloy_sol_types::Error::Overrun);
9040                }
9041                out[0usize] = alloy_sol_types::abi::token::WordToken(
9042                    Self::SIGNATURE_HASH,
9043                );
9044                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9045                    &self.previousOwner,
9046                );
9047                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9048                    &self.newOwner,
9049                );
9050                Ok(())
9051            }
9052        }
9053        #[automatically_derived]
9054        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
9055            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9056                From::from(self)
9057            }
9058            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9059                From::from(&self)
9060            }
9061        }
9062        #[automatically_derived]
9063        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
9064            #[inline]
9065            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
9066                alloy_sol_types::SolEvent::encode_log_data(this)
9067            }
9068        }
9069    };
9070    #[derive(serde::Serialize, serde::Deserialize)]
9071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9072    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
9073```solidity
9074event Paused(address account);
9075```*/
9076    #[allow(
9077        non_camel_case_types,
9078        non_snake_case,
9079        clippy::pub_underscore_fields,
9080        clippy::style
9081    )]
9082    #[derive(Clone)]
9083    pub struct Paused {
9084        #[allow(missing_docs)]
9085        pub account: alloy::sol_types::private::Address,
9086    }
9087    #[allow(
9088        non_camel_case_types,
9089        non_snake_case,
9090        clippy::pub_underscore_fields,
9091        clippy::style
9092    )]
9093    const _: () = {
9094        use alloy::sol_types as alloy_sol_types;
9095        #[automatically_derived]
9096        impl alloy_sol_types::SolEvent for Paused {
9097            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
9098            type DataToken<'a> = <Self::DataTuple<
9099                'a,
9100            > as alloy_sol_types::SolType>::Token<'a>;
9101            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9102            const SIGNATURE: &'static str = "Paused(address)";
9103            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9104                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
9105                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
9106                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
9107            ]);
9108            const ANONYMOUS: bool = false;
9109            #[allow(unused_variables)]
9110            #[inline]
9111            fn new(
9112                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9113                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9114            ) -> Self {
9115                Self { account: data.0 }
9116            }
9117            #[inline]
9118            fn check_signature(
9119                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9120            ) -> alloy_sol_types::Result<()> {
9121                if topics.0 != Self::SIGNATURE_HASH {
9122                    return Err(
9123                        alloy_sol_types::Error::invalid_event_signature_hash(
9124                            Self::SIGNATURE,
9125                            topics.0,
9126                            Self::SIGNATURE_HASH,
9127                        ),
9128                    );
9129                }
9130                Ok(())
9131            }
9132            #[inline]
9133            fn tokenize_body(&self) -> Self::DataToken<'_> {
9134                (
9135                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9136                        &self.account,
9137                    ),
9138                )
9139            }
9140            #[inline]
9141            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9142                (Self::SIGNATURE_HASH.into(),)
9143            }
9144            #[inline]
9145            fn encode_topics_raw(
9146                &self,
9147                out: &mut [alloy_sol_types::abi::token::WordToken],
9148            ) -> alloy_sol_types::Result<()> {
9149                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9150                    return Err(alloy_sol_types::Error::Overrun);
9151                }
9152                out[0usize] = alloy_sol_types::abi::token::WordToken(
9153                    Self::SIGNATURE_HASH,
9154                );
9155                Ok(())
9156            }
9157        }
9158        #[automatically_derived]
9159        impl alloy_sol_types::private::IntoLogData for Paused {
9160            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9161                From::from(self)
9162            }
9163            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9164                From::from(&self)
9165            }
9166        }
9167        #[automatically_derived]
9168        impl From<&Paused> for alloy_sol_types::private::LogData {
9169            #[inline]
9170            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
9171                alloy_sol_types::SolEvent::encode_log_data(this)
9172            }
9173        }
9174    };
9175    #[derive(serde::Serialize, serde::Deserialize)]
9176    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9177    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
9178```solidity
9179event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
9180```*/
9181    #[allow(
9182        non_camel_case_types,
9183        non_snake_case,
9184        clippy::pub_underscore_fields,
9185        clippy::style
9186    )]
9187    #[derive(Clone)]
9188    pub struct RoleAdminChanged {
9189        #[allow(missing_docs)]
9190        pub role: alloy::sol_types::private::FixedBytes<32>,
9191        #[allow(missing_docs)]
9192        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
9193        #[allow(missing_docs)]
9194        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
9195    }
9196    #[allow(
9197        non_camel_case_types,
9198        non_snake_case,
9199        clippy::pub_underscore_fields,
9200        clippy::style
9201    )]
9202    const _: () = {
9203        use alloy::sol_types as alloy_sol_types;
9204        #[automatically_derived]
9205        impl alloy_sol_types::SolEvent for RoleAdminChanged {
9206            type DataTuple<'a> = ();
9207            type DataToken<'a> = <Self::DataTuple<
9208                'a,
9209            > as alloy_sol_types::SolType>::Token<'a>;
9210            type TopicList = (
9211                alloy_sol_types::sol_data::FixedBytes<32>,
9212                alloy::sol_types::sol_data::FixedBytes<32>,
9213                alloy::sol_types::sol_data::FixedBytes<32>,
9214                alloy::sol_types::sol_data::FixedBytes<32>,
9215            );
9216            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
9217            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9218                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9219                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9220                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9221            ]);
9222            const ANONYMOUS: bool = false;
9223            #[allow(unused_variables)]
9224            #[inline]
9225            fn new(
9226                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9227                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9228            ) -> Self {
9229                Self {
9230                    role: topics.1,
9231                    previousAdminRole: topics.2,
9232                    newAdminRole: topics.3,
9233                }
9234            }
9235            #[inline]
9236            fn check_signature(
9237                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9238            ) -> alloy_sol_types::Result<()> {
9239                if topics.0 != Self::SIGNATURE_HASH {
9240                    return Err(
9241                        alloy_sol_types::Error::invalid_event_signature_hash(
9242                            Self::SIGNATURE,
9243                            topics.0,
9244                            Self::SIGNATURE_HASH,
9245                        ),
9246                    );
9247                }
9248                Ok(())
9249            }
9250            #[inline]
9251            fn tokenize_body(&self) -> Self::DataToken<'_> {
9252                ()
9253            }
9254            #[inline]
9255            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9256                (
9257                    Self::SIGNATURE_HASH.into(),
9258                    self.role.clone(),
9259                    self.previousAdminRole.clone(),
9260                    self.newAdminRole.clone(),
9261                )
9262            }
9263            #[inline]
9264            fn encode_topics_raw(
9265                &self,
9266                out: &mut [alloy_sol_types::abi::token::WordToken],
9267            ) -> alloy_sol_types::Result<()> {
9268                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9269                    return Err(alloy_sol_types::Error::Overrun);
9270                }
9271                out[0usize] = alloy_sol_types::abi::token::WordToken(
9272                    Self::SIGNATURE_HASH,
9273                );
9274                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9275                    32,
9276                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9277                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
9278                    32,
9279                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
9280                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
9281                    32,
9282                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
9283                Ok(())
9284            }
9285        }
9286        #[automatically_derived]
9287        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
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<&RoleAdminChanged> for alloy_sol_types::private::LogData {
9297            #[inline]
9298            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
9299                alloy_sol_types::SolEvent::encode_log_data(this)
9300            }
9301        }
9302    };
9303    #[derive(serde::Serialize, serde::Deserialize)]
9304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9305    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
9306```solidity
9307event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
9308```*/
9309    #[allow(
9310        non_camel_case_types,
9311        non_snake_case,
9312        clippy::pub_underscore_fields,
9313        clippy::style
9314    )]
9315    #[derive(Clone)]
9316    pub struct RoleGranted {
9317        #[allow(missing_docs)]
9318        pub role: alloy::sol_types::private::FixedBytes<32>,
9319        #[allow(missing_docs)]
9320        pub account: alloy::sol_types::private::Address,
9321        #[allow(missing_docs)]
9322        pub sender: alloy::sol_types::private::Address,
9323    }
9324    #[allow(
9325        non_camel_case_types,
9326        non_snake_case,
9327        clippy::pub_underscore_fields,
9328        clippy::style
9329    )]
9330    const _: () = {
9331        use alloy::sol_types as alloy_sol_types;
9332        #[automatically_derived]
9333        impl alloy_sol_types::SolEvent for RoleGranted {
9334            type DataTuple<'a> = ();
9335            type DataToken<'a> = <Self::DataTuple<
9336                'a,
9337            > as alloy_sol_types::SolType>::Token<'a>;
9338            type TopicList = (
9339                alloy_sol_types::sol_data::FixedBytes<32>,
9340                alloy::sol_types::sol_data::FixedBytes<32>,
9341                alloy::sol_types::sol_data::Address,
9342                alloy::sol_types::sol_data::Address,
9343            );
9344            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
9345            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9346                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9347                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9348                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9349            ]);
9350            const ANONYMOUS: bool = false;
9351            #[allow(unused_variables)]
9352            #[inline]
9353            fn new(
9354                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9355                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9356            ) -> Self {
9357                Self {
9358                    role: topics.1,
9359                    account: topics.2,
9360                    sender: topics.3,
9361                }
9362            }
9363            #[inline]
9364            fn check_signature(
9365                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9366            ) -> alloy_sol_types::Result<()> {
9367                if topics.0 != Self::SIGNATURE_HASH {
9368                    return Err(
9369                        alloy_sol_types::Error::invalid_event_signature_hash(
9370                            Self::SIGNATURE,
9371                            topics.0,
9372                            Self::SIGNATURE_HASH,
9373                        ),
9374                    );
9375                }
9376                Ok(())
9377            }
9378            #[inline]
9379            fn tokenize_body(&self) -> Self::DataToken<'_> {
9380                ()
9381            }
9382            #[inline]
9383            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9384                (
9385                    Self::SIGNATURE_HASH.into(),
9386                    self.role.clone(),
9387                    self.account.clone(),
9388                    self.sender.clone(),
9389                )
9390            }
9391            #[inline]
9392            fn encode_topics_raw(
9393                &self,
9394                out: &mut [alloy_sol_types::abi::token::WordToken],
9395            ) -> alloy_sol_types::Result<()> {
9396                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9397                    return Err(alloy_sol_types::Error::Overrun);
9398                }
9399                out[0usize] = alloy_sol_types::abi::token::WordToken(
9400                    Self::SIGNATURE_HASH,
9401                );
9402                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9403                    32,
9404                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9405                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9406                    &self.account,
9407                );
9408                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9409                    &self.sender,
9410                );
9411                Ok(())
9412            }
9413        }
9414        #[automatically_derived]
9415        impl alloy_sol_types::private::IntoLogData for RoleGranted {
9416            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9417                From::from(self)
9418            }
9419            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9420                From::from(&self)
9421            }
9422        }
9423        #[automatically_derived]
9424        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
9425            #[inline]
9426            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
9427                alloy_sol_types::SolEvent::encode_log_data(this)
9428            }
9429        }
9430    };
9431    #[derive(serde::Serialize, serde::Deserialize)]
9432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9433    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
9434```solidity
9435event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
9436```*/
9437    #[allow(
9438        non_camel_case_types,
9439        non_snake_case,
9440        clippy::pub_underscore_fields,
9441        clippy::style
9442    )]
9443    #[derive(Clone)]
9444    pub struct RoleRevoked {
9445        #[allow(missing_docs)]
9446        pub role: alloy::sol_types::private::FixedBytes<32>,
9447        #[allow(missing_docs)]
9448        pub account: alloy::sol_types::private::Address,
9449        #[allow(missing_docs)]
9450        pub sender: alloy::sol_types::private::Address,
9451    }
9452    #[allow(
9453        non_camel_case_types,
9454        non_snake_case,
9455        clippy::pub_underscore_fields,
9456        clippy::style
9457    )]
9458    const _: () = {
9459        use alloy::sol_types as alloy_sol_types;
9460        #[automatically_derived]
9461        impl alloy_sol_types::SolEvent for RoleRevoked {
9462            type DataTuple<'a> = ();
9463            type DataToken<'a> = <Self::DataTuple<
9464                'a,
9465            > as alloy_sol_types::SolType>::Token<'a>;
9466            type TopicList = (
9467                alloy_sol_types::sol_data::FixedBytes<32>,
9468                alloy::sol_types::sol_data::FixedBytes<32>,
9469                alloy::sol_types::sol_data::Address,
9470                alloy::sol_types::sol_data::Address,
9471            );
9472            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
9473            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9474                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9475                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9476                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9477            ]);
9478            const ANONYMOUS: bool = false;
9479            #[allow(unused_variables)]
9480            #[inline]
9481            fn new(
9482                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9483                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9484            ) -> Self {
9485                Self {
9486                    role: topics.1,
9487                    account: topics.2,
9488                    sender: topics.3,
9489                }
9490            }
9491            #[inline]
9492            fn check_signature(
9493                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9494            ) -> alloy_sol_types::Result<()> {
9495                if topics.0 != Self::SIGNATURE_HASH {
9496                    return Err(
9497                        alloy_sol_types::Error::invalid_event_signature_hash(
9498                            Self::SIGNATURE,
9499                            topics.0,
9500                            Self::SIGNATURE_HASH,
9501                        ),
9502                    );
9503                }
9504                Ok(())
9505            }
9506            #[inline]
9507            fn tokenize_body(&self) -> Self::DataToken<'_> {
9508                ()
9509            }
9510            #[inline]
9511            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9512                (
9513                    Self::SIGNATURE_HASH.into(),
9514                    self.role.clone(),
9515                    self.account.clone(),
9516                    self.sender.clone(),
9517                )
9518            }
9519            #[inline]
9520            fn encode_topics_raw(
9521                &self,
9522                out: &mut [alloy_sol_types::abi::token::WordToken],
9523            ) -> alloy_sol_types::Result<()> {
9524                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9525                    return Err(alloy_sol_types::Error::Overrun);
9526                }
9527                out[0usize] = alloy_sol_types::abi::token::WordToken(
9528                    Self::SIGNATURE_HASH,
9529                );
9530                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9531                    32,
9532                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9533                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9534                    &self.account,
9535                );
9536                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9537                    &self.sender,
9538                );
9539                Ok(())
9540            }
9541        }
9542        #[automatically_derived]
9543        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
9544            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9545                From::from(self)
9546            }
9547            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9548                From::from(&self)
9549            }
9550        }
9551        #[automatically_derived]
9552        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
9553            #[inline]
9554            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
9555                alloy_sol_types::SolEvent::encode_log_data(this)
9556            }
9557        }
9558    };
9559    #[derive(serde::Serialize, serde::Deserialize)]
9560    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9561    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
9562```solidity
9563event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
9564```*/
9565    #[allow(
9566        non_camel_case_types,
9567        non_snake_case,
9568        clippy::pub_underscore_fields,
9569        clippy::style
9570    )]
9571    #[derive(Clone)]
9572    pub struct Undelegated {
9573        #[allow(missing_docs)]
9574        pub delegator: alloy::sol_types::private::Address,
9575        #[allow(missing_docs)]
9576        pub validator: alloy::sol_types::private::Address,
9577        #[allow(missing_docs)]
9578        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9579    }
9580    #[allow(
9581        non_camel_case_types,
9582        non_snake_case,
9583        clippy::pub_underscore_fields,
9584        clippy::style
9585    )]
9586    const _: () = {
9587        use alloy::sol_types as alloy_sol_types;
9588        #[automatically_derived]
9589        impl alloy_sol_types::SolEvent for Undelegated {
9590            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9591            type DataToken<'a> = <Self::DataTuple<
9592                'a,
9593            > as alloy_sol_types::SolType>::Token<'a>;
9594            type TopicList = (
9595                alloy_sol_types::sol_data::FixedBytes<32>,
9596                alloy::sol_types::sol_data::Address,
9597                alloy::sol_types::sol_data::Address,
9598            );
9599            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
9600            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9601                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
9602                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
9603                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
9604            ]);
9605            const ANONYMOUS: bool = false;
9606            #[allow(unused_variables)]
9607            #[inline]
9608            fn new(
9609                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9610                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9611            ) -> Self {
9612                Self {
9613                    delegator: topics.1,
9614                    validator: topics.2,
9615                    amount: data.0,
9616                }
9617            }
9618            #[inline]
9619            fn check_signature(
9620                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9621            ) -> alloy_sol_types::Result<()> {
9622                if topics.0 != Self::SIGNATURE_HASH {
9623                    return Err(
9624                        alloy_sol_types::Error::invalid_event_signature_hash(
9625                            Self::SIGNATURE,
9626                            topics.0,
9627                            Self::SIGNATURE_HASH,
9628                        ),
9629                    );
9630                }
9631                Ok(())
9632            }
9633            #[inline]
9634            fn tokenize_body(&self) -> Self::DataToken<'_> {
9635                (
9636                    <alloy::sol_types::sol_data::Uint<
9637                        256,
9638                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9639                )
9640            }
9641            #[inline]
9642            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9643                (
9644                    Self::SIGNATURE_HASH.into(),
9645                    self.delegator.clone(),
9646                    self.validator.clone(),
9647                )
9648            }
9649            #[inline]
9650            fn encode_topics_raw(
9651                &self,
9652                out: &mut [alloy_sol_types::abi::token::WordToken],
9653            ) -> alloy_sol_types::Result<()> {
9654                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9655                    return Err(alloy_sol_types::Error::Overrun);
9656                }
9657                out[0usize] = alloy_sol_types::abi::token::WordToken(
9658                    Self::SIGNATURE_HASH,
9659                );
9660                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9661                    &self.delegator,
9662                );
9663                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9664                    &self.validator,
9665                );
9666                Ok(())
9667            }
9668        }
9669        #[automatically_derived]
9670        impl alloy_sol_types::private::IntoLogData for Undelegated {
9671            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9672                From::from(self)
9673            }
9674            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9675                From::from(&self)
9676            }
9677        }
9678        #[automatically_derived]
9679        impl From<&Undelegated> for alloy_sol_types::private::LogData {
9680            #[inline]
9681            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
9682                alloy_sol_types::SolEvent::encode_log_data(this)
9683            }
9684        }
9685    };
9686    #[derive(serde::Serialize, serde::Deserialize)]
9687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9688    /**Event with signature `UndelegatedV2(address,address,uint64,uint256,uint256)` and selector `0x708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da`.
9689```solidity
9690event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
9691```*/
9692    #[allow(
9693        non_camel_case_types,
9694        non_snake_case,
9695        clippy::pub_underscore_fields,
9696        clippy::style
9697    )]
9698    #[derive(Clone)]
9699    pub struct UndelegatedV2 {
9700        #[allow(missing_docs)]
9701        pub delegator: alloy::sol_types::private::Address,
9702        #[allow(missing_docs)]
9703        pub validator: alloy::sol_types::private::Address,
9704        #[allow(missing_docs)]
9705        pub undelegationId: u64,
9706        #[allow(missing_docs)]
9707        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9708        #[allow(missing_docs)]
9709        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9710    }
9711    #[allow(
9712        non_camel_case_types,
9713        non_snake_case,
9714        clippy::pub_underscore_fields,
9715        clippy::style
9716    )]
9717    const _: () = {
9718        use alloy::sol_types as alloy_sol_types;
9719        #[automatically_derived]
9720        impl alloy_sol_types::SolEvent for UndelegatedV2 {
9721            type DataTuple<'a> = (
9722                alloy::sol_types::sol_data::Uint<256>,
9723                alloy::sol_types::sol_data::Uint<256>,
9724            );
9725            type DataToken<'a> = <Self::DataTuple<
9726                'a,
9727            > as alloy_sol_types::SolType>::Token<'a>;
9728            type TopicList = (
9729                alloy_sol_types::sol_data::FixedBytes<32>,
9730                alloy::sol_types::sol_data::Address,
9731                alloy::sol_types::sol_data::Address,
9732                alloy::sol_types::sol_data::Uint<64>,
9733            );
9734            const SIGNATURE: &'static str = "UndelegatedV2(address,address,uint64,uint256,uint256)";
9735            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9736                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
9737                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
9738                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
9739            ]);
9740            const ANONYMOUS: bool = false;
9741            #[allow(unused_variables)]
9742            #[inline]
9743            fn new(
9744                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9745                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9746            ) -> Self {
9747                Self {
9748                    delegator: topics.1,
9749                    validator: topics.2,
9750                    undelegationId: topics.3,
9751                    amount: data.0,
9752                    unlocksAt: data.1,
9753                }
9754            }
9755            #[inline]
9756            fn check_signature(
9757                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9758            ) -> alloy_sol_types::Result<()> {
9759                if topics.0 != Self::SIGNATURE_HASH {
9760                    return Err(
9761                        alloy_sol_types::Error::invalid_event_signature_hash(
9762                            Self::SIGNATURE,
9763                            topics.0,
9764                            Self::SIGNATURE_HASH,
9765                        ),
9766                    );
9767                }
9768                Ok(())
9769            }
9770            #[inline]
9771            fn tokenize_body(&self) -> Self::DataToken<'_> {
9772                (
9773                    <alloy::sol_types::sol_data::Uint<
9774                        256,
9775                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9776                    <alloy::sol_types::sol_data::Uint<
9777                        256,
9778                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
9779                )
9780            }
9781            #[inline]
9782            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9783                (
9784                    Self::SIGNATURE_HASH.into(),
9785                    self.delegator.clone(),
9786                    self.validator.clone(),
9787                    self.undelegationId.clone(),
9788                )
9789            }
9790            #[inline]
9791            fn encode_topics_raw(
9792                &self,
9793                out: &mut [alloy_sol_types::abi::token::WordToken],
9794            ) -> alloy_sol_types::Result<()> {
9795                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9796                    return Err(alloy_sol_types::Error::Overrun);
9797                }
9798                out[0usize] = alloy_sol_types::abi::token::WordToken(
9799                    Self::SIGNATURE_HASH,
9800                );
9801                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9802                    &self.delegator,
9803                );
9804                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9805                    &self.validator,
9806                );
9807                out[3usize] = <alloy::sol_types::sol_data::Uint<
9808                    64,
9809                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
9810                Ok(())
9811            }
9812        }
9813        #[automatically_derived]
9814        impl alloy_sol_types::private::IntoLogData for UndelegatedV2 {
9815            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9816                From::from(self)
9817            }
9818            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9819                From::from(&self)
9820            }
9821        }
9822        #[automatically_derived]
9823        impl From<&UndelegatedV2> for alloy_sol_types::private::LogData {
9824            #[inline]
9825            fn from(this: &UndelegatedV2) -> alloy_sol_types::private::LogData {
9826                alloy_sol_types::SolEvent::encode_log_data(this)
9827            }
9828        }
9829    };
9830    #[derive(serde::Serialize, serde::Deserialize)]
9831    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9832    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
9833```solidity
9834event Unpaused(address account);
9835```*/
9836    #[allow(
9837        non_camel_case_types,
9838        non_snake_case,
9839        clippy::pub_underscore_fields,
9840        clippy::style
9841    )]
9842    #[derive(Clone)]
9843    pub struct Unpaused {
9844        #[allow(missing_docs)]
9845        pub account: alloy::sol_types::private::Address,
9846    }
9847    #[allow(
9848        non_camel_case_types,
9849        non_snake_case,
9850        clippy::pub_underscore_fields,
9851        clippy::style
9852    )]
9853    const _: () = {
9854        use alloy::sol_types as alloy_sol_types;
9855        #[automatically_derived]
9856        impl alloy_sol_types::SolEvent for Unpaused {
9857            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
9858            type DataToken<'a> = <Self::DataTuple<
9859                'a,
9860            > as alloy_sol_types::SolType>::Token<'a>;
9861            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9862            const SIGNATURE: &'static str = "Unpaused(address)";
9863            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9864                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
9865                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
9866                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
9867            ]);
9868            const ANONYMOUS: bool = false;
9869            #[allow(unused_variables)]
9870            #[inline]
9871            fn new(
9872                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9873                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9874            ) -> Self {
9875                Self { account: data.0 }
9876            }
9877            #[inline]
9878            fn check_signature(
9879                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9880            ) -> alloy_sol_types::Result<()> {
9881                if topics.0 != Self::SIGNATURE_HASH {
9882                    return Err(
9883                        alloy_sol_types::Error::invalid_event_signature_hash(
9884                            Self::SIGNATURE,
9885                            topics.0,
9886                            Self::SIGNATURE_HASH,
9887                        ),
9888                    );
9889                }
9890                Ok(())
9891            }
9892            #[inline]
9893            fn tokenize_body(&self) -> Self::DataToken<'_> {
9894                (
9895                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9896                        &self.account,
9897                    ),
9898                )
9899            }
9900            #[inline]
9901            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9902                (Self::SIGNATURE_HASH.into(),)
9903            }
9904            #[inline]
9905            fn encode_topics_raw(
9906                &self,
9907                out: &mut [alloy_sol_types::abi::token::WordToken],
9908            ) -> alloy_sol_types::Result<()> {
9909                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9910                    return Err(alloy_sol_types::Error::Overrun);
9911                }
9912                out[0usize] = alloy_sol_types::abi::token::WordToken(
9913                    Self::SIGNATURE_HASH,
9914                );
9915                Ok(())
9916            }
9917        }
9918        #[automatically_derived]
9919        impl alloy_sol_types::private::IntoLogData for Unpaused {
9920            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9921                From::from(self)
9922            }
9923            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9924                From::from(&self)
9925            }
9926        }
9927        #[automatically_derived]
9928        impl From<&Unpaused> for alloy_sol_types::private::LogData {
9929            #[inline]
9930            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
9931                alloy_sol_types::SolEvent::encode_log_data(this)
9932            }
9933        }
9934    };
9935    #[derive(serde::Serialize, serde::Deserialize)]
9936    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9937    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
9938```solidity
9939event Upgraded(address indexed implementation);
9940```*/
9941    #[allow(
9942        non_camel_case_types,
9943        non_snake_case,
9944        clippy::pub_underscore_fields,
9945        clippy::style
9946    )]
9947    #[derive(Clone)]
9948    pub struct Upgraded {
9949        #[allow(missing_docs)]
9950        pub implementation: alloy::sol_types::private::Address,
9951    }
9952    #[allow(
9953        non_camel_case_types,
9954        non_snake_case,
9955        clippy::pub_underscore_fields,
9956        clippy::style
9957    )]
9958    const _: () = {
9959        use alloy::sol_types as alloy_sol_types;
9960        #[automatically_derived]
9961        impl alloy_sol_types::SolEvent for Upgraded {
9962            type DataTuple<'a> = ();
9963            type DataToken<'a> = <Self::DataTuple<
9964                'a,
9965            > as alloy_sol_types::SolType>::Token<'a>;
9966            type TopicList = (
9967                alloy_sol_types::sol_data::FixedBytes<32>,
9968                alloy::sol_types::sol_data::Address,
9969            );
9970            const SIGNATURE: &'static str = "Upgraded(address)";
9971            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9972                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
9973                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
9974                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
9975            ]);
9976            const ANONYMOUS: bool = false;
9977            #[allow(unused_variables)]
9978            #[inline]
9979            fn new(
9980                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9981                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9982            ) -> Self {
9983                Self { implementation: topics.1 }
9984            }
9985            #[inline]
9986            fn check_signature(
9987                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9988            ) -> alloy_sol_types::Result<()> {
9989                if topics.0 != Self::SIGNATURE_HASH {
9990                    return Err(
9991                        alloy_sol_types::Error::invalid_event_signature_hash(
9992                            Self::SIGNATURE,
9993                            topics.0,
9994                            Self::SIGNATURE_HASH,
9995                        ),
9996                    );
9997                }
9998                Ok(())
9999            }
10000            #[inline]
10001            fn tokenize_body(&self) -> Self::DataToken<'_> {
10002                ()
10003            }
10004            #[inline]
10005            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10006                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
10007            }
10008            #[inline]
10009            fn encode_topics_raw(
10010                &self,
10011                out: &mut [alloy_sol_types::abi::token::WordToken],
10012            ) -> alloy_sol_types::Result<()> {
10013                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10014                    return Err(alloy_sol_types::Error::Overrun);
10015                }
10016                out[0usize] = alloy_sol_types::abi::token::WordToken(
10017                    Self::SIGNATURE_HASH,
10018                );
10019                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10020                    &self.implementation,
10021                );
10022                Ok(())
10023            }
10024        }
10025        #[automatically_derived]
10026        impl alloy_sol_types::private::IntoLogData for Upgraded {
10027            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10028                From::from(self)
10029            }
10030            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10031                From::from(&self)
10032            }
10033        }
10034        #[automatically_derived]
10035        impl From<&Upgraded> for alloy_sol_types::private::LogData {
10036            #[inline]
10037            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
10038                alloy_sol_types::SolEvent::encode_log_data(this)
10039            }
10040        }
10041    };
10042    #[derive(serde::Serialize, serde::Deserialize)]
10043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10044    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
10045```solidity
10046event ValidatorExit(address indexed validator);
10047```*/
10048    #[allow(
10049        non_camel_case_types,
10050        non_snake_case,
10051        clippy::pub_underscore_fields,
10052        clippy::style
10053    )]
10054    #[derive(Clone)]
10055    pub struct ValidatorExit {
10056        #[allow(missing_docs)]
10057        pub validator: alloy::sol_types::private::Address,
10058    }
10059    #[allow(
10060        non_camel_case_types,
10061        non_snake_case,
10062        clippy::pub_underscore_fields,
10063        clippy::style
10064    )]
10065    const _: () = {
10066        use alloy::sol_types as alloy_sol_types;
10067        #[automatically_derived]
10068        impl alloy_sol_types::SolEvent for ValidatorExit {
10069            type DataTuple<'a> = ();
10070            type DataToken<'a> = <Self::DataTuple<
10071                'a,
10072            > as alloy_sol_types::SolType>::Token<'a>;
10073            type TopicList = (
10074                alloy_sol_types::sol_data::FixedBytes<32>,
10075                alloy::sol_types::sol_data::Address,
10076            );
10077            const SIGNATURE: &'static str = "ValidatorExit(address)";
10078            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10079                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
10080                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
10081                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
10082            ]);
10083            const ANONYMOUS: bool = false;
10084            #[allow(unused_variables)]
10085            #[inline]
10086            fn new(
10087                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10088                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10089            ) -> Self {
10090                Self { validator: topics.1 }
10091            }
10092            #[inline]
10093            fn check_signature(
10094                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10095            ) -> alloy_sol_types::Result<()> {
10096                if topics.0 != Self::SIGNATURE_HASH {
10097                    return Err(
10098                        alloy_sol_types::Error::invalid_event_signature_hash(
10099                            Self::SIGNATURE,
10100                            topics.0,
10101                            Self::SIGNATURE_HASH,
10102                        ),
10103                    );
10104                }
10105                Ok(())
10106            }
10107            #[inline]
10108            fn tokenize_body(&self) -> Self::DataToken<'_> {
10109                ()
10110            }
10111            #[inline]
10112            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10113                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10114            }
10115            #[inline]
10116            fn encode_topics_raw(
10117                &self,
10118                out: &mut [alloy_sol_types::abi::token::WordToken],
10119            ) -> alloy_sol_types::Result<()> {
10120                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10121                    return Err(alloy_sol_types::Error::Overrun);
10122                }
10123                out[0usize] = alloy_sol_types::abi::token::WordToken(
10124                    Self::SIGNATURE_HASH,
10125                );
10126                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10127                    &self.validator,
10128                );
10129                Ok(())
10130            }
10131        }
10132        #[automatically_derived]
10133        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
10134            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10135                From::from(self)
10136            }
10137            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10138                From::from(&self)
10139            }
10140        }
10141        #[automatically_derived]
10142        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
10143            #[inline]
10144            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
10145                alloy_sol_types::SolEvent::encode_log_data(this)
10146            }
10147        }
10148    };
10149    #[derive(serde::Serialize, serde::Deserialize)]
10150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10151    /**Event with signature `ValidatorExitClaimed(address,address,uint256)` and selector `0x8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad844`.
10152```solidity
10153event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
10154```*/
10155    #[allow(
10156        non_camel_case_types,
10157        non_snake_case,
10158        clippy::pub_underscore_fields,
10159        clippy::style
10160    )]
10161    #[derive(Clone)]
10162    pub struct ValidatorExitClaimed {
10163        #[allow(missing_docs)]
10164        pub delegator: alloy::sol_types::private::Address,
10165        #[allow(missing_docs)]
10166        pub validator: alloy::sol_types::private::Address,
10167        #[allow(missing_docs)]
10168        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10169    }
10170    #[allow(
10171        non_camel_case_types,
10172        non_snake_case,
10173        clippy::pub_underscore_fields,
10174        clippy::style
10175    )]
10176    const _: () = {
10177        use alloy::sol_types as alloy_sol_types;
10178        #[automatically_derived]
10179        impl alloy_sol_types::SolEvent for ValidatorExitClaimed {
10180            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10181            type DataToken<'a> = <Self::DataTuple<
10182                'a,
10183            > as alloy_sol_types::SolType>::Token<'a>;
10184            type TopicList = (
10185                alloy_sol_types::sol_data::FixedBytes<32>,
10186                alloy::sol_types::sol_data::Address,
10187                alloy::sol_types::sol_data::Address,
10188            );
10189            const SIGNATURE: &'static str = "ValidatorExitClaimed(address,address,uint256)";
10190            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10191                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
10192                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
10193                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
10194            ]);
10195            const ANONYMOUS: bool = false;
10196            #[allow(unused_variables)]
10197            #[inline]
10198            fn new(
10199                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10200                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10201            ) -> Self {
10202                Self {
10203                    delegator: topics.1,
10204                    validator: topics.2,
10205                    amount: data.0,
10206                }
10207            }
10208            #[inline]
10209            fn check_signature(
10210                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10211            ) -> alloy_sol_types::Result<()> {
10212                if topics.0 != Self::SIGNATURE_HASH {
10213                    return Err(
10214                        alloy_sol_types::Error::invalid_event_signature_hash(
10215                            Self::SIGNATURE,
10216                            topics.0,
10217                            Self::SIGNATURE_HASH,
10218                        ),
10219                    );
10220                }
10221                Ok(())
10222            }
10223            #[inline]
10224            fn tokenize_body(&self) -> Self::DataToken<'_> {
10225                (
10226                    <alloy::sol_types::sol_data::Uint<
10227                        256,
10228                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10229                )
10230            }
10231            #[inline]
10232            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10233                (
10234                    Self::SIGNATURE_HASH.into(),
10235                    self.delegator.clone(),
10236                    self.validator.clone(),
10237                )
10238            }
10239            #[inline]
10240            fn encode_topics_raw(
10241                &self,
10242                out: &mut [alloy_sol_types::abi::token::WordToken],
10243            ) -> alloy_sol_types::Result<()> {
10244                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10245                    return Err(alloy_sol_types::Error::Overrun);
10246                }
10247                out[0usize] = alloy_sol_types::abi::token::WordToken(
10248                    Self::SIGNATURE_HASH,
10249                );
10250                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10251                    &self.delegator,
10252                );
10253                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10254                    &self.validator,
10255                );
10256                Ok(())
10257            }
10258        }
10259        #[automatically_derived]
10260        impl alloy_sol_types::private::IntoLogData for ValidatorExitClaimed {
10261            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10262                From::from(self)
10263            }
10264            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10265                From::from(&self)
10266            }
10267        }
10268        #[automatically_derived]
10269        impl From<&ValidatorExitClaimed> for alloy_sol_types::private::LogData {
10270            #[inline]
10271            fn from(this: &ValidatorExitClaimed) -> alloy_sol_types::private::LogData {
10272                alloy_sol_types::SolEvent::encode_log_data(this)
10273            }
10274        }
10275    };
10276    #[derive(serde::Serialize, serde::Deserialize)]
10277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10278    /**Event with signature `ValidatorExitV2(address,uint256)` and selector `0x4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab`.
10279```solidity
10280event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
10281```*/
10282    #[allow(
10283        non_camel_case_types,
10284        non_snake_case,
10285        clippy::pub_underscore_fields,
10286        clippy::style
10287    )]
10288    #[derive(Clone)]
10289    pub struct ValidatorExitV2 {
10290        #[allow(missing_docs)]
10291        pub validator: alloy::sol_types::private::Address,
10292        #[allow(missing_docs)]
10293        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
10294    }
10295    #[allow(
10296        non_camel_case_types,
10297        non_snake_case,
10298        clippy::pub_underscore_fields,
10299        clippy::style
10300    )]
10301    const _: () = {
10302        use alloy::sol_types as alloy_sol_types;
10303        #[automatically_derived]
10304        impl alloy_sol_types::SolEvent for ValidatorExitV2 {
10305            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10306            type DataToken<'a> = <Self::DataTuple<
10307                'a,
10308            > as alloy_sol_types::SolType>::Token<'a>;
10309            type TopicList = (
10310                alloy_sol_types::sol_data::FixedBytes<32>,
10311                alloy::sol_types::sol_data::Address,
10312            );
10313            const SIGNATURE: &'static str = "ValidatorExitV2(address,uint256)";
10314            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10315                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
10316                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
10317                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
10318            ]);
10319            const ANONYMOUS: bool = false;
10320            #[allow(unused_variables)]
10321            #[inline]
10322            fn new(
10323                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10324                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10325            ) -> Self {
10326                Self {
10327                    validator: topics.1,
10328                    unlocksAt: data.0,
10329                }
10330            }
10331            #[inline]
10332            fn check_signature(
10333                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10334            ) -> alloy_sol_types::Result<()> {
10335                if topics.0 != Self::SIGNATURE_HASH {
10336                    return Err(
10337                        alloy_sol_types::Error::invalid_event_signature_hash(
10338                            Self::SIGNATURE,
10339                            topics.0,
10340                            Self::SIGNATURE_HASH,
10341                        ),
10342                    );
10343                }
10344                Ok(())
10345            }
10346            #[inline]
10347            fn tokenize_body(&self) -> Self::DataToken<'_> {
10348                (
10349                    <alloy::sol_types::sol_data::Uint<
10350                        256,
10351                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
10352                )
10353            }
10354            #[inline]
10355            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10356                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10357            }
10358            #[inline]
10359            fn encode_topics_raw(
10360                &self,
10361                out: &mut [alloy_sol_types::abi::token::WordToken],
10362            ) -> alloy_sol_types::Result<()> {
10363                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10364                    return Err(alloy_sol_types::Error::Overrun);
10365                }
10366                out[0usize] = alloy_sol_types::abi::token::WordToken(
10367                    Self::SIGNATURE_HASH,
10368                );
10369                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10370                    &self.validator,
10371                );
10372                Ok(())
10373            }
10374        }
10375        #[automatically_derived]
10376        impl alloy_sol_types::private::IntoLogData for ValidatorExitV2 {
10377            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10378                From::from(self)
10379            }
10380            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10381                From::from(&self)
10382            }
10383        }
10384        #[automatically_derived]
10385        impl From<&ValidatorExitV2> for alloy_sol_types::private::LogData {
10386            #[inline]
10387            fn from(this: &ValidatorExitV2) -> alloy_sol_types::private::LogData {
10388                alloy_sol_types::SolEvent::encode_log_data(this)
10389            }
10390        }
10391    };
10392    #[derive(serde::Serialize, serde::Deserialize)]
10393    #[derive()]
10394    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
10395```solidity
10396event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
10397```*/
10398    #[allow(
10399        non_camel_case_types,
10400        non_snake_case,
10401        clippy::pub_underscore_fields,
10402        clippy::style
10403    )]
10404    #[derive(Clone)]
10405    pub struct ValidatorRegistered {
10406        #[allow(missing_docs)]
10407        pub account: alloy::sol_types::private::Address,
10408        #[allow(missing_docs)]
10409        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10410        #[allow(missing_docs)]
10411        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10412        #[allow(missing_docs)]
10413        pub commission: u16,
10414    }
10415    #[allow(
10416        non_camel_case_types,
10417        non_snake_case,
10418        clippy::pub_underscore_fields,
10419        clippy::style
10420    )]
10421    const _: () = {
10422        use alloy::sol_types as alloy_sol_types;
10423        #[automatically_derived]
10424        impl alloy_sol_types::SolEvent for ValidatorRegistered {
10425            type DataTuple<'a> = (
10426                BN254::G2Point,
10427                EdOnBN254::EdOnBN254Point,
10428                alloy::sol_types::sol_data::Uint<16>,
10429            );
10430            type DataToken<'a> = <Self::DataTuple<
10431                'a,
10432            > as alloy_sol_types::SolType>::Token<'a>;
10433            type TopicList = (
10434                alloy_sol_types::sol_data::FixedBytes<32>,
10435                alloy::sol_types::sol_data::Address,
10436            );
10437            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
10438            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10439                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
10440                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
10441                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
10442            ]);
10443            const ANONYMOUS: bool = false;
10444            #[allow(unused_variables)]
10445            #[inline]
10446            fn new(
10447                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10448                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10449            ) -> Self {
10450                Self {
10451                    account: topics.1,
10452                    blsVk: data.0,
10453                    schnorrVk: data.1,
10454                    commission: data.2,
10455                }
10456            }
10457            #[inline]
10458            fn check_signature(
10459                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10460            ) -> alloy_sol_types::Result<()> {
10461                if topics.0 != Self::SIGNATURE_HASH {
10462                    return Err(
10463                        alloy_sol_types::Error::invalid_event_signature_hash(
10464                            Self::SIGNATURE,
10465                            topics.0,
10466                            Self::SIGNATURE_HASH,
10467                        ),
10468                    );
10469                }
10470                Ok(())
10471            }
10472            #[inline]
10473            fn tokenize_body(&self) -> Self::DataToken<'_> {
10474                (
10475                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
10476                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10477                        &self.schnorrVk,
10478                    ),
10479                    <alloy::sol_types::sol_data::Uint<
10480                        16,
10481                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10482                )
10483            }
10484            #[inline]
10485            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10486                (Self::SIGNATURE_HASH.into(), self.account.clone())
10487            }
10488            #[inline]
10489            fn encode_topics_raw(
10490                &self,
10491                out: &mut [alloy_sol_types::abi::token::WordToken],
10492            ) -> alloy_sol_types::Result<()> {
10493                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10494                    return Err(alloy_sol_types::Error::Overrun);
10495                }
10496                out[0usize] = alloy_sol_types::abi::token::WordToken(
10497                    Self::SIGNATURE_HASH,
10498                );
10499                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10500                    &self.account,
10501                );
10502                Ok(())
10503            }
10504        }
10505        #[automatically_derived]
10506        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
10507            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10508                From::from(self)
10509            }
10510            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10511                From::from(&self)
10512            }
10513        }
10514        #[automatically_derived]
10515        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
10516            #[inline]
10517            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
10518                alloy_sol_types::SolEvent::encode_log_data(this)
10519            }
10520        }
10521    };
10522    #[derive(serde::Serialize, serde::Deserialize)]
10523    #[derive()]
10524    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)` and selector `0x26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b268489`.
10525```solidity
10526event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
10527```*/
10528    #[allow(
10529        non_camel_case_types,
10530        non_snake_case,
10531        clippy::pub_underscore_fields,
10532        clippy::style
10533    )]
10534    #[derive(Clone)]
10535    pub struct ValidatorRegisteredV2 {
10536        #[allow(missing_docs)]
10537        pub account: alloy::sol_types::private::Address,
10538        #[allow(missing_docs)]
10539        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10540        #[allow(missing_docs)]
10541        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10542        #[allow(missing_docs)]
10543        pub commission: u16,
10544        #[allow(missing_docs)]
10545        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10546        #[allow(missing_docs)]
10547        pub schnorrSig: alloy::sol_types::private::Bytes,
10548        #[allow(missing_docs)]
10549        pub metadataUri: alloy::sol_types::private::String,
10550    }
10551    #[allow(
10552        non_camel_case_types,
10553        non_snake_case,
10554        clippy::pub_underscore_fields,
10555        clippy::style
10556    )]
10557    const _: () = {
10558        use alloy::sol_types as alloy_sol_types;
10559        #[automatically_derived]
10560        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
10561            type DataTuple<'a> = (
10562                BN254::G2Point,
10563                EdOnBN254::EdOnBN254Point,
10564                alloy::sol_types::sol_data::Uint<16>,
10565                BN254::G1Point,
10566                alloy::sol_types::sol_data::Bytes,
10567                alloy::sol_types::sol_data::String,
10568            );
10569            type DataToken<'a> = <Self::DataTuple<
10570                'a,
10571            > as alloy_sol_types::SolType>::Token<'a>;
10572            type TopicList = (
10573                alloy_sol_types::sol_data::FixedBytes<32>,
10574                alloy::sol_types::sol_data::Address,
10575            );
10576            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)";
10577            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10578                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
10579                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
10580                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
10581            ]);
10582            const ANONYMOUS: bool = false;
10583            #[allow(unused_variables)]
10584            #[inline]
10585            fn new(
10586                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10587                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10588            ) -> Self {
10589                Self {
10590                    account: topics.1,
10591                    blsVK: data.0,
10592                    schnorrVK: data.1,
10593                    commission: data.2,
10594                    blsSig: data.3,
10595                    schnorrSig: data.4,
10596                    metadataUri: data.5,
10597                }
10598            }
10599            #[inline]
10600            fn check_signature(
10601                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10602            ) -> alloy_sol_types::Result<()> {
10603                if topics.0 != Self::SIGNATURE_HASH {
10604                    return Err(
10605                        alloy_sol_types::Error::invalid_event_signature_hash(
10606                            Self::SIGNATURE,
10607                            topics.0,
10608                            Self::SIGNATURE_HASH,
10609                        ),
10610                    );
10611                }
10612                Ok(())
10613            }
10614            #[inline]
10615            fn tokenize_body(&self) -> Self::DataToken<'_> {
10616                (
10617                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
10618                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10619                        &self.schnorrVK,
10620                    ),
10621                    <alloy::sol_types::sol_data::Uint<
10622                        16,
10623                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10624                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
10625                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10626                        &self.schnorrSig,
10627                    ),
10628                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
10629                        &self.metadataUri,
10630                    ),
10631                )
10632            }
10633            #[inline]
10634            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10635                (Self::SIGNATURE_HASH.into(), self.account.clone())
10636            }
10637            #[inline]
10638            fn encode_topics_raw(
10639                &self,
10640                out: &mut [alloy_sol_types::abi::token::WordToken],
10641            ) -> alloy_sol_types::Result<()> {
10642                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10643                    return Err(alloy_sol_types::Error::Overrun);
10644                }
10645                out[0usize] = alloy_sol_types::abi::token::WordToken(
10646                    Self::SIGNATURE_HASH,
10647                );
10648                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10649                    &self.account,
10650                );
10651                Ok(())
10652            }
10653        }
10654        #[automatically_derived]
10655        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
10656            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10657                From::from(self)
10658            }
10659            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10660                From::from(&self)
10661            }
10662        }
10663        #[automatically_derived]
10664        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
10665            #[inline]
10666            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
10667                alloy_sol_types::SolEvent::encode_log_data(this)
10668            }
10669        }
10670    };
10671    #[derive(serde::Serialize, serde::Deserialize)]
10672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10673    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
10674```solidity
10675event Withdrawal(address indexed account, uint256 amount);
10676```*/
10677    #[allow(
10678        non_camel_case_types,
10679        non_snake_case,
10680        clippy::pub_underscore_fields,
10681        clippy::style
10682    )]
10683    #[derive(Clone)]
10684    pub struct Withdrawal {
10685        #[allow(missing_docs)]
10686        pub account: alloy::sol_types::private::Address,
10687        #[allow(missing_docs)]
10688        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10689    }
10690    #[allow(
10691        non_camel_case_types,
10692        non_snake_case,
10693        clippy::pub_underscore_fields,
10694        clippy::style
10695    )]
10696    const _: () = {
10697        use alloy::sol_types as alloy_sol_types;
10698        #[automatically_derived]
10699        impl alloy_sol_types::SolEvent for Withdrawal {
10700            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10701            type DataToken<'a> = <Self::DataTuple<
10702                'a,
10703            > as alloy_sol_types::SolType>::Token<'a>;
10704            type TopicList = (
10705                alloy_sol_types::sol_data::FixedBytes<32>,
10706                alloy::sol_types::sol_data::Address,
10707            );
10708            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
10709            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10710                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
10711                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
10712                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
10713            ]);
10714            const ANONYMOUS: bool = false;
10715            #[allow(unused_variables)]
10716            #[inline]
10717            fn new(
10718                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10719                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10720            ) -> Self {
10721                Self {
10722                    account: topics.1,
10723                    amount: data.0,
10724                }
10725            }
10726            #[inline]
10727            fn check_signature(
10728                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10729            ) -> alloy_sol_types::Result<()> {
10730                if topics.0 != Self::SIGNATURE_HASH {
10731                    return Err(
10732                        alloy_sol_types::Error::invalid_event_signature_hash(
10733                            Self::SIGNATURE,
10734                            topics.0,
10735                            Self::SIGNATURE_HASH,
10736                        ),
10737                    );
10738                }
10739                Ok(())
10740            }
10741            #[inline]
10742            fn tokenize_body(&self) -> Self::DataToken<'_> {
10743                (
10744                    <alloy::sol_types::sol_data::Uint<
10745                        256,
10746                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10747                )
10748            }
10749            #[inline]
10750            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10751                (Self::SIGNATURE_HASH.into(), self.account.clone())
10752            }
10753            #[inline]
10754            fn encode_topics_raw(
10755                &self,
10756                out: &mut [alloy_sol_types::abi::token::WordToken],
10757            ) -> alloy_sol_types::Result<()> {
10758                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10759                    return Err(alloy_sol_types::Error::Overrun);
10760                }
10761                out[0usize] = alloy_sol_types::abi::token::WordToken(
10762                    Self::SIGNATURE_HASH,
10763                );
10764                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10765                    &self.account,
10766                );
10767                Ok(())
10768            }
10769        }
10770        #[automatically_derived]
10771        impl alloy_sol_types::private::IntoLogData for Withdrawal {
10772            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10773                From::from(self)
10774            }
10775            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10776                From::from(&self)
10777            }
10778        }
10779        #[automatically_derived]
10780        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
10781            #[inline]
10782            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
10783                alloy_sol_types::SolEvent::encode_log_data(this)
10784            }
10785        }
10786    };
10787    #[derive(serde::Serialize, serde::Deserialize)]
10788    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10789    /**Event with signature `WithdrawalClaimed(address,address,uint64,uint256)` and selector `0xb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522`.
10790```solidity
10791event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
10792```*/
10793    #[allow(
10794        non_camel_case_types,
10795        non_snake_case,
10796        clippy::pub_underscore_fields,
10797        clippy::style
10798    )]
10799    #[derive(Clone)]
10800    pub struct WithdrawalClaimed {
10801        #[allow(missing_docs)]
10802        pub delegator: alloy::sol_types::private::Address,
10803        #[allow(missing_docs)]
10804        pub validator: alloy::sol_types::private::Address,
10805        #[allow(missing_docs)]
10806        pub undelegationId: u64,
10807        #[allow(missing_docs)]
10808        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10809    }
10810    #[allow(
10811        non_camel_case_types,
10812        non_snake_case,
10813        clippy::pub_underscore_fields,
10814        clippy::style
10815    )]
10816    const _: () = {
10817        use alloy::sol_types as alloy_sol_types;
10818        #[automatically_derived]
10819        impl alloy_sol_types::SolEvent for WithdrawalClaimed {
10820            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10821            type DataToken<'a> = <Self::DataTuple<
10822                'a,
10823            > as alloy_sol_types::SolType>::Token<'a>;
10824            type TopicList = (
10825                alloy_sol_types::sol_data::FixedBytes<32>,
10826                alloy::sol_types::sol_data::Address,
10827                alloy::sol_types::sol_data::Address,
10828                alloy::sol_types::sol_data::Uint<64>,
10829            );
10830            const SIGNATURE: &'static str = "WithdrawalClaimed(address,address,uint64,uint256)";
10831            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10832                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
10833                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
10834                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
10835            ]);
10836            const ANONYMOUS: bool = false;
10837            #[allow(unused_variables)]
10838            #[inline]
10839            fn new(
10840                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10841                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10842            ) -> Self {
10843                Self {
10844                    delegator: topics.1,
10845                    validator: topics.2,
10846                    undelegationId: topics.3,
10847                    amount: data.0,
10848                }
10849            }
10850            #[inline]
10851            fn check_signature(
10852                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10853            ) -> alloy_sol_types::Result<()> {
10854                if topics.0 != Self::SIGNATURE_HASH {
10855                    return Err(
10856                        alloy_sol_types::Error::invalid_event_signature_hash(
10857                            Self::SIGNATURE,
10858                            topics.0,
10859                            Self::SIGNATURE_HASH,
10860                        ),
10861                    );
10862                }
10863                Ok(())
10864            }
10865            #[inline]
10866            fn tokenize_body(&self) -> Self::DataToken<'_> {
10867                (
10868                    <alloy::sol_types::sol_data::Uint<
10869                        256,
10870                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10871                )
10872            }
10873            #[inline]
10874            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10875                (
10876                    Self::SIGNATURE_HASH.into(),
10877                    self.delegator.clone(),
10878                    self.validator.clone(),
10879                    self.undelegationId.clone(),
10880                )
10881            }
10882            #[inline]
10883            fn encode_topics_raw(
10884                &self,
10885                out: &mut [alloy_sol_types::abi::token::WordToken],
10886            ) -> alloy_sol_types::Result<()> {
10887                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10888                    return Err(alloy_sol_types::Error::Overrun);
10889                }
10890                out[0usize] = alloy_sol_types::abi::token::WordToken(
10891                    Self::SIGNATURE_HASH,
10892                );
10893                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10894                    &self.delegator,
10895                );
10896                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10897                    &self.validator,
10898                );
10899                out[3usize] = <alloy::sol_types::sol_data::Uint<
10900                    64,
10901                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
10902                Ok(())
10903            }
10904        }
10905        #[automatically_derived]
10906        impl alloy_sol_types::private::IntoLogData for WithdrawalClaimed {
10907            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10908                From::from(self)
10909            }
10910            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10911                From::from(&self)
10912            }
10913        }
10914        #[automatically_derived]
10915        impl From<&WithdrawalClaimed> for alloy_sol_types::private::LogData {
10916            #[inline]
10917            fn from(this: &WithdrawalClaimed) -> alloy_sol_types::private::LogData {
10918                alloy_sol_types::SolEvent::encode_log_data(this)
10919            }
10920        }
10921    };
10922    /**Constructor`.
10923```solidity
10924constructor();
10925```*/
10926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10927    #[derive(Clone)]
10928    pub struct constructorCall {}
10929    const _: () = {
10930        use alloy::sol_types as alloy_sol_types;
10931        {
10932            #[doc(hidden)]
10933            #[allow(dead_code)]
10934            type UnderlyingSolTuple<'a> = ();
10935            #[doc(hidden)]
10936            type UnderlyingRustTuple<'a> = ();
10937            #[cfg(test)]
10938            #[allow(dead_code, unreachable_patterns)]
10939            fn _type_assertion(
10940                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10941            ) {
10942                match _t {
10943                    alloy_sol_types::private::AssertTypeEq::<
10944                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10945                    >(_) => {}
10946                }
10947            }
10948            #[automatically_derived]
10949            #[doc(hidden)]
10950            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
10951                fn from(value: constructorCall) -> Self {
10952                    ()
10953                }
10954            }
10955            #[automatically_derived]
10956            #[doc(hidden)]
10957            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
10958                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10959                    Self {}
10960                }
10961            }
10962        }
10963        #[automatically_derived]
10964        impl alloy_sol_types::SolConstructor for constructorCall {
10965            type Parameters<'a> = ();
10966            type Token<'a> = <Self::Parameters<
10967                'a,
10968            > as alloy_sol_types::SolType>::Token<'a>;
10969            #[inline]
10970            fn new<'a>(
10971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10972            ) -> Self {
10973                tuple.into()
10974            }
10975            #[inline]
10976            fn tokenize(&self) -> Self::Token<'_> {
10977                ()
10978            }
10979        }
10980    };
10981    #[derive(serde::Serialize, serde::Deserialize)]
10982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10983    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
10984```solidity
10985function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
10986```*/
10987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10988    #[derive(Clone)]
10989    pub struct DEFAULT_ADMIN_ROLECall;
10990    #[derive(serde::Serialize, serde::Deserialize)]
10991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10992    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
10993    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10994    #[derive(Clone)]
10995    pub struct DEFAULT_ADMIN_ROLEReturn {
10996        #[allow(missing_docs)]
10997        pub _0: alloy::sol_types::private::FixedBytes<32>,
10998    }
10999    #[allow(
11000        non_camel_case_types,
11001        non_snake_case,
11002        clippy::pub_underscore_fields,
11003        clippy::style
11004    )]
11005    const _: () = {
11006        use alloy::sol_types as alloy_sol_types;
11007        {
11008            #[doc(hidden)]
11009            #[allow(dead_code)]
11010            type UnderlyingSolTuple<'a> = ();
11011            #[doc(hidden)]
11012            type UnderlyingRustTuple<'a> = ();
11013            #[cfg(test)]
11014            #[allow(dead_code, unreachable_patterns)]
11015            fn _type_assertion(
11016                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11017            ) {
11018                match _t {
11019                    alloy_sol_types::private::AssertTypeEq::<
11020                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11021                    >(_) => {}
11022                }
11023            }
11024            #[automatically_derived]
11025            #[doc(hidden)]
11026            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
11027            for UnderlyingRustTuple<'_> {
11028                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
11029                    ()
11030                }
11031            }
11032            #[automatically_derived]
11033            #[doc(hidden)]
11034            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11035            for DEFAULT_ADMIN_ROLECall {
11036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11037                    Self
11038                }
11039            }
11040        }
11041        {
11042            #[doc(hidden)]
11043            #[allow(dead_code)]
11044            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11045            #[doc(hidden)]
11046            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11047            #[cfg(test)]
11048            #[allow(dead_code, unreachable_patterns)]
11049            fn _type_assertion(
11050                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11051            ) {
11052                match _t {
11053                    alloy_sol_types::private::AssertTypeEq::<
11054                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11055                    >(_) => {}
11056                }
11057            }
11058            #[automatically_derived]
11059            #[doc(hidden)]
11060            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
11061            for UnderlyingRustTuple<'_> {
11062                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
11063                    (value._0,)
11064                }
11065            }
11066            #[automatically_derived]
11067            #[doc(hidden)]
11068            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11069            for DEFAULT_ADMIN_ROLEReturn {
11070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11071                    Self { _0: tuple.0 }
11072                }
11073            }
11074        }
11075        #[automatically_derived]
11076        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
11077            type Parameters<'a> = ();
11078            type Token<'a> = <Self::Parameters<
11079                'a,
11080            > as alloy_sol_types::SolType>::Token<'a>;
11081            type Return = alloy::sol_types::private::FixedBytes<32>;
11082            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11083            type ReturnToken<'a> = <Self::ReturnTuple<
11084                'a,
11085            > as alloy_sol_types::SolType>::Token<'a>;
11086            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
11087            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
11088            #[inline]
11089            fn new<'a>(
11090                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11091            ) -> Self {
11092                tuple.into()
11093            }
11094            #[inline]
11095            fn tokenize(&self) -> Self::Token<'_> {
11096                ()
11097            }
11098            #[inline]
11099            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11100                (
11101                    <alloy::sol_types::sol_data::FixedBytes<
11102                        32,
11103                    > as alloy_sol_types::SolType>::tokenize(ret),
11104                )
11105            }
11106            #[inline]
11107            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11108                <Self::ReturnTuple<
11109                    '_,
11110                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11111                    .map(|r| {
11112                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
11113                        r._0
11114                    })
11115            }
11116            #[inline]
11117            fn abi_decode_returns_validate(
11118                data: &[u8],
11119            ) -> alloy_sol_types::Result<Self::Return> {
11120                <Self::ReturnTuple<
11121                    '_,
11122                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11123                    .map(|r| {
11124                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
11125                        r._0
11126                    })
11127            }
11128        }
11129    };
11130    #[derive(serde::Serialize, serde::Deserialize)]
11131    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11132    /**Function with signature `MAX_COMMISSION_BPS()` and selector `0xe62977f8`.
11133```solidity
11134function MAX_COMMISSION_BPS() external view returns (uint16);
11135```*/
11136    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11137    #[derive(Clone)]
11138    pub struct MAX_COMMISSION_BPSCall;
11139    #[derive(serde::Serialize, serde::Deserialize)]
11140    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11141    ///Container type for the return parameters of the [`MAX_COMMISSION_BPS()`](MAX_COMMISSION_BPSCall) function.
11142    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11143    #[derive(Clone)]
11144    pub struct MAX_COMMISSION_BPSReturn {
11145        #[allow(missing_docs)]
11146        pub _0: u16,
11147    }
11148    #[allow(
11149        non_camel_case_types,
11150        non_snake_case,
11151        clippy::pub_underscore_fields,
11152        clippy::style
11153    )]
11154    const _: () = {
11155        use alloy::sol_types as alloy_sol_types;
11156        {
11157            #[doc(hidden)]
11158            #[allow(dead_code)]
11159            type UnderlyingSolTuple<'a> = ();
11160            #[doc(hidden)]
11161            type UnderlyingRustTuple<'a> = ();
11162            #[cfg(test)]
11163            #[allow(dead_code, unreachable_patterns)]
11164            fn _type_assertion(
11165                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11166            ) {
11167                match _t {
11168                    alloy_sol_types::private::AssertTypeEq::<
11169                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11170                    >(_) => {}
11171                }
11172            }
11173            #[automatically_derived]
11174            #[doc(hidden)]
11175            impl ::core::convert::From<MAX_COMMISSION_BPSCall>
11176            for UnderlyingRustTuple<'_> {
11177                fn from(value: MAX_COMMISSION_BPSCall) -> Self {
11178                    ()
11179                }
11180            }
11181            #[automatically_derived]
11182            #[doc(hidden)]
11183            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11184            for MAX_COMMISSION_BPSCall {
11185                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11186                    Self
11187                }
11188            }
11189        }
11190        {
11191            #[doc(hidden)]
11192            #[allow(dead_code)]
11193            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
11194            #[doc(hidden)]
11195            type UnderlyingRustTuple<'a> = (u16,);
11196            #[cfg(test)]
11197            #[allow(dead_code, unreachable_patterns)]
11198            fn _type_assertion(
11199                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11200            ) {
11201                match _t {
11202                    alloy_sol_types::private::AssertTypeEq::<
11203                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11204                    >(_) => {}
11205                }
11206            }
11207            #[automatically_derived]
11208            #[doc(hidden)]
11209            impl ::core::convert::From<MAX_COMMISSION_BPSReturn>
11210            for UnderlyingRustTuple<'_> {
11211                fn from(value: MAX_COMMISSION_BPSReturn) -> Self {
11212                    (value._0,)
11213                }
11214            }
11215            #[automatically_derived]
11216            #[doc(hidden)]
11217            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11218            for MAX_COMMISSION_BPSReturn {
11219                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11220                    Self { _0: tuple.0 }
11221                }
11222            }
11223        }
11224        #[automatically_derived]
11225        impl alloy_sol_types::SolCall for MAX_COMMISSION_BPSCall {
11226            type Parameters<'a> = ();
11227            type Token<'a> = <Self::Parameters<
11228                'a,
11229            > as alloy_sol_types::SolType>::Token<'a>;
11230            type Return = u16;
11231            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
11232            type ReturnToken<'a> = <Self::ReturnTuple<
11233                'a,
11234            > as alloy_sol_types::SolType>::Token<'a>;
11235            const SIGNATURE: &'static str = "MAX_COMMISSION_BPS()";
11236            const SELECTOR: [u8; 4] = [230u8, 41u8, 119u8, 248u8];
11237            #[inline]
11238            fn new<'a>(
11239                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11240            ) -> Self {
11241                tuple.into()
11242            }
11243            #[inline]
11244            fn tokenize(&self) -> Self::Token<'_> {
11245                ()
11246            }
11247            #[inline]
11248            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11249                (
11250                    <alloy::sol_types::sol_data::Uint<
11251                        16,
11252                    > as alloy_sol_types::SolType>::tokenize(ret),
11253                )
11254            }
11255            #[inline]
11256            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11257                <Self::ReturnTuple<
11258                    '_,
11259                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11260                    .map(|r| {
11261                        let r: MAX_COMMISSION_BPSReturn = r.into();
11262                        r._0
11263                    })
11264            }
11265            #[inline]
11266            fn abi_decode_returns_validate(
11267                data: &[u8],
11268            ) -> alloy_sol_types::Result<Self::Return> {
11269                <Self::ReturnTuple<
11270                    '_,
11271                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11272                    .map(|r| {
11273                        let r: MAX_COMMISSION_BPSReturn = r.into();
11274                        r._0
11275                    })
11276            }
11277        }
11278    };
11279    #[derive(serde::Serialize, serde::Deserialize)]
11280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11281    /**Function with signature `MAX_EXIT_ESCROW_PERIOD()` and selector `0xe4d1fb94`.
11282```solidity
11283function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
11284```*/
11285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11286    #[derive(Clone)]
11287    pub struct MAX_EXIT_ESCROW_PERIODCall;
11288    #[derive(serde::Serialize, serde::Deserialize)]
11289    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11290    ///Container type for the return parameters of the [`MAX_EXIT_ESCROW_PERIOD()`](MAX_EXIT_ESCROW_PERIODCall) function.
11291    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11292    #[derive(Clone)]
11293    pub struct MAX_EXIT_ESCROW_PERIODReturn {
11294        #[allow(missing_docs)]
11295        pub _0: u64,
11296    }
11297    #[allow(
11298        non_camel_case_types,
11299        non_snake_case,
11300        clippy::pub_underscore_fields,
11301        clippy::style
11302    )]
11303    const _: () = {
11304        use alloy::sol_types as alloy_sol_types;
11305        {
11306            #[doc(hidden)]
11307            #[allow(dead_code)]
11308            type UnderlyingSolTuple<'a> = ();
11309            #[doc(hidden)]
11310            type UnderlyingRustTuple<'a> = ();
11311            #[cfg(test)]
11312            #[allow(dead_code, unreachable_patterns)]
11313            fn _type_assertion(
11314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11315            ) {
11316                match _t {
11317                    alloy_sol_types::private::AssertTypeEq::<
11318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11319                    >(_) => {}
11320                }
11321            }
11322            #[automatically_derived]
11323            #[doc(hidden)]
11324            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODCall>
11325            for UnderlyingRustTuple<'_> {
11326                fn from(value: MAX_EXIT_ESCROW_PERIODCall) -> Self {
11327                    ()
11328                }
11329            }
11330            #[automatically_derived]
11331            #[doc(hidden)]
11332            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11333            for MAX_EXIT_ESCROW_PERIODCall {
11334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11335                    Self
11336                }
11337            }
11338        }
11339        {
11340            #[doc(hidden)]
11341            #[allow(dead_code)]
11342            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11343            #[doc(hidden)]
11344            type UnderlyingRustTuple<'a> = (u64,);
11345            #[cfg(test)]
11346            #[allow(dead_code, unreachable_patterns)]
11347            fn _type_assertion(
11348                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11349            ) {
11350                match _t {
11351                    alloy_sol_types::private::AssertTypeEq::<
11352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11353                    >(_) => {}
11354                }
11355            }
11356            #[automatically_derived]
11357            #[doc(hidden)]
11358            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODReturn>
11359            for UnderlyingRustTuple<'_> {
11360                fn from(value: MAX_EXIT_ESCROW_PERIODReturn) -> Self {
11361                    (value._0,)
11362                }
11363            }
11364            #[automatically_derived]
11365            #[doc(hidden)]
11366            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11367            for MAX_EXIT_ESCROW_PERIODReturn {
11368                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11369                    Self { _0: tuple.0 }
11370                }
11371            }
11372        }
11373        #[automatically_derived]
11374        impl alloy_sol_types::SolCall for MAX_EXIT_ESCROW_PERIODCall {
11375            type Parameters<'a> = ();
11376            type Token<'a> = <Self::Parameters<
11377                'a,
11378            > as alloy_sol_types::SolType>::Token<'a>;
11379            type Return = u64;
11380            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11381            type ReturnToken<'a> = <Self::ReturnTuple<
11382                'a,
11383            > as alloy_sol_types::SolType>::Token<'a>;
11384            const SIGNATURE: &'static str = "MAX_EXIT_ESCROW_PERIOD()";
11385            const SELECTOR: [u8; 4] = [228u8, 209u8, 251u8, 148u8];
11386            #[inline]
11387            fn new<'a>(
11388                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11389            ) -> Self {
11390                tuple.into()
11391            }
11392            #[inline]
11393            fn tokenize(&self) -> Self::Token<'_> {
11394                ()
11395            }
11396            #[inline]
11397            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11398                (
11399                    <alloy::sol_types::sol_data::Uint<
11400                        64,
11401                    > as alloy_sol_types::SolType>::tokenize(ret),
11402                )
11403            }
11404            #[inline]
11405            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11406                <Self::ReturnTuple<
11407                    '_,
11408                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11409                    .map(|r| {
11410                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
11411                        r._0
11412                    })
11413            }
11414            #[inline]
11415            fn abi_decode_returns_validate(
11416                data: &[u8],
11417            ) -> alloy_sol_types::Result<Self::Return> {
11418                <Self::ReturnTuple<
11419                    '_,
11420                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11421                    .map(|r| {
11422                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
11423                        r._0
11424                    })
11425            }
11426        }
11427    };
11428    #[derive(serde::Serialize, serde::Deserialize)]
11429    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11430    /**Function with signature `MAX_METADATA_URI_LENGTH()` and selector `0x2fe28759`.
11431```solidity
11432function MAX_METADATA_URI_LENGTH() external view returns (uint256);
11433```*/
11434    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11435    #[derive(Clone)]
11436    pub struct MAX_METADATA_URI_LENGTHCall;
11437    #[derive(serde::Serialize, serde::Deserialize)]
11438    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11439    ///Container type for the return parameters of the [`MAX_METADATA_URI_LENGTH()`](MAX_METADATA_URI_LENGTHCall) function.
11440    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11441    #[derive(Clone)]
11442    pub struct MAX_METADATA_URI_LENGTHReturn {
11443        #[allow(missing_docs)]
11444        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11445    }
11446    #[allow(
11447        non_camel_case_types,
11448        non_snake_case,
11449        clippy::pub_underscore_fields,
11450        clippy::style
11451    )]
11452    const _: () = {
11453        use alloy::sol_types as alloy_sol_types;
11454        {
11455            #[doc(hidden)]
11456            #[allow(dead_code)]
11457            type UnderlyingSolTuple<'a> = ();
11458            #[doc(hidden)]
11459            type UnderlyingRustTuple<'a> = ();
11460            #[cfg(test)]
11461            #[allow(dead_code, unreachable_patterns)]
11462            fn _type_assertion(
11463                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11464            ) {
11465                match _t {
11466                    alloy_sol_types::private::AssertTypeEq::<
11467                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11468                    >(_) => {}
11469                }
11470            }
11471            #[automatically_derived]
11472            #[doc(hidden)]
11473            impl ::core::convert::From<MAX_METADATA_URI_LENGTHCall>
11474            for UnderlyingRustTuple<'_> {
11475                fn from(value: MAX_METADATA_URI_LENGTHCall) -> Self {
11476                    ()
11477                }
11478            }
11479            #[automatically_derived]
11480            #[doc(hidden)]
11481            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11482            for MAX_METADATA_URI_LENGTHCall {
11483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11484                    Self
11485                }
11486            }
11487        }
11488        {
11489            #[doc(hidden)]
11490            #[allow(dead_code)]
11491            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11492            #[doc(hidden)]
11493            type UnderlyingRustTuple<'a> = (
11494                alloy::sol_types::private::primitives::aliases::U256,
11495            );
11496            #[cfg(test)]
11497            #[allow(dead_code, unreachable_patterns)]
11498            fn _type_assertion(
11499                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11500            ) {
11501                match _t {
11502                    alloy_sol_types::private::AssertTypeEq::<
11503                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11504                    >(_) => {}
11505                }
11506            }
11507            #[automatically_derived]
11508            #[doc(hidden)]
11509            impl ::core::convert::From<MAX_METADATA_URI_LENGTHReturn>
11510            for UnderlyingRustTuple<'_> {
11511                fn from(value: MAX_METADATA_URI_LENGTHReturn) -> Self {
11512                    (value._0,)
11513                }
11514            }
11515            #[automatically_derived]
11516            #[doc(hidden)]
11517            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11518            for MAX_METADATA_URI_LENGTHReturn {
11519                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11520                    Self { _0: tuple.0 }
11521                }
11522            }
11523        }
11524        #[automatically_derived]
11525        impl alloy_sol_types::SolCall for MAX_METADATA_URI_LENGTHCall {
11526            type Parameters<'a> = ();
11527            type Token<'a> = <Self::Parameters<
11528                'a,
11529            > as alloy_sol_types::SolType>::Token<'a>;
11530            type Return = alloy::sol_types::private::primitives::aliases::U256;
11531            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11532            type ReturnToken<'a> = <Self::ReturnTuple<
11533                'a,
11534            > as alloy_sol_types::SolType>::Token<'a>;
11535            const SIGNATURE: &'static str = "MAX_METADATA_URI_LENGTH()";
11536            const SELECTOR: [u8; 4] = [47u8, 226u8, 135u8, 89u8];
11537            #[inline]
11538            fn new<'a>(
11539                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11540            ) -> Self {
11541                tuple.into()
11542            }
11543            #[inline]
11544            fn tokenize(&self) -> Self::Token<'_> {
11545                ()
11546            }
11547            #[inline]
11548            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11549                (
11550                    <alloy::sol_types::sol_data::Uint<
11551                        256,
11552                    > as alloy_sol_types::SolType>::tokenize(ret),
11553                )
11554            }
11555            #[inline]
11556            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11557                <Self::ReturnTuple<
11558                    '_,
11559                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11560                    .map(|r| {
11561                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
11562                        r._0
11563                    })
11564            }
11565            #[inline]
11566            fn abi_decode_returns_validate(
11567                data: &[u8],
11568            ) -> alloy_sol_types::Result<Self::Return> {
11569                <Self::ReturnTuple<
11570                    '_,
11571                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11572                    .map(|r| {
11573                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
11574                        r._0
11575                    })
11576            }
11577        }
11578    };
11579    #[derive(serde::Serialize, serde::Deserialize)]
11580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11581    /**Function with signature `MIN_EXIT_ESCROW_PERIOD()` and selector `0x6ad28e9f`.
11582```solidity
11583function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
11584```*/
11585    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11586    #[derive(Clone)]
11587    pub struct MIN_EXIT_ESCROW_PERIODCall;
11588    #[derive(serde::Serialize, serde::Deserialize)]
11589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11590    ///Container type for the return parameters of the [`MIN_EXIT_ESCROW_PERIOD()`](MIN_EXIT_ESCROW_PERIODCall) function.
11591    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11592    #[derive(Clone)]
11593    pub struct MIN_EXIT_ESCROW_PERIODReturn {
11594        #[allow(missing_docs)]
11595        pub _0: u64,
11596    }
11597    #[allow(
11598        non_camel_case_types,
11599        non_snake_case,
11600        clippy::pub_underscore_fields,
11601        clippy::style
11602    )]
11603    const _: () = {
11604        use alloy::sol_types as alloy_sol_types;
11605        {
11606            #[doc(hidden)]
11607            #[allow(dead_code)]
11608            type UnderlyingSolTuple<'a> = ();
11609            #[doc(hidden)]
11610            type UnderlyingRustTuple<'a> = ();
11611            #[cfg(test)]
11612            #[allow(dead_code, unreachable_patterns)]
11613            fn _type_assertion(
11614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11615            ) {
11616                match _t {
11617                    alloy_sol_types::private::AssertTypeEq::<
11618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11619                    >(_) => {}
11620                }
11621            }
11622            #[automatically_derived]
11623            #[doc(hidden)]
11624            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODCall>
11625            for UnderlyingRustTuple<'_> {
11626                fn from(value: MIN_EXIT_ESCROW_PERIODCall) -> Self {
11627                    ()
11628                }
11629            }
11630            #[automatically_derived]
11631            #[doc(hidden)]
11632            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11633            for MIN_EXIT_ESCROW_PERIODCall {
11634                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11635                    Self
11636                }
11637            }
11638        }
11639        {
11640            #[doc(hidden)]
11641            #[allow(dead_code)]
11642            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11643            #[doc(hidden)]
11644            type UnderlyingRustTuple<'a> = (u64,);
11645            #[cfg(test)]
11646            #[allow(dead_code, unreachable_patterns)]
11647            fn _type_assertion(
11648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11649            ) {
11650                match _t {
11651                    alloy_sol_types::private::AssertTypeEq::<
11652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11653                    >(_) => {}
11654                }
11655            }
11656            #[automatically_derived]
11657            #[doc(hidden)]
11658            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODReturn>
11659            for UnderlyingRustTuple<'_> {
11660                fn from(value: MIN_EXIT_ESCROW_PERIODReturn) -> Self {
11661                    (value._0,)
11662                }
11663            }
11664            #[automatically_derived]
11665            #[doc(hidden)]
11666            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11667            for MIN_EXIT_ESCROW_PERIODReturn {
11668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11669                    Self { _0: tuple.0 }
11670                }
11671            }
11672        }
11673        #[automatically_derived]
11674        impl alloy_sol_types::SolCall for MIN_EXIT_ESCROW_PERIODCall {
11675            type Parameters<'a> = ();
11676            type Token<'a> = <Self::Parameters<
11677                'a,
11678            > as alloy_sol_types::SolType>::Token<'a>;
11679            type Return = u64;
11680            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11681            type ReturnToken<'a> = <Self::ReturnTuple<
11682                'a,
11683            > as alloy_sol_types::SolType>::Token<'a>;
11684            const SIGNATURE: &'static str = "MIN_EXIT_ESCROW_PERIOD()";
11685            const SELECTOR: [u8; 4] = [106u8, 210u8, 142u8, 159u8];
11686            #[inline]
11687            fn new<'a>(
11688                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11689            ) -> Self {
11690                tuple.into()
11691            }
11692            #[inline]
11693            fn tokenize(&self) -> Self::Token<'_> {
11694                ()
11695            }
11696            #[inline]
11697            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11698                (
11699                    <alloy::sol_types::sol_data::Uint<
11700                        64,
11701                    > as alloy_sol_types::SolType>::tokenize(ret),
11702                )
11703            }
11704            #[inline]
11705            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11706                <Self::ReturnTuple<
11707                    '_,
11708                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11709                    .map(|r| {
11710                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
11711                        r._0
11712                    })
11713            }
11714            #[inline]
11715            fn abi_decode_returns_validate(
11716                data: &[u8],
11717            ) -> alloy_sol_types::Result<Self::Return> {
11718                <Self::ReturnTuple<
11719                    '_,
11720                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11721                    .map(|r| {
11722                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
11723                        r._0
11724                    })
11725            }
11726        }
11727    };
11728    #[derive(serde::Serialize, serde::Deserialize)]
11729    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11730    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
11731```solidity
11732function PAUSER_ROLE() external view returns (bytes32);
11733```*/
11734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11735    #[derive(Clone)]
11736    pub struct PAUSER_ROLECall;
11737    #[derive(serde::Serialize, serde::Deserialize)]
11738    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11739    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
11740    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11741    #[derive(Clone)]
11742    pub struct PAUSER_ROLEReturn {
11743        #[allow(missing_docs)]
11744        pub _0: alloy::sol_types::private::FixedBytes<32>,
11745    }
11746    #[allow(
11747        non_camel_case_types,
11748        non_snake_case,
11749        clippy::pub_underscore_fields,
11750        clippy::style
11751    )]
11752    const _: () = {
11753        use alloy::sol_types as alloy_sol_types;
11754        {
11755            #[doc(hidden)]
11756            #[allow(dead_code)]
11757            type UnderlyingSolTuple<'a> = ();
11758            #[doc(hidden)]
11759            type UnderlyingRustTuple<'a> = ();
11760            #[cfg(test)]
11761            #[allow(dead_code, unreachable_patterns)]
11762            fn _type_assertion(
11763                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11764            ) {
11765                match _t {
11766                    alloy_sol_types::private::AssertTypeEq::<
11767                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11768                    >(_) => {}
11769                }
11770            }
11771            #[automatically_derived]
11772            #[doc(hidden)]
11773            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
11774                fn from(value: PAUSER_ROLECall) -> Self {
11775                    ()
11776                }
11777            }
11778            #[automatically_derived]
11779            #[doc(hidden)]
11780            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
11781                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11782                    Self
11783                }
11784            }
11785        }
11786        {
11787            #[doc(hidden)]
11788            #[allow(dead_code)]
11789            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11790            #[doc(hidden)]
11791            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11792            #[cfg(test)]
11793            #[allow(dead_code, unreachable_patterns)]
11794            fn _type_assertion(
11795                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11796            ) {
11797                match _t {
11798                    alloy_sol_types::private::AssertTypeEq::<
11799                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11800                    >(_) => {}
11801                }
11802            }
11803            #[automatically_derived]
11804            #[doc(hidden)]
11805            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
11806                fn from(value: PAUSER_ROLEReturn) -> Self {
11807                    (value._0,)
11808                }
11809            }
11810            #[automatically_derived]
11811            #[doc(hidden)]
11812            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
11813                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11814                    Self { _0: tuple.0 }
11815                }
11816            }
11817        }
11818        #[automatically_derived]
11819        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
11820            type Parameters<'a> = ();
11821            type Token<'a> = <Self::Parameters<
11822                'a,
11823            > as alloy_sol_types::SolType>::Token<'a>;
11824            type Return = alloy::sol_types::private::FixedBytes<32>;
11825            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11826            type ReturnToken<'a> = <Self::ReturnTuple<
11827                'a,
11828            > as alloy_sol_types::SolType>::Token<'a>;
11829            const SIGNATURE: &'static str = "PAUSER_ROLE()";
11830            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
11831            #[inline]
11832            fn new<'a>(
11833                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11834            ) -> Self {
11835                tuple.into()
11836            }
11837            #[inline]
11838            fn tokenize(&self) -> Self::Token<'_> {
11839                ()
11840            }
11841            #[inline]
11842            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11843                (
11844                    <alloy::sol_types::sol_data::FixedBytes<
11845                        32,
11846                    > as alloy_sol_types::SolType>::tokenize(ret),
11847                )
11848            }
11849            #[inline]
11850            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11851                <Self::ReturnTuple<
11852                    '_,
11853                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11854                    .map(|r| {
11855                        let r: PAUSER_ROLEReturn = r.into();
11856                        r._0
11857                    })
11858            }
11859            #[inline]
11860            fn abi_decode_returns_validate(
11861                data: &[u8],
11862            ) -> alloy_sol_types::Result<Self::Return> {
11863                <Self::ReturnTuple<
11864                    '_,
11865                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11866                    .map(|r| {
11867                        let r: PAUSER_ROLEReturn = r.into();
11868                        r._0
11869                    })
11870            }
11871        }
11872    };
11873    #[derive(serde::Serialize, serde::Deserialize)]
11874    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11875    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
11876```solidity
11877function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
11878```*/
11879    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11880    #[derive(Clone)]
11881    pub struct UPGRADE_INTERFACE_VERSIONCall;
11882    #[derive(serde::Serialize, serde::Deserialize)]
11883    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11884    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
11885    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11886    #[derive(Clone)]
11887    pub struct UPGRADE_INTERFACE_VERSIONReturn {
11888        #[allow(missing_docs)]
11889        pub _0: alloy::sol_types::private::String,
11890    }
11891    #[allow(
11892        non_camel_case_types,
11893        non_snake_case,
11894        clippy::pub_underscore_fields,
11895        clippy::style
11896    )]
11897    const _: () = {
11898        use alloy::sol_types as alloy_sol_types;
11899        {
11900            #[doc(hidden)]
11901            #[allow(dead_code)]
11902            type UnderlyingSolTuple<'a> = ();
11903            #[doc(hidden)]
11904            type UnderlyingRustTuple<'a> = ();
11905            #[cfg(test)]
11906            #[allow(dead_code, unreachable_patterns)]
11907            fn _type_assertion(
11908                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11909            ) {
11910                match _t {
11911                    alloy_sol_types::private::AssertTypeEq::<
11912                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11913                    >(_) => {}
11914                }
11915            }
11916            #[automatically_derived]
11917            #[doc(hidden)]
11918            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
11919            for UnderlyingRustTuple<'_> {
11920                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
11921                    ()
11922                }
11923            }
11924            #[automatically_derived]
11925            #[doc(hidden)]
11926            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11927            for UPGRADE_INTERFACE_VERSIONCall {
11928                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11929                    Self
11930                }
11931            }
11932        }
11933        {
11934            #[doc(hidden)]
11935            #[allow(dead_code)]
11936            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
11937            #[doc(hidden)]
11938            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
11939            #[cfg(test)]
11940            #[allow(dead_code, unreachable_patterns)]
11941            fn _type_assertion(
11942                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11943            ) {
11944                match _t {
11945                    alloy_sol_types::private::AssertTypeEq::<
11946                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11947                    >(_) => {}
11948                }
11949            }
11950            #[automatically_derived]
11951            #[doc(hidden)]
11952            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
11953            for UnderlyingRustTuple<'_> {
11954                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
11955                    (value._0,)
11956                }
11957            }
11958            #[automatically_derived]
11959            #[doc(hidden)]
11960            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11961            for UPGRADE_INTERFACE_VERSIONReturn {
11962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11963                    Self { _0: tuple.0 }
11964                }
11965            }
11966        }
11967        #[automatically_derived]
11968        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
11969            type Parameters<'a> = ();
11970            type Token<'a> = <Self::Parameters<
11971                'a,
11972            > as alloy_sol_types::SolType>::Token<'a>;
11973            type Return = alloy::sol_types::private::String;
11974            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
11975            type ReturnToken<'a> = <Self::ReturnTuple<
11976                'a,
11977            > as alloy_sol_types::SolType>::Token<'a>;
11978            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
11979            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
11980            #[inline]
11981            fn new<'a>(
11982                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11983            ) -> Self {
11984                tuple.into()
11985            }
11986            #[inline]
11987            fn tokenize(&self) -> Self::Token<'_> {
11988                ()
11989            }
11990            #[inline]
11991            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11992                (
11993                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11994                        ret,
11995                    ),
11996                )
11997            }
11998            #[inline]
11999            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12000                <Self::ReturnTuple<
12001                    '_,
12002                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12003                    .map(|r| {
12004                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
12005                        r._0
12006                    })
12007            }
12008            #[inline]
12009            fn abi_decode_returns_validate(
12010                data: &[u8],
12011            ) -> alloy_sol_types::Result<Self::Return> {
12012                <Self::ReturnTuple<
12013                    '_,
12014                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12015                    .map(|r| {
12016                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
12017                        r._0
12018                    })
12019            }
12020        }
12021    };
12022    #[derive(serde::Serialize, serde::Deserialize)]
12023    #[derive()]
12024    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
12025```solidity
12026function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
12027```*/
12028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12029    #[derive(Clone)]
12030    pub struct _hashBlsKeyCall {
12031        #[allow(missing_docs)]
12032        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12033    }
12034    #[derive(serde::Serialize, serde::Deserialize)]
12035    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12036    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
12037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12038    #[derive(Clone)]
12039    pub struct _hashBlsKeyReturn {
12040        #[allow(missing_docs)]
12041        pub _0: alloy::sol_types::private::FixedBytes<32>,
12042    }
12043    #[allow(
12044        non_camel_case_types,
12045        non_snake_case,
12046        clippy::pub_underscore_fields,
12047        clippy::style
12048    )]
12049    const _: () = {
12050        use alloy::sol_types as alloy_sol_types;
12051        {
12052            #[doc(hidden)]
12053            #[allow(dead_code)]
12054            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
12055            #[doc(hidden)]
12056            type UnderlyingRustTuple<'a> = (
12057                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12058            );
12059            #[cfg(test)]
12060            #[allow(dead_code, unreachable_patterns)]
12061            fn _type_assertion(
12062                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12063            ) {
12064                match _t {
12065                    alloy_sol_types::private::AssertTypeEq::<
12066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12067                    >(_) => {}
12068                }
12069            }
12070            #[automatically_derived]
12071            #[doc(hidden)]
12072            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
12073                fn from(value: _hashBlsKeyCall) -> Self {
12074                    (value.blsVK,)
12075                }
12076            }
12077            #[automatically_derived]
12078            #[doc(hidden)]
12079            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
12080                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12081                    Self { blsVK: tuple.0 }
12082                }
12083            }
12084        }
12085        {
12086            #[doc(hidden)]
12087            #[allow(dead_code)]
12088            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12089            #[doc(hidden)]
12090            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12091            #[cfg(test)]
12092            #[allow(dead_code, unreachable_patterns)]
12093            fn _type_assertion(
12094                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12095            ) {
12096                match _t {
12097                    alloy_sol_types::private::AssertTypeEq::<
12098                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12099                    >(_) => {}
12100                }
12101            }
12102            #[automatically_derived]
12103            #[doc(hidden)]
12104            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
12105                fn from(value: _hashBlsKeyReturn) -> Self {
12106                    (value._0,)
12107                }
12108            }
12109            #[automatically_derived]
12110            #[doc(hidden)]
12111            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
12112                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12113                    Self { _0: tuple.0 }
12114                }
12115            }
12116        }
12117        #[automatically_derived]
12118        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
12119            type Parameters<'a> = (BN254::G2Point,);
12120            type Token<'a> = <Self::Parameters<
12121                'a,
12122            > as alloy_sol_types::SolType>::Token<'a>;
12123            type Return = alloy::sol_types::private::FixedBytes<32>;
12124            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12125            type ReturnToken<'a> = <Self::ReturnTuple<
12126                'a,
12127            > as alloy_sol_types::SolType>::Token<'a>;
12128            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
12129            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
12130            #[inline]
12131            fn new<'a>(
12132                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12133            ) -> Self {
12134                tuple.into()
12135            }
12136            #[inline]
12137            fn tokenize(&self) -> Self::Token<'_> {
12138                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
12139            }
12140            #[inline]
12141            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12142                (
12143                    <alloy::sol_types::sol_data::FixedBytes<
12144                        32,
12145                    > as alloy_sol_types::SolType>::tokenize(ret),
12146                )
12147            }
12148            #[inline]
12149            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12150                <Self::ReturnTuple<
12151                    '_,
12152                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12153                    .map(|r| {
12154                        let r: _hashBlsKeyReturn = r.into();
12155                        r._0
12156                    })
12157            }
12158            #[inline]
12159            fn abi_decode_returns_validate(
12160                data: &[u8],
12161            ) -> alloy_sol_types::Result<Self::Return> {
12162                <Self::ReturnTuple<
12163                    '_,
12164                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12165                    .map(|r| {
12166                        let r: _hashBlsKeyReturn = r.into();
12167                        r._0
12168                    })
12169            }
12170        }
12171    };
12172    #[derive(serde::Serialize, serde::Deserialize)]
12173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12174    /**Function with signature `activeStake()` and selector `0xbd49c35f`.
12175```solidity
12176function activeStake() external view returns (uint256);
12177```*/
12178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12179    #[derive(Clone)]
12180    pub struct activeStakeCall;
12181    #[derive(serde::Serialize, serde::Deserialize)]
12182    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12183    ///Container type for the return parameters of the [`activeStake()`](activeStakeCall) function.
12184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12185    #[derive(Clone)]
12186    pub struct activeStakeReturn {
12187        #[allow(missing_docs)]
12188        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12189    }
12190    #[allow(
12191        non_camel_case_types,
12192        non_snake_case,
12193        clippy::pub_underscore_fields,
12194        clippy::style
12195    )]
12196    const _: () = {
12197        use alloy::sol_types as alloy_sol_types;
12198        {
12199            #[doc(hidden)]
12200            #[allow(dead_code)]
12201            type UnderlyingSolTuple<'a> = ();
12202            #[doc(hidden)]
12203            type UnderlyingRustTuple<'a> = ();
12204            #[cfg(test)]
12205            #[allow(dead_code, unreachable_patterns)]
12206            fn _type_assertion(
12207                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12208            ) {
12209                match _t {
12210                    alloy_sol_types::private::AssertTypeEq::<
12211                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12212                    >(_) => {}
12213                }
12214            }
12215            #[automatically_derived]
12216            #[doc(hidden)]
12217            impl ::core::convert::From<activeStakeCall> for UnderlyingRustTuple<'_> {
12218                fn from(value: activeStakeCall) -> Self {
12219                    ()
12220                }
12221            }
12222            #[automatically_derived]
12223            #[doc(hidden)]
12224            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeCall {
12225                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12226                    Self
12227                }
12228            }
12229        }
12230        {
12231            #[doc(hidden)]
12232            #[allow(dead_code)]
12233            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12234            #[doc(hidden)]
12235            type UnderlyingRustTuple<'a> = (
12236                alloy::sol_types::private::primitives::aliases::U256,
12237            );
12238            #[cfg(test)]
12239            #[allow(dead_code, unreachable_patterns)]
12240            fn _type_assertion(
12241                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12242            ) {
12243                match _t {
12244                    alloy_sol_types::private::AssertTypeEq::<
12245                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12246                    >(_) => {}
12247                }
12248            }
12249            #[automatically_derived]
12250            #[doc(hidden)]
12251            impl ::core::convert::From<activeStakeReturn> for UnderlyingRustTuple<'_> {
12252                fn from(value: activeStakeReturn) -> Self {
12253                    (value._0,)
12254                }
12255            }
12256            #[automatically_derived]
12257            #[doc(hidden)]
12258            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeReturn {
12259                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12260                    Self { _0: tuple.0 }
12261                }
12262            }
12263        }
12264        #[automatically_derived]
12265        impl alloy_sol_types::SolCall for activeStakeCall {
12266            type Parameters<'a> = ();
12267            type Token<'a> = <Self::Parameters<
12268                'a,
12269            > as alloy_sol_types::SolType>::Token<'a>;
12270            type Return = alloy::sol_types::private::primitives::aliases::U256;
12271            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12272            type ReturnToken<'a> = <Self::ReturnTuple<
12273                'a,
12274            > as alloy_sol_types::SolType>::Token<'a>;
12275            const SIGNATURE: &'static str = "activeStake()";
12276            const SELECTOR: [u8; 4] = [189u8, 73u8, 195u8, 95u8];
12277            #[inline]
12278            fn new<'a>(
12279                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12280            ) -> Self {
12281                tuple.into()
12282            }
12283            #[inline]
12284            fn tokenize(&self) -> Self::Token<'_> {
12285                ()
12286            }
12287            #[inline]
12288            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12289                (
12290                    <alloy::sol_types::sol_data::Uint<
12291                        256,
12292                    > as alloy_sol_types::SolType>::tokenize(ret),
12293                )
12294            }
12295            #[inline]
12296            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12297                <Self::ReturnTuple<
12298                    '_,
12299                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12300                    .map(|r| {
12301                        let r: activeStakeReturn = r.into();
12302                        r._0
12303                    })
12304            }
12305            #[inline]
12306            fn abi_decode_returns_validate(
12307                data: &[u8],
12308            ) -> alloy_sol_types::Result<Self::Return> {
12309                <Self::ReturnTuple<
12310                    '_,
12311                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12312                    .map(|r| {
12313                        let r: activeStakeReturn = r.into();
12314                        r._0
12315                    })
12316            }
12317        }
12318    };
12319    #[derive(serde::Serialize, serde::Deserialize)]
12320    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12321    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
12322```solidity
12323function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
12324```*/
12325    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12326    #[derive(Clone)]
12327    pub struct blsKeysCall {
12328        #[allow(missing_docs)]
12329        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
12330    }
12331    #[derive(serde::Serialize, serde::Deserialize)]
12332    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12333    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
12334    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12335    #[derive(Clone)]
12336    pub struct blsKeysReturn {
12337        #[allow(missing_docs)]
12338        pub used: bool,
12339    }
12340    #[allow(
12341        non_camel_case_types,
12342        non_snake_case,
12343        clippy::pub_underscore_fields,
12344        clippy::style
12345    )]
12346    const _: () = {
12347        use alloy::sol_types as alloy_sol_types;
12348        {
12349            #[doc(hidden)]
12350            #[allow(dead_code)]
12351            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12352            #[doc(hidden)]
12353            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12354            #[cfg(test)]
12355            #[allow(dead_code, unreachable_patterns)]
12356            fn _type_assertion(
12357                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12358            ) {
12359                match _t {
12360                    alloy_sol_types::private::AssertTypeEq::<
12361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12362                    >(_) => {}
12363                }
12364            }
12365            #[automatically_derived]
12366            #[doc(hidden)]
12367            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
12368                fn from(value: blsKeysCall) -> Self {
12369                    (value.blsKeyHash,)
12370                }
12371            }
12372            #[automatically_derived]
12373            #[doc(hidden)]
12374            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
12375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12376                    Self { blsKeyHash: tuple.0 }
12377                }
12378            }
12379        }
12380        {
12381            #[doc(hidden)]
12382            #[allow(dead_code)]
12383            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12384            #[doc(hidden)]
12385            type UnderlyingRustTuple<'a> = (bool,);
12386            #[cfg(test)]
12387            #[allow(dead_code, unreachable_patterns)]
12388            fn _type_assertion(
12389                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12390            ) {
12391                match _t {
12392                    alloy_sol_types::private::AssertTypeEq::<
12393                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12394                    >(_) => {}
12395                }
12396            }
12397            #[automatically_derived]
12398            #[doc(hidden)]
12399            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
12400                fn from(value: blsKeysReturn) -> Self {
12401                    (value.used,)
12402                }
12403            }
12404            #[automatically_derived]
12405            #[doc(hidden)]
12406            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
12407                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12408                    Self { used: tuple.0 }
12409                }
12410            }
12411        }
12412        #[automatically_derived]
12413        impl alloy_sol_types::SolCall for blsKeysCall {
12414            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12415            type Token<'a> = <Self::Parameters<
12416                'a,
12417            > as alloy_sol_types::SolType>::Token<'a>;
12418            type Return = bool;
12419            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12420            type ReturnToken<'a> = <Self::ReturnTuple<
12421                'a,
12422            > as alloy_sol_types::SolType>::Token<'a>;
12423            const SIGNATURE: &'static str = "blsKeys(bytes32)";
12424            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
12425            #[inline]
12426            fn new<'a>(
12427                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12428            ) -> Self {
12429                tuple.into()
12430            }
12431            #[inline]
12432            fn tokenize(&self) -> Self::Token<'_> {
12433                (
12434                    <alloy::sol_types::sol_data::FixedBytes<
12435                        32,
12436                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
12437                )
12438            }
12439            #[inline]
12440            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12441                (
12442                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
12443                        ret,
12444                    ),
12445                )
12446            }
12447            #[inline]
12448            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12449                <Self::ReturnTuple<
12450                    '_,
12451                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12452                    .map(|r| {
12453                        let r: blsKeysReturn = r.into();
12454                        r.used
12455                    })
12456            }
12457            #[inline]
12458            fn abi_decode_returns_validate(
12459                data: &[u8],
12460            ) -> alloy_sol_types::Result<Self::Return> {
12461                <Self::ReturnTuple<
12462                    '_,
12463                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12464                    .map(|r| {
12465                        let r: blsKeysReturn = r.into();
12466                        r.used
12467                    })
12468            }
12469        }
12470    };
12471    #[derive(serde::Serialize, serde::Deserialize)]
12472    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12473    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
12474```solidity
12475function claimValidatorExit(address validator) external;
12476```*/
12477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12478    #[derive(Clone)]
12479    pub struct claimValidatorExitCall {
12480        #[allow(missing_docs)]
12481        pub validator: alloy::sol_types::private::Address,
12482    }
12483    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
12484    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12485    #[derive(Clone)]
12486    pub struct claimValidatorExitReturn {}
12487    #[allow(
12488        non_camel_case_types,
12489        non_snake_case,
12490        clippy::pub_underscore_fields,
12491        clippy::style
12492    )]
12493    const _: () = {
12494        use alloy::sol_types as alloy_sol_types;
12495        {
12496            #[doc(hidden)]
12497            #[allow(dead_code)]
12498            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12499            #[doc(hidden)]
12500            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12501            #[cfg(test)]
12502            #[allow(dead_code, unreachable_patterns)]
12503            fn _type_assertion(
12504                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12505            ) {
12506                match _t {
12507                    alloy_sol_types::private::AssertTypeEq::<
12508                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12509                    >(_) => {}
12510                }
12511            }
12512            #[automatically_derived]
12513            #[doc(hidden)]
12514            impl ::core::convert::From<claimValidatorExitCall>
12515            for UnderlyingRustTuple<'_> {
12516                fn from(value: claimValidatorExitCall) -> Self {
12517                    (value.validator,)
12518                }
12519            }
12520            #[automatically_derived]
12521            #[doc(hidden)]
12522            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12523            for claimValidatorExitCall {
12524                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12525                    Self { validator: tuple.0 }
12526                }
12527            }
12528        }
12529        {
12530            #[doc(hidden)]
12531            #[allow(dead_code)]
12532            type UnderlyingSolTuple<'a> = ();
12533            #[doc(hidden)]
12534            type UnderlyingRustTuple<'a> = ();
12535            #[cfg(test)]
12536            #[allow(dead_code, unreachable_patterns)]
12537            fn _type_assertion(
12538                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12539            ) {
12540                match _t {
12541                    alloy_sol_types::private::AssertTypeEq::<
12542                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12543                    >(_) => {}
12544                }
12545            }
12546            #[automatically_derived]
12547            #[doc(hidden)]
12548            impl ::core::convert::From<claimValidatorExitReturn>
12549            for UnderlyingRustTuple<'_> {
12550                fn from(value: claimValidatorExitReturn) -> Self {
12551                    ()
12552                }
12553            }
12554            #[automatically_derived]
12555            #[doc(hidden)]
12556            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12557            for claimValidatorExitReturn {
12558                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12559                    Self {}
12560                }
12561            }
12562        }
12563        impl claimValidatorExitReturn {
12564            fn _tokenize(
12565                &self,
12566            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12567                ()
12568            }
12569        }
12570        #[automatically_derived]
12571        impl alloy_sol_types::SolCall for claimValidatorExitCall {
12572            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12573            type Token<'a> = <Self::Parameters<
12574                'a,
12575            > as alloy_sol_types::SolType>::Token<'a>;
12576            type Return = claimValidatorExitReturn;
12577            type ReturnTuple<'a> = ();
12578            type ReturnToken<'a> = <Self::ReturnTuple<
12579                'a,
12580            > as alloy_sol_types::SolType>::Token<'a>;
12581            const SIGNATURE: &'static str = "claimValidatorExit(address)";
12582            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
12583            #[inline]
12584            fn new<'a>(
12585                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12586            ) -> Self {
12587                tuple.into()
12588            }
12589            #[inline]
12590            fn tokenize(&self) -> Self::Token<'_> {
12591                (
12592                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12593                        &self.validator,
12594                    ),
12595                )
12596            }
12597            #[inline]
12598            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12599                claimValidatorExitReturn::_tokenize(ret)
12600            }
12601            #[inline]
12602            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12603                <Self::ReturnTuple<
12604                    '_,
12605                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12606                    .map(Into::into)
12607            }
12608            #[inline]
12609            fn abi_decode_returns_validate(
12610                data: &[u8],
12611            ) -> alloy_sol_types::Result<Self::Return> {
12612                <Self::ReturnTuple<
12613                    '_,
12614                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12615                    .map(Into::into)
12616            }
12617        }
12618    };
12619    #[derive(serde::Serialize, serde::Deserialize)]
12620    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12621    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
12622```solidity
12623function claimWithdrawal(address validator) external;
12624```*/
12625    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12626    #[derive(Clone)]
12627    pub struct claimWithdrawalCall {
12628        #[allow(missing_docs)]
12629        pub validator: alloy::sol_types::private::Address,
12630    }
12631    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
12632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12633    #[derive(Clone)]
12634    pub struct claimWithdrawalReturn {}
12635    #[allow(
12636        non_camel_case_types,
12637        non_snake_case,
12638        clippy::pub_underscore_fields,
12639        clippy::style
12640    )]
12641    const _: () = {
12642        use alloy::sol_types as alloy_sol_types;
12643        {
12644            #[doc(hidden)]
12645            #[allow(dead_code)]
12646            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12647            #[doc(hidden)]
12648            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12649            #[cfg(test)]
12650            #[allow(dead_code, unreachable_patterns)]
12651            fn _type_assertion(
12652                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12653            ) {
12654                match _t {
12655                    alloy_sol_types::private::AssertTypeEq::<
12656                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12657                    >(_) => {}
12658                }
12659            }
12660            #[automatically_derived]
12661            #[doc(hidden)]
12662            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
12663                fn from(value: claimWithdrawalCall) -> Self {
12664                    (value.validator,)
12665                }
12666            }
12667            #[automatically_derived]
12668            #[doc(hidden)]
12669            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
12670                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12671                    Self { validator: tuple.0 }
12672                }
12673            }
12674        }
12675        {
12676            #[doc(hidden)]
12677            #[allow(dead_code)]
12678            type UnderlyingSolTuple<'a> = ();
12679            #[doc(hidden)]
12680            type UnderlyingRustTuple<'a> = ();
12681            #[cfg(test)]
12682            #[allow(dead_code, unreachable_patterns)]
12683            fn _type_assertion(
12684                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12685            ) {
12686                match _t {
12687                    alloy_sol_types::private::AssertTypeEq::<
12688                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12689                    >(_) => {}
12690                }
12691            }
12692            #[automatically_derived]
12693            #[doc(hidden)]
12694            impl ::core::convert::From<claimWithdrawalReturn>
12695            for UnderlyingRustTuple<'_> {
12696                fn from(value: claimWithdrawalReturn) -> Self {
12697                    ()
12698                }
12699            }
12700            #[automatically_derived]
12701            #[doc(hidden)]
12702            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12703            for claimWithdrawalReturn {
12704                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12705                    Self {}
12706                }
12707            }
12708        }
12709        impl claimWithdrawalReturn {
12710            fn _tokenize(
12711                &self,
12712            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12713                ()
12714            }
12715        }
12716        #[automatically_derived]
12717        impl alloy_sol_types::SolCall for claimWithdrawalCall {
12718            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12719            type Token<'a> = <Self::Parameters<
12720                'a,
12721            > as alloy_sol_types::SolType>::Token<'a>;
12722            type Return = claimWithdrawalReturn;
12723            type ReturnTuple<'a> = ();
12724            type ReturnToken<'a> = <Self::ReturnTuple<
12725                'a,
12726            > as alloy_sol_types::SolType>::Token<'a>;
12727            const SIGNATURE: &'static str = "claimWithdrawal(address)";
12728            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
12729            #[inline]
12730            fn new<'a>(
12731                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12732            ) -> Self {
12733                tuple.into()
12734            }
12735            #[inline]
12736            fn tokenize(&self) -> Self::Token<'_> {
12737                (
12738                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12739                        &self.validator,
12740                    ),
12741                )
12742            }
12743            #[inline]
12744            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12745                claimWithdrawalReturn::_tokenize(ret)
12746            }
12747            #[inline]
12748            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12749                <Self::ReturnTuple<
12750                    '_,
12751                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12752                    .map(Into::into)
12753            }
12754            #[inline]
12755            fn abi_decode_returns_validate(
12756                data: &[u8],
12757            ) -> alloy_sol_types::Result<Self::Return> {
12758                <Self::ReturnTuple<
12759                    '_,
12760                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12761                    .map(Into::into)
12762            }
12763        }
12764    };
12765    #[derive(serde::Serialize, serde::Deserialize)]
12766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12767    /**Function with signature `commissionTracking(address)` and selector `0x9ffb6b43`.
12768```solidity
12769function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
12770```*/
12771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12772    #[derive(Clone)]
12773    pub struct commissionTrackingCall {
12774        #[allow(missing_docs)]
12775        pub validator: alloy::sol_types::private::Address,
12776    }
12777    #[derive(serde::Serialize, serde::Deserialize)]
12778    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12779    ///Container type for the return parameters of the [`commissionTracking(address)`](commissionTrackingCall) function.
12780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12781    #[derive(Clone)]
12782    pub struct commissionTrackingReturn {
12783        #[allow(missing_docs)]
12784        pub commission: u16,
12785        #[allow(missing_docs)]
12786        pub lastIncreaseTime: alloy::sol_types::private::primitives::aliases::U256,
12787    }
12788    #[allow(
12789        non_camel_case_types,
12790        non_snake_case,
12791        clippy::pub_underscore_fields,
12792        clippy::style
12793    )]
12794    const _: () = {
12795        use alloy::sol_types as alloy_sol_types;
12796        {
12797            #[doc(hidden)]
12798            #[allow(dead_code)]
12799            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12800            #[doc(hidden)]
12801            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12802            #[cfg(test)]
12803            #[allow(dead_code, unreachable_patterns)]
12804            fn _type_assertion(
12805                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12806            ) {
12807                match _t {
12808                    alloy_sol_types::private::AssertTypeEq::<
12809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12810                    >(_) => {}
12811                }
12812            }
12813            #[automatically_derived]
12814            #[doc(hidden)]
12815            impl ::core::convert::From<commissionTrackingCall>
12816            for UnderlyingRustTuple<'_> {
12817                fn from(value: commissionTrackingCall) -> Self {
12818                    (value.validator,)
12819                }
12820            }
12821            #[automatically_derived]
12822            #[doc(hidden)]
12823            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12824            for commissionTrackingCall {
12825                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12826                    Self { validator: tuple.0 }
12827                }
12828            }
12829        }
12830        {
12831            #[doc(hidden)]
12832            #[allow(dead_code)]
12833            type UnderlyingSolTuple<'a> = (
12834                alloy::sol_types::sol_data::Uint<16>,
12835                alloy::sol_types::sol_data::Uint<256>,
12836            );
12837            #[doc(hidden)]
12838            type UnderlyingRustTuple<'a> = (
12839                u16,
12840                alloy::sol_types::private::primitives::aliases::U256,
12841            );
12842            #[cfg(test)]
12843            #[allow(dead_code, unreachable_patterns)]
12844            fn _type_assertion(
12845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12846            ) {
12847                match _t {
12848                    alloy_sol_types::private::AssertTypeEq::<
12849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12850                    >(_) => {}
12851                }
12852            }
12853            #[automatically_derived]
12854            #[doc(hidden)]
12855            impl ::core::convert::From<commissionTrackingReturn>
12856            for UnderlyingRustTuple<'_> {
12857                fn from(value: commissionTrackingReturn) -> Self {
12858                    (value.commission, value.lastIncreaseTime)
12859                }
12860            }
12861            #[automatically_derived]
12862            #[doc(hidden)]
12863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12864            for commissionTrackingReturn {
12865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12866                    Self {
12867                        commission: tuple.0,
12868                        lastIncreaseTime: tuple.1,
12869                    }
12870                }
12871            }
12872        }
12873        impl commissionTrackingReturn {
12874            fn _tokenize(
12875                &self,
12876            ) -> <commissionTrackingCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12877                (
12878                    <alloy::sol_types::sol_data::Uint<
12879                        16,
12880                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
12881                    <alloy::sol_types::sol_data::Uint<
12882                        256,
12883                    > as alloy_sol_types::SolType>::tokenize(&self.lastIncreaseTime),
12884                )
12885            }
12886        }
12887        #[automatically_derived]
12888        impl alloy_sol_types::SolCall for commissionTrackingCall {
12889            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12890            type Token<'a> = <Self::Parameters<
12891                'a,
12892            > as alloy_sol_types::SolType>::Token<'a>;
12893            type Return = commissionTrackingReturn;
12894            type ReturnTuple<'a> = (
12895                alloy::sol_types::sol_data::Uint<16>,
12896                alloy::sol_types::sol_data::Uint<256>,
12897            );
12898            type ReturnToken<'a> = <Self::ReturnTuple<
12899                'a,
12900            > as alloy_sol_types::SolType>::Token<'a>;
12901            const SIGNATURE: &'static str = "commissionTracking(address)";
12902            const SELECTOR: [u8; 4] = [159u8, 251u8, 107u8, 67u8];
12903            #[inline]
12904            fn new<'a>(
12905                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12906            ) -> Self {
12907                tuple.into()
12908            }
12909            #[inline]
12910            fn tokenize(&self) -> Self::Token<'_> {
12911                (
12912                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12913                        &self.validator,
12914                    ),
12915                )
12916            }
12917            #[inline]
12918            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12919                commissionTrackingReturn::_tokenize(ret)
12920            }
12921            #[inline]
12922            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12923                <Self::ReturnTuple<
12924                    '_,
12925                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12926                    .map(Into::into)
12927            }
12928            #[inline]
12929            fn abi_decode_returns_validate(
12930                data: &[u8],
12931            ) -> alloy_sol_types::Result<Self::Return> {
12932                <Self::ReturnTuple<
12933                    '_,
12934                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12935                    .map(Into::into)
12936            }
12937        }
12938    };
12939    #[derive(serde::Serialize, serde::Deserialize)]
12940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12941    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
12942```solidity
12943function delegate(address validator, uint256 amount) external;
12944```*/
12945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12946    #[derive(Clone)]
12947    pub struct delegateCall {
12948        #[allow(missing_docs)]
12949        pub validator: alloy::sol_types::private::Address,
12950        #[allow(missing_docs)]
12951        pub amount: alloy::sol_types::private::primitives::aliases::U256,
12952    }
12953    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
12954    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12955    #[derive(Clone)]
12956    pub struct delegateReturn {}
12957    #[allow(
12958        non_camel_case_types,
12959        non_snake_case,
12960        clippy::pub_underscore_fields,
12961        clippy::style
12962    )]
12963    const _: () = {
12964        use alloy::sol_types as alloy_sol_types;
12965        {
12966            #[doc(hidden)]
12967            #[allow(dead_code)]
12968            type UnderlyingSolTuple<'a> = (
12969                alloy::sol_types::sol_data::Address,
12970                alloy::sol_types::sol_data::Uint<256>,
12971            );
12972            #[doc(hidden)]
12973            type UnderlyingRustTuple<'a> = (
12974                alloy::sol_types::private::Address,
12975                alloy::sol_types::private::primitives::aliases::U256,
12976            );
12977            #[cfg(test)]
12978            #[allow(dead_code, unreachable_patterns)]
12979            fn _type_assertion(
12980                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12981            ) {
12982                match _t {
12983                    alloy_sol_types::private::AssertTypeEq::<
12984                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12985                    >(_) => {}
12986                }
12987            }
12988            #[automatically_derived]
12989            #[doc(hidden)]
12990            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
12991                fn from(value: delegateCall) -> Self {
12992                    (value.validator, value.amount)
12993                }
12994            }
12995            #[automatically_derived]
12996            #[doc(hidden)]
12997            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
12998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12999                    Self {
13000                        validator: tuple.0,
13001                        amount: tuple.1,
13002                    }
13003                }
13004            }
13005        }
13006        {
13007            #[doc(hidden)]
13008            #[allow(dead_code)]
13009            type UnderlyingSolTuple<'a> = ();
13010            #[doc(hidden)]
13011            type UnderlyingRustTuple<'a> = ();
13012            #[cfg(test)]
13013            #[allow(dead_code, unreachable_patterns)]
13014            fn _type_assertion(
13015                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13016            ) {
13017                match _t {
13018                    alloy_sol_types::private::AssertTypeEq::<
13019                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13020                    >(_) => {}
13021                }
13022            }
13023            #[automatically_derived]
13024            #[doc(hidden)]
13025            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
13026                fn from(value: delegateReturn) -> Self {
13027                    ()
13028                }
13029            }
13030            #[automatically_derived]
13031            #[doc(hidden)]
13032            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
13033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13034                    Self {}
13035                }
13036            }
13037        }
13038        impl delegateReturn {
13039            fn _tokenize(
13040                &self,
13041            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13042                ()
13043            }
13044        }
13045        #[automatically_derived]
13046        impl alloy_sol_types::SolCall for delegateCall {
13047            type Parameters<'a> = (
13048                alloy::sol_types::sol_data::Address,
13049                alloy::sol_types::sol_data::Uint<256>,
13050            );
13051            type Token<'a> = <Self::Parameters<
13052                'a,
13053            > as alloy_sol_types::SolType>::Token<'a>;
13054            type Return = delegateReturn;
13055            type ReturnTuple<'a> = ();
13056            type ReturnToken<'a> = <Self::ReturnTuple<
13057                'a,
13058            > as alloy_sol_types::SolType>::Token<'a>;
13059            const SIGNATURE: &'static str = "delegate(address,uint256)";
13060            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
13061            #[inline]
13062            fn new<'a>(
13063                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13064            ) -> Self {
13065                tuple.into()
13066            }
13067            #[inline]
13068            fn tokenize(&self) -> Self::Token<'_> {
13069                (
13070                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13071                        &self.validator,
13072                    ),
13073                    <alloy::sol_types::sol_data::Uint<
13074                        256,
13075                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
13076                )
13077            }
13078            #[inline]
13079            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13080                delegateReturn::_tokenize(ret)
13081            }
13082            #[inline]
13083            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13084                <Self::ReturnTuple<
13085                    '_,
13086                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13087                    .map(Into::into)
13088            }
13089            #[inline]
13090            fn abi_decode_returns_validate(
13091                data: &[u8],
13092            ) -> alloy_sol_types::Result<Self::Return> {
13093                <Self::ReturnTuple<
13094                    '_,
13095                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13096                    .map(Into::into)
13097            }
13098        }
13099    };
13100    #[derive(serde::Serialize, serde::Deserialize)]
13101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13102    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
13103```solidity
13104function delegations(address validator, address delegator) external view returns (uint256 amount);
13105```*/
13106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13107    #[derive(Clone)]
13108    pub struct delegationsCall {
13109        #[allow(missing_docs)]
13110        pub validator: alloy::sol_types::private::Address,
13111        #[allow(missing_docs)]
13112        pub delegator: alloy::sol_types::private::Address,
13113    }
13114    #[derive(serde::Serialize, serde::Deserialize)]
13115    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13116    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
13117    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13118    #[derive(Clone)]
13119    pub struct delegationsReturn {
13120        #[allow(missing_docs)]
13121        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13122    }
13123    #[allow(
13124        non_camel_case_types,
13125        non_snake_case,
13126        clippy::pub_underscore_fields,
13127        clippy::style
13128    )]
13129    const _: () = {
13130        use alloy::sol_types as alloy_sol_types;
13131        {
13132            #[doc(hidden)]
13133            #[allow(dead_code)]
13134            type UnderlyingSolTuple<'a> = (
13135                alloy::sol_types::sol_data::Address,
13136                alloy::sol_types::sol_data::Address,
13137            );
13138            #[doc(hidden)]
13139            type UnderlyingRustTuple<'a> = (
13140                alloy::sol_types::private::Address,
13141                alloy::sol_types::private::Address,
13142            );
13143            #[cfg(test)]
13144            #[allow(dead_code, unreachable_patterns)]
13145            fn _type_assertion(
13146                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13147            ) {
13148                match _t {
13149                    alloy_sol_types::private::AssertTypeEq::<
13150                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13151                    >(_) => {}
13152                }
13153            }
13154            #[automatically_derived]
13155            #[doc(hidden)]
13156            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
13157                fn from(value: delegationsCall) -> Self {
13158                    (value.validator, value.delegator)
13159                }
13160            }
13161            #[automatically_derived]
13162            #[doc(hidden)]
13163            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
13164                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13165                    Self {
13166                        validator: tuple.0,
13167                        delegator: tuple.1,
13168                    }
13169                }
13170            }
13171        }
13172        {
13173            #[doc(hidden)]
13174            #[allow(dead_code)]
13175            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13176            #[doc(hidden)]
13177            type UnderlyingRustTuple<'a> = (
13178                alloy::sol_types::private::primitives::aliases::U256,
13179            );
13180            #[cfg(test)]
13181            #[allow(dead_code, unreachable_patterns)]
13182            fn _type_assertion(
13183                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13184            ) {
13185                match _t {
13186                    alloy_sol_types::private::AssertTypeEq::<
13187                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13188                    >(_) => {}
13189                }
13190            }
13191            #[automatically_derived]
13192            #[doc(hidden)]
13193            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
13194                fn from(value: delegationsReturn) -> Self {
13195                    (value.amount,)
13196                }
13197            }
13198            #[automatically_derived]
13199            #[doc(hidden)]
13200            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
13201                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13202                    Self { amount: tuple.0 }
13203                }
13204            }
13205        }
13206        #[automatically_derived]
13207        impl alloy_sol_types::SolCall for delegationsCall {
13208            type Parameters<'a> = (
13209                alloy::sol_types::sol_data::Address,
13210                alloy::sol_types::sol_data::Address,
13211            );
13212            type Token<'a> = <Self::Parameters<
13213                'a,
13214            > as alloy_sol_types::SolType>::Token<'a>;
13215            type Return = alloy::sol_types::private::primitives::aliases::U256;
13216            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13217            type ReturnToken<'a> = <Self::ReturnTuple<
13218                'a,
13219            > as alloy_sol_types::SolType>::Token<'a>;
13220            const SIGNATURE: &'static str = "delegations(address,address)";
13221            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
13222            #[inline]
13223            fn new<'a>(
13224                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13225            ) -> Self {
13226                tuple.into()
13227            }
13228            #[inline]
13229            fn tokenize(&self) -> Self::Token<'_> {
13230                (
13231                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13232                        &self.validator,
13233                    ),
13234                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13235                        &self.delegator,
13236                    ),
13237                )
13238            }
13239            #[inline]
13240            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13241                (
13242                    <alloy::sol_types::sol_data::Uint<
13243                        256,
13244                    > as alloy_sol_types::SolType>::tokenize(ret),
13245                )
13246            }
13247            #[inline]
13248            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13249                <Self::ReturnTuple<
13250                    '_,
13251                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13252                    .map(|r| {
13253                        let r: delegationsReturn = r.into();
13254                        r.amount
13255                    })
13256            }
13257            #[inline]
13258            fn abi_decode_returns_validate(
13259                data: &[u8],
13260            ) -> alloy_sol_types::Result<Self::Return> {
13261                <Self::ReturnTuple<
13262                    '_,
13263                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13264                    .map(|r| {
13265                        let r: delegationsReturn = r.into();
13266                        r.amount
13267                    })
13268            }
13269        }
13270    };
13271    #[derive(serde::Serialize, serde::Deserialize)]
13272    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13273    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
13274```solidity
13275function deregisterValidator() external;
13276```*/
13277    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13278    #[derive(Clone)]
13279    pub struct deregisterValidatorCall;
13280    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
13281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13282    #[derive(Clone)]
13283    pub struct deregisterValidatorReturn {}
13284    #[allow(
13285        non_camel_case_types,
13286        non_snake_case,
13287        clippy::pub_underscore_fields,
13288        clippy::style
13289    )]
13290    const _: () = {
13291        use alloy::sol_types as alloy_sol_types;
13292        {
13293            #[doc(hidden)]
13294            #[allow(dead_code)]
13295            type UnderlyingSolTuple<'a> = ();
13296            #[doc(hidden)]
13297            type UnderlyingRustTuple<'a> = ();
13298            #[cfg(test)]
13299            #[allow(dead_code, unreachable_patterns)]
13300            fn _type_assertion(
13301                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13302            ) {
13303                match _t {
13304                    alloy_sol_types::private::AssertTypeEq::<
13305                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13306                    >(_) => {}
13307                }
13308            }
13309            #[automatically_derived]
13310            #[doc(hidden)]
13311            impl ::core::convert::From<deregisterValidatorCall>
13312            for UnderlyingRustTuple<'_> {
13313                fn from(value: deregisterValidatorCall) -> Self {
13314                    ()
13315                }
13316            }
13317            #[automatically_derived]
13318            #[doc(hidden)]
13319            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13320            for deregisterValidatorCall {
13321                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13322                    Self
13323                }
13324            }
13325        }
13326        {
13327            #[doc(hidden)]
13328            #[allow(dead_code)]
13329            type UnderlyingSolTuple<'a> = ();
13330            #[doc(hidden)]
13331            type UnderlyingRustTuple<'a> = ();
13332            #[cfg(test)]
13333            #[allow(dead_code, unreachable_patterns)]
13334            fn _type_assertion(
13335                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13336            ) {
13337                match _t {
13338                    alloy_sol_types::private::AssertTypeEq::<
13339                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13340                    >(_) => {}
13341                }
13342            }
13343            #[automatically_derived]
13344            #[doc(hidden)]
13345            impl ::core::convert::From<deregisterValidatorReturn>
13346            for UnderlyingRustTuple<'_> {
13347                fn from(value: deregisterValidatorReturn) -> Self {
13348                    ()
13349                }
13350            }
13351            #[automatically_derived]
13352            #[doc(hidden)]
13353            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13354            for deregisterValidatorReturn {
13355                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13356                    Self {}
13357                }
13358            }
13359        }
13360        impl deregisterValidatorReturn {
13361            fn _tokenize(
13362                &self,
13363            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13364                ()
13365            }
13366        }
13367        #[automatically_derived]
13368        impl alloy_sol_types::SolCall for deregisterValidatorCall {
13369            type Parameters<'a> = ();
13370            type Token<'a> = <Self::Parameters<
13371                'a,
13372            > as alloy_sol_types::SolType>::Token<'a>;
13373            type Return = deregisterValidatorReturn;
13374            type ReturnTuple<'a> = ();
13375            type ReturnToken<'a> = <Self::ReturnTuple<
13376                'a,
13377            > as alloy_sol_types::SolType>::Token<'a>;
13378            const SIGNATURE: &'static str = "deregisterValidator()";
13379            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
13380            #[inline]
13381            fn new<'a>(
13382                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13383            ) -> Self {
13384                tuple.into()
13385            }
13386            #[inline]
13387            fn tokenize(&self) -> Self::Token<'_> {
13388                ()
13389            }
13390            #[inline]
13391            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13392                deregisterValidatorReturn::_tokenize(ret)
13393            }
13394            #[inline]
13395            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13396                <Self::ReturnTuple<
13397                    '_,
13398                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13399                    .map(Into::into)
13400            }
13401            #[inline]
13402            fn abi_decode_returns_validate(
13403                data: &[u8],
13404            ) -> alloy_sol_types::Result<Self::Return> {
13405                <Self::ReturnTuple<
13406                    '_,
13407                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13408                    .map(Into::into)
13409            }
13410        }
13411    };
13412    #[derive(serde::Serialize, serde::Deserialize)]
13413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13414    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
13415```solidity
13416function exitEscrowPeriod() external view returns (uint256);
13417```*/
13418    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13419    #[derive(Clone)]
13420    pub struct exitEscrowPeriodCall;
13421    #[derive(serde::Serialize, serde::Deserialize)]
13422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13423    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
13424    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13425    #[derive(Clone)]
13426    pub struct exitEscrowPeriodReturn {
13427        #[allow(missing_docs)]
13428        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13429    }
13430    #[allow(
13431        non_camel_case_types,
13432        non_snake_case,
13433        clippy::pub_underscore_fields,
13434        clippy::style
13435    )]
13436    const _: () = {
13437        use alloy::sol_types as alloy_sol_types;
13438        {
13439            #[doc(hidden)]
13440            #[allow(dead_code)]
13441            type UnderlyingSolTuple<'a> = ();
13442            #[doc(hidden)]
13443            type UnderlyingRustTuple<'a> = ();
13444            #[cfg(test)]
13445            #[allow(dead_code, unreachable_patterns)]
13446            fn _type_assertion(
13447                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13448            ) {
13449                match _t {
13450                    alloy_sol_types::private::AssertTypeEq::<
13451                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13452                    >(_) => {}
13453                }
13454            }
13455            #[automatically_derived]
13456            #[doc(hidden)]
13457            impl ::core::convert::From<exitEscrowPeriodCall>
13458            for UnderlyingRustTuple<'_> {
13459                fn from(value: exitEscrowPeriodCall) -> Self {
13460                    ()
13461                }
13462            }
13463            #[automatically_derived]
13464            #[doc(hidden)]
13465            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13466            for exitEscrowPeriodCall {
13467                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13468                    Self
13469                }
13470            }
13471        }
13472        {
13473            #[doc(hidden)]
13474            #[allow(dead_code)]
13475            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13476            #[doc(hidden)]
13477            type UnderlyingRustTuple<'a> = (
13478                alloy::sol_types::private::primitives::aliases::U256,
13479            );
13480            #[cfg(test)]
13481            #[allow(dead_code, unreachable_patterns)]
13482            fn _type_assertion(
13483                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13484            ) {
13485                match _t {
13486                    alloy_sol_types::private::AssertTypeEq::<
13487                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13488                    >(_) => {}
13489                }
13490            }
13491            #[automatically_derived]
13492            #[doc(hidden)]
13493            impl ::core::convert::From<exitEscrowPeriodReturn>
13494            for UnderlyingRustTuple<'_> {
13495                fn from(value: exitEscrowPeriodReturn) -> Self {
13496                    (value._0,)
13497                }
13498            }
13499            #[automatically_derived]
13500            #[doc(hidden)]
13501            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13502            for exitEscrowPeriodReturn {
13503                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13504                    Self { _0: tuple.0 }
13505                }
13506            }
13507        }
13508        #[automatically_derived]
13509        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
13510            type Parameters<'a> = ();
13511            type Token<'a> = <Self::Parameters<
13512                'a,
13513            > as alloy_sol_types::SolType>::Token<'a>;
13514            type Return = alloy::sol_types::private::primitives::aliases::U256;
13515            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13516            type ReturnToken<'a> = <Self::ReturnTuple<
13517                'a,
13518            > as alloy_sol_types::SolType>::Token<'a>;
13519            const SIGNATURE: &'static str = "exitEscrowPeriod()";
13520            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
13521            #[inline]
13522            fn new<'a>(
13523                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13524            ) -> Self {
13525                tuple.into()
13526            }
13527            #[inline]
13528            fn tokenize(&self) -> Self::Token<'_> {
13529                ()
13530            }
13531            #[inline]
13532            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13533                (
13534                    <alloy::sol_types::sol_data::Uint<
13535                        256,
13536                    > as alloy_sol_types::SolType>::tokenize(ret),
13537                )
13538            }
13539            #[inline]
13540            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13541                <Self::ReturnTuple<
13542                    '_,
13543                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13544                    .map(|r| {
13545                        let r: exitEscrowPeriodReturn = r.into();
13546                        r._0
13547                    })
13548            }
13549            #[inline]
13550            fn abi_decode_returns_validate(
13551                data: &[u8],
13552            ) -> alloy_sol_types::Result<Self::Return> {
13553                <Self::ReturnTuple<
13554                    '_,
13555                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13556                    .map(|r| {
13557                        let r: exitEscrowPeriodReturn = r.into();
13558                        r._0
13559                    })
13560            }
13561        }
13562    };
13563    #[derive(serde::Serialize, serde::Deserialize)]
13564    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13565    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
13566```solidity
13567function getRoleAdmin(bytes32 role) external view returns (bytes32);
13568```*/
13569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13570    #[derive(Clone)]
13571    pub struct getRoleAdminCall {
13572        #[allow(missing_docs)]
13573        pub role: alloy::sol_types::private::FixedBytes<32>,
13574    }
13575    #[derive(serde::Serialize, serde::Deserialize)]
13576    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13577    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
13578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13579    #[derive(Clone)]
13580    pub struct getRoleAdminReturn {
13581        #[allow(missing_docs)]
13582        pub _0: alloy::sol_types::private::FixedBytes<32>,
13583    }
13584    #[allow(
13585        non_camel_case_types,
13586        non_snake_case,
13587        clippy::pub_underscore_fields,
13588        clippy::style
13589    )]
13590    const _: () = {
13591        use alloy::sol_types as alloy_sol_types;
13592        {
13593            #[doc(hidden)]
13594            #[allow(dead_code)]
13595            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13596            #[doc(hidden)]
13597            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13598            #[cfg(test)]
13599            #[allow(dead_code, unreachable_patterns)]
13600            fn _type_assertion(
13601                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13602            ) {
13603                match _t {
13604                    alloy_sol_types::private::AssertTypeEq::<
13605                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13606                    >(_) => {}
13607                }
13608            }
13609            #[automatically_derived]
13610            #[doc(hidden)]
13611            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
13612                fn from(value: getRoleAdminCall) -> Self {
13613                    (value.role,)
13614                }
13615            }
13616            #[automatically_derived]
13617            #[doc(hidden)]
13618            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
13619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13620                    Self { role: tuple.0 }
13621                }
13622            }
13623        }
13624        {
13625            #[doc(hidden)]
13626            #[allow(dead_code)]
13627            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13628            #[doc(hidden)]
13629            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13630            #[cfg(test)]
13631            #[allow(dead_code, unreachable_patterns)]
13632            fn _type_assertion(
13633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13634            ) {
13635                match _t {
13636                    alloy_sol_types::private::AssertTypeEq::<
13637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13638                    >(_) => {}
13639                }
13640            }
13641            #[automatically_derived]
13642            #[doc(hidden)]
13643            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
13644                fn from(value: getRoleAdminReturn) -> Self {
13645                    (value._0,)
13646                }
13647            }
13648            #[automatically_derived]
13649            #[doc(hidden)]
13650            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
13651                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13652                    Self { _0: tuple.0 }
13653                }
13654            }
13655        }
13656        #[automatically_derived]
13657        impl alloy_sol_types::SolCall for getRoleAdminCall {
13658            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13659            type Token<'a> = <Self::Parameters<
13660                'a,
13661            > as alloy_sol_types::SolType>::Token<'a>;
13662            type Return = alloy::sol_types::private::FixedBytes<32>;
13663            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13664            type ReturnToken<'a> = <Self::ReturnTuple<
13665                'a,
13666            > as alloy_sol_types::SolType>::Token<'a>;
13667            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
13668            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
13669            #[inline]
13670            fn new<'a>(
13671                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13672            ) -> Self {
13673                tuple.into()
13674            }
13675            #[inline]
13676            fn tokenize(&self) -> Self::Token<'_> {
13677                (
13678                    <alloy::sol_types::sol_data::FixedBytes<
13679                        32,
13680                    > as alloy_sol_types::SolType>::tokenize(&self.role),
13681                )
13682            }
13683            #[inline]
13684            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13685                (
13686                    <alloy::sol_types::sol_data::FixedBytes<
13687                        32,
13688                    > as alloy_sol_types::SolType>::tokenize(ret),
13689                )
13690            }
13691            #[inline]
13692            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13693                <Self::ReturnTuple<
13694                    '_,
13695                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13696                    .map(|r| {
13697                        let r: getRoleAdminReturn = r.into();
13698                        r._0
13699                    })
13700            }
13701            #[inline]
13702            fn abi_decode_returns_validate(
13703                data: &[u8],
13704            ) -> alloy_sol_types::Result<Self::Return> {
13705                <Self::ReturnTuple<
13706                    '_,
13707                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13708                    .map(|r| {
13709                        let r: getRoleAdminReturn = r.into();
13710                        r._0
13711                    })
13712            }
13713        }
13714    };
13715    #[derive(serde::Serialize, serde::Deserialize)]
13716    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13717    /**Function with signature `getUndelegation(address,address)` and selector `0xbb60bfb0`.
13718```solidity
13719function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
13720```*/
13721    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13722    #[derive(Clone)]
13723    pub struct getUndelegationCall {
13724        #[allow(missing_docs)]
13725        pub validator: alloy::sol_types::private::Address,
13726        #[allow(missing_docs)]
13727        pub delegator: alloy::sol_types::private::Address,
13728    }
13729    #[derive(serde::Serialize, serde::Deserialize)]
13730    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13731    ///Container type for the return parameters of the [`getUndelegation(address,address)`](getUndelegationCall) function.
13732    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13733    #[derive(Clone)]
13734    pub struct getUndelegationReturn {
13735        #[allow(missing_docs)]
13736        pub id: u64,
13737        #[allow(missing_docs)]
13738        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13739        #[allow(missing_docs)]
13740        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
13741    }
13742    #[allow(
13743        non_camel_case_types,
13744        non_snake_case,
13745        clippy::pub_underscore_fields,
13746        clippy::style
13747    )]
13748    const _: () = {
13749        use alloy::sol_types as alloy_sol_types;
13750        {
13751            #[doc(hidden)]
13752            #[allow(dead_code)]
13753            type UnderlyingSolTuple<'a> = (
13754                alloy::sol_types::sol_data::Address,
13755                alloy::sol_types::sol_data::Address,
13756            );
13757            #[doc(hidden)]
13758            type UnderlyingRustTuple<'a> = (
13759                alloy::sol_types::private::Address,
13760                alloy::sol_types::private::Address,
13761            );
13762            #[cfg(test)]
13763            #[allow(dead_code, unreachable_patterns)]
13764            fn _type_assertion(
13765                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13766            ) {
13767                match _t {
13768                    alloy_sol_types::private::AssertTypeEq::<
13769                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13770                    >(_) => {}
13771                }
13772            }
13773            #[automatically_derived]
13774            #[doc(hidden)]
13775            impl ::core::convert::From<getUndelegationCall> for UnderlyingRustTuple<'_> {
13776                fn from(value: getUndelegationCall) -> Self {
13777                    (value.validator, value.delegator)
13778                }
13779            }
13780            #[automatically_derived]
13781            #[doc(hidden)]
13782            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getUndelegationCall {
13783                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13784                    Self {
13785                        validator: tuple.0,
13786                        delegator: tuple.1,
13787                    }
13788                }
13789            }
13790        }
13791        {
13792            #[doc(hidden)]
13793            #[allow(dead_code)]
13794            type UnderlyingSolTuple<'a> = (
13795                alloy::sol_types::sol_data::Uint<64>,
13796                alloy::sol_types::sol_data::Uint<256>,
13797                alloy::sol_types::sol_data::Uint<256>,
13798            );
13799            #[doc(hidden)]
13800            type UnderlyingRustTuple<'a> = (
13801                u64,
13802                alloy::sol_types::private::primitives::aliases::U256,
13803                alloy::sol_types::private::primitives::aliases::U256,
13804            );
13805            #[cfg(test)]
13806            #[allow(dead_code, unreachable_patterns)]
13807            fn _type_assertion(
13808                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13809            ) {
13810                match _t {
13811                    alloy_sol_types::private::AssertTypeEq::<
13812                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13813                    >(_) => {}
13814                }
13815            }
13816            #[automatically_derived]
13817            #[doc(hidden)]
13818            impl ::core::convert::From<getUndelegationReturn>
13819            for UnderlyingRustTuple<'_> {
13820                fn from(value: getUndelegationReturn) -> Self {
13821                    (value.id, value.amount, value.unlocksAt)
13822                }
13823            }
13824            #[automatically_derived]
13825            #[doc(hidden)]
13826            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13827            for getUndelegationReturn {
13828                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13829                    Self {
13830                        id: tuple.0,
13831                        amount: tuple.1,
13832                        unlocksAt: tuple.2,
13833                    }
13834                }
13835            }
13836        }
13837        impl getUndelegationReturn {
13838            fn _tokenize(
13839                &self,
13840            ) -> <getUndelegationCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13841                (
13842                    <alloy::sol_types::sol_data::Uint<
13843                        64,
13844                    > as alloy_sol_types::SolType>::tokenize(&self.id),
13845                    <alloy::sol_types::sol_data::Uint<
13846                        256,
13847                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
13848                    <alloy::sol_types::sol_data::Uint<
13849                        256,
13850                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
13851                )
13852            }
13853        }
13854        #[automatically_derived]
13855        impl alloy_sol_types::SolCall for getUndelegationCall {
13856            type Parameters<'a> = (
13857                alloy::sol_types::sol_data::Address,
13858                alloy::sol_types::sol_data::Address,
13859            );
13860            type Token<'a> = <Self::Parameters<
13861                'a,
13862            > as alloy_sol_types::SolType>::Token<'a>;
13863            type Return = getUndelegationReturn;
13864            type ReturnTuple<'a> = (
13865                alloy::sol_types::sol_data::Uint<64>,
13866                alloy::sol_types::sol_data::Uint<256>,
13867                alloy::sol_types::sol_data::Uint<256>,
13868            );
13869            type ReturnToken<'a> = <Self::ReturnTuple<
13870                'a,
13871            > as alloy_sol_types::SolType>::Token<'a>;
13872            const SIGNATURE: &'static str = "getUndelegation(address,address)";
13873            const SELECTOR: [u8; 4] = [187u8, 96u8, 191u8, 176u8];
13874            #[inline]
13875            fn new<'a>(
13876                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13877            ) -> Self {
13878                tuple.into()
13879            }
13880            #[inline]
13881            fn tokenize(&self) -> Self::Token<'_> {
13882                (
13883                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13884                        &self.validator,
13885                    ),
13886                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13887                        &self.delegator,
13888                    ),
13889                )
13890            }
13891            #[inline]
13892            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13893                getUndelegationReturn::_tokenize(ret)
13894            }
13895            #[inline]
13896            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13897                <Self::ReturnTuple<
13898                    '_,
13899                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13900                    .map(Into::into)
13901            }
13902            #[inline]
13903            fn abi_decode_returns_validate(
13904                data: &[u8],
13905            ) -> alloy_sol_types::Result<Self::Return> {
13906                <Self::ReturnTuple<
13907                    '_,
13908                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13909                    .map(Into::into)
13910            }
13911        }
13912    };
13913    #[derive(serde::Serialize, serde::Deserialize)]
13914    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13915    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
13916```solidity
13917function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
13918```*/
13919    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13920    #[derive(Clone)]
13921    pub struct getVersionCall;
13922    #[derive(serde::Serialize, serde::Deserialize)]
13923    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13924    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
13925    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13926    #[derive(Clone)]
13927    pub struct getVersionReturn {
13928        #[allow(missing_docs)]
13929        pub majorVersion: u8,
13930        #[allow(missing_docs)]
13931        pub minorVersion: u8,
13932        #[allow(missing_docs)]
13933        pub patchVersion: u8,
13934    }
13935    #[allow(
13936        non_camel_case_types,
13937        non_snake_case,
13938        clippy::pub_underscore_fields,
13939        clippy::style
13940    )]
13941    const _: () = {
13942        use alloy::sol_types as alloy_sol_types;
13943        {
13944            #[doc(hidden)]
13945            #[allow(dead_code)]
13946            type UnderlyingSolTuple<'a> = ();
13947            #[doc(hidden)]
13948            type UnderlyingRustTuple<'a> = ();
13949            #[cfg(test)]
13950            #[allow(dead_code, unreachable_patterns)]
13951            fn _type_assertion(
13952                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13953            ) {
13954                match _t {
13955                    alloy_sol_types::private::AssertTypeEq::<
13956                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13957                    >(_) => {}
13958                }
13959            }
13960            #[automatically_derived]
13961            #[doc(hidden)]
13962            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
13963                fn from(value: getVersionCall) -> Self {
13964                    ()
13965                }
13966            }
13967            #[automatically_derived]
13968            #[doc(hidden)]
13969            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
13970                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13971                    Self
13972                }
13973            }
13974        }
13975        {
13976            #[doc(hidden)]
13977            #[allow(dead_code)]
13978            type UnderlyingSolTuple<'a> = (
13979                alloy::sol_types::sol_data::Uint<8>,
13980                alloy::sol_types::sol_data::Uint<8>,
13981                alloy::sol_types::sol_data::Uint<8>,
13982            );
13983            #[doc(hidden)]
13984            type UnderlyingRustTuple<'a> = (u8, u8, u8);
13985            #[cfg(test)]
13986            #[allow(dead_code, unreachable_patterns)]
13987            fn _type_assertion(
13988                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13989            ) {
13990                match _t {
13991                    alloy_sol_types::private::AssertTypeEq::<
13992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13993                    >(_) => {}
13994                }
13995            }
13996            #[automatically_derived]
13997            #[doc(hidden)]
13998            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
13999                fn from(value: getVersionReturn) -> Self {
14000                    (value.majorVersion, value.minorVersion, value.patchVersion)
14001                }
14002            }
14003            #[automatically_derived]
14004            #[doc(hidden)]
14005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
14006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14007                    Self {
14008                        majorVersion: tuple.0,
14009                        minorVersion: tuple.1,
14010                        patchVersion: tuple.2,
14011                    }
14012                }
14013            }
14014        }
14015        impl getVersionReturn {
14016            fn _tokenize(
14017                &self,
14018            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14019                (
14020                    <alloy::sol_types::sol_data::Uint<
14021                        8,
14022                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
14023                    <alloy::sol_types::sol_data::Uint<
14024                        8,
14025                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
14026                    <alloy::sol_types::sol_data::Uint<
14027                        8,
14028                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
14029                )
14030            }
14031        }
14032        #[automatically_derived]
14033        impl alloy_sol_types::SolCall for getVersionCall {
14034            type Parameters<'a> = ();
14035            type Token<'a> = <Self::Parameters<
14036                'a,
14037            > as alloy_sol_types::SolType>::Token<'a>;
14038            type Return = getVersionReturn;
14039            type ReturnTuple<'a> = (
14040                alloy::sol_types::sol_data::Uint<8>,
14041                alloy::sol_types::sol_data::Uint<8>,
14042                alloy::sol_types::sol_data::Uint<8>,
14043            );
14044            type ReturnToken<'a> = <Self::ReturnTuple<
14045                'a,
14046            > as alloy_sol_types::SolType>::Token<'a>;
14047            const SIGNATURE: &'static str = "getVersion()";
14048            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
14049            #[inline]
14050            fn new<'a>(
14051                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14052            ) -> Self {
14053                tuple.into()
14054            }
14055            #[inline]
14056            fn tokenize(&self) -> Self::Token<'_> {
14057                ()
14058            }
14059            #[inline]
14060            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14061                getVersionReturn::_tokenize(ret)
14062            }
14063            #[inline]
14064            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14065                <Self::ReturnTuple<
14066                    '_,
14067                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14068                    .map(Into::into)
14069            }
14070            #[inline]
14071            fn abi_decode_returns_validate(
14072                data: &[u8],
14073            ) -> alloy_sol_types::Result<Self::Return> {
14074                <Self::ReturnTuple<
14075                    '_,
14076                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14077                    .map(Into::into)
14078            }
14079        }
14080    };
14081    #[derive(serde::Serialize, serde::Deserialize)]
14082    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14083    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
14084```solidity
14085function grantRole(bytes32 role, address account) external;
14086```*/
14087    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14088    #[derive(Clone)]
14089    pub struct grantRoleCall {
14090        #[allow(missing_docs)]
14091        pub role: alloy::sol_types::private::FixedBytes<32>,
14092        #[allow(missing_docs)]
14093        pub account: alloy::sol_types::private::Address,
14094    }
14095    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
14096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14097    #[derive(Clone)]
14098    pub struct grantRoleReturn {}
14099    #[allow(
14100        non_camel_case_types,
14101        non_snake_case,
14102        clippy::pub_underscore_fields,
14103        clippy::style
14104    )]
14105    const _: () = {
14106        use alloy::sol_types as alloy_sol_types;
14107        {
14108            #[doc(hidden)]
14109            #[allow(dead_code)]
14110            type UnderlyingSolTuple<'a> = (
14111                alloy::sol_types::sol_data::FixedBytes<32>,
14112                alloy::sol_types::sol_data::Address,
14113            );
14114            #[doc(hidden)]
14115            type UnderlyingRustTuple<'a> = (
14116                alloy::sol_types::private::FixedBytes<32>,
14117                alloy::sol_types::private::Address,
14118            );
14119            #[cfg(test)]
14120            #[allow(dead_code, unreachable_patterns)]
14121            fn _type_assertion(
14122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14123            ) {
14124                match _t {
14125                    alloy_sol_types::private::AssertTypeEq::<
14126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14127                    >(_) => {}
14128                }
14129            }
14130            #[automatically_derived]
14131            #[doc(hidden)]
14132            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
14133                fn from(value: grantRoleCall) -> Self {
14134                    (value.role, value.account)
14135                }
14136            }
14137            #[automatically_derived]
14138            #[doc(hidden)]
14139            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
14140                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14141                    Self {
14142                        role: tuple.0,
14143                        account: tuple.1,
14144                    }
14145                }
14146            }
14147        }
14148        {
14149            #[doc(hidden)]
14150            #[allow(dead_code)]
14151            type UnderlyingSolTuple<'a> = ();
14152            #[doc(hidden)]
14153            type UnderlyingRustTuple<'a> = ();
14154            #[cfg(test)]
14155            #[allow(dead_code, unreachable_patterns)]
14156            fn _type_assertion(
14157                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14158            ) {
14159                match _t {
14160                    alloy_sol_types::private::AssertTypeEq::<
14161                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14162                    >(_) => {}
14163                }
14164            }
14165            #[automatically_derived]
14166            #[doc(hidden)]
14167            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
14168                fn from(value: grantRoleReturn) -> Self {
14169                    ()
14170                }
14171            }
14172            #[automatically_derived]
14173            #[doc(hidden)]
14174            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
14175                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14176                    Self {}
14177                }
14178            }
14179        }
14180        impl grantRoleReturn {
14181            fn _tokenize(
14182                &self,
14183            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14184                ()
14185            }
14186        }
14187        #[automatically_derived]
14188        impl alloy_sol_types::SolCall for grantRoleCall {
14189            type Parameters<'a> = (
14190                alloy::sol_types::sol_data::FixedBytes<32>,
14191                alloy::sol_types::sol_data::Address,
14192            );
14193            type Token<'a> = <Self::Parameters<
14194                'a,
14195            > as alloy_sol_types::SolType>::Token<'a>;
14196            type Return = grantRoleReturn;
14197            type ReturnTuple<'a> = ();
14198            type ReturnToken<'a> = <Self::ReturnTuple<
14199                'a,
14200            > as alloy_sol_types::SolType>::Token<'a>;
14201            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
14202            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
14203            #[inline]
14204            fn new<'a>(
14205                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14206            ) -> Self {
14207                tuple.into()
14208            }
14209            #[inline]
14210            fn tokenize(&self) -> Self::Token<'_> {
14211                (
14212                    <alloy::sol_types::sol_data::FixedBytes<
14213                        32,
14214                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14215                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14216                        &self.account,
14217                    ),
14218                )
14219            }
14220            #[inline]
14221            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14222                grantRoleReturn::_tokenize(ret)
14223            }
14224            #[inline]
14225            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14226                <Self::ReturnTuple<
14227                    '_,
14228                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14229                    .map(Into::into)
14230            }
14231            #[inline]
14232            fn abi_decode_returns_validate(
14233                data: &[u8],
14234            ) -> alloy_sol_types::Result<Self::Return> {
14235                <Self::ReturnTuple<
14236                    '_,
14237                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14238                    .map(Into::into)
14239            }
14240        }
14241    };
14242    #[derive(serde::Serialize, serde::Deserialize)]
14243    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14244    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
14245```solidity
14246function hasRole(bytes32 role, address account) external view returns (bool);
14247```*/
14248    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14249    #[derive(Clone)]
14250    pub struct hasRoleCall {
14251        #[allow(missing_docs)]
14252        pub role: alloy::sol_types::private::FixedBytes<32>,
14253        #[allow(missing_docs)]
14254        pub account: alloy::sol_types::private::Address,
14255    }
14256    #[derive(serde::Serialize, serde::Deserialize)]
14257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14258    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
14259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14260    #[derive(Clone)]
14261    pub struct hasRoleReturn {
14262        #[allow(missing_docs)]
14263        pub _0: bool,
14264    }
14265    #[allow(
14266        non_camel_case_types,
14267        non_snake_case,
14268        clippy::pub_underscore_fields,
14269        clippy::style
14270    )]
14271    const _: () = {
14272        use alloy::sol_types as alloy_sol_types;
14273        {
14274            #[doc(hidden)]
14275            #[allow(dead_code)]
14276            type UnderlyingSolTuple<'a> = (
14277                alloy::sol_types::sol_data::FixedBytes<32>,
14278                alloy::sol_types::sol_data::Address,
14279            );
14280            #[doc(hidden)]
14281            type UnderlyingRustTuple<'a> = (
14282                alloy::sol_types::private::FixedBytes<32>,
14283                alloy::sol_types::private::Address,
14284            );
14285            #[cfg(test)]
14286            #[allow(dead_code, unreachable_patterns)]
14287            fn _type_assertion(
14288                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14289            ) {
14290                match _t {
14291                    alloy_sol_types::private::AssertTypeEq::<
14292                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14293                    >(_) => {}
14294                }
14295            }
14296            #[automatically_derived]
14297            #[doc(hidden)]
14298            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
14299                fn from(value: hasRoleCall) -> Self {
14300                    (value.role, value.account)
14301                }
14302            }
14303            #[automatically_derived]
14304            #[doc(hidden)]
14305            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
14306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14307                    Self {
14308                        role: tuple.0,
14309                        account: tuple.1,
14310                    }
14311                }
14312            }
14313        }
14314        {
14315            #[doc(hidden)]
14316            #[allow(dead_code)]
14317            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14318            #[doc(hidden)]
14319            type UnderlyingRustTuple<'a> = (bool,);
14320            #[cfg(test)]
14321            #[allow(dead_code, unreachable_patterns)]
14322            fn _type_assertion(
14323                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14324            ) {
14325                match _t {
14326                    alloy_sol_types::private::AssertTypeEq::<
14327                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14328                    >(_) => {}
14329                }
14330            }
14331            #[automatically_derived]
14332            #[doc(hidden)]
14333            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
14334                fn from(value: hasRoleReturn) -> Self {
14335                    (value._0,)
14336                }
14337            }
14338            #[automatically_derived]
14339            #[doc(hidden)]
14340            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
14341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14342                    Self { _0: tuple.0 }
14343                }
14344            }
14345        }
14346        #[automatically_derived]
14347        impl alloy_sol_types::SolCall for hasRoleCall {
14348            type Parameters<'a> = (
14349                alloy::sol_types::sol_data::FixedBytes<32>,
14350                alloy::sol_types::sol_data::Address,
14351            );
14352            type Token<'a> = <Self::Parameters<
14353                'a,
14354            > as alloy_sol_types::SolType>::Token<'a>;
14355            type Return = bool;
14356            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14357            type ReturnToken<'a> = <Self::ReturnTuple<
14358                'a,
14359            > as alloy_sol_types::SolType>::Token<'a>;
14360            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
14361            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
14362            #[inline]
14363            fn new<'a>(
14364                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14365            ) -> Self {
14366                tuple.into()
14367            }
14368            #[inline]
14369            fn tokenize(&self) -> Self::Token<'_> {
14370                (
14371                    <alloy::sol_types::sol_data::FixedBytes<
14372                        32,
14373                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14374                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14375                        &self.account,
14376                    ),
14377                )
14378            }
14379            #[inline]
14380            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14381                (
14382                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
14383                        ret,
14384                    ),
14385                )
14386            }
14387            #[inline]
14388            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14389                <Self::ReturnTuple<
14390                    '_,
14391                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14392                    .map(|r| {
14393                        let r: hasRoleReturn = r.into();
14394                        r._0
14395                    })
14396            }
14397            #[inline]
14398            fn abi_decode_returns_validate(
14399                data: &[u8],
14400            ) -> alloy_sol_types::Result<Self::Return> {
14401                <Self::ReturnTuple<
14402                    '_,
14403                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14404                    .map(|r| {
14405                        let r: hasRoleReturn = r.into();
14406                        r._0
14407                    })
14408            }
14409        }
14410    };
14411    #[derive(serde::Serialize, serde::Deserialize)]
14412    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14413    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
14414```solidity
14415function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
14416```*/
14417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14418    #[derive(Clone)]
14419    pub struct initializeCall {
14420        #[allow(missing_docs)]
14421        pub _tokenAddress: alloy::sol_types::private::Address,
14422        #[allow(missing_docs)]
14423        pub _lightClientAddress: alloy::sol_types::private::Address,
14424        #[allow(missing_docs)]
14425        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
14426        #[allow(missing_docs)]
14427        pub _timelock: alloy::sol_types::private::Address,
14428    }
14429    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
14430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14431    #[derive(Clone)]
14432    pub struct initializeReturn {}
14433    #[allow(
14434        non_camel_case_types,
14435        non_snake_case,
14436        clippy::pub_underscore_fields,
14437        clippy::style
14438    )]
14439    const _: () = {
14440        use alloy::sol_types as alloy_sol_types;
14441        {
14442            #[doc(hidden)]
14443            #[allow(dead_code)]
14444            type UnderlyingSolTuple<'a> = (
14445                alloy::sol_types::sol_data::Address,
14446                alloy::sol_types::sol_data::Address,
14447                alloy::sol_types::sol_data::Uint<256>,
14448                alloy::sol_types::sol_data::Address,
14449            );
14450            #[doc(hidden)]
14451            type UnderlyingRustTuple<'a> = (
14452                alloy::sol_types::private::Address,
14453                alloy::sol_types::private::Address,
14454                alloy::sol_types::private::primitives::aliases::U256,
14455                alloy::sol_types::private::Address,
14456            );
14457            #[cfg(test)]
14458            #[allow(dead_code, unreachable_patterns)]
14459            fn _type_assertion(
14460                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14461            ) {
14462                match _t {
14463                    alloy_sol_types::private::AssertTypeEq::<
14464                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14465                    >(_) => {}
14466                }
14467            }
14468            #[automatically_derived]
14469            #[doc(hidden)]
14470            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
14471                fn from(value: initializeCall) -> Self {
14472                    (
14473                        value._tokenAddress,
14474                        value._lightClientAddress,
14475                        value._exitEscrowPeriod,
14476                        value._timelock,
14477                    )
14478                }
14479            }
14480            #[automatically_derived]
14481            #[doc(hidden)]
14482            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
14483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14484                    Self {
14485                        _tokenAddress: tuple.0,
14486                        _lightClientAddress: tuple.1,
14487                        _exitEscrowPeriod: tuple.2,
14488                        _timelock: tuple.3,
14489                    }
14490                }
14491            }
14492        }
14493        {
14494            #[doc(hidden)]
14495            #[allow(dead_code)]
14496            type UnderlyingSolTuple<'a> = ();
14497            #[doc(hidden)]
14498            type UnderlyingRustTuple<'a> = ();
14499            #[cfg(test)]
14500            #[allow(dead_code, unreachable_patterns)]
14501            fn _type_assertion(
14502                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14503            ) {
14504                match _t {
14505                    alloy_sol_types::private::AssertTypeEq::<
14506                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14507                    >(_) => {}
14508                }
14509            }
14510            #[automatically_derived]
14511            #[doc(hidden)]
14512            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
14513                fn from(value: initializeReturn) -> Self {
14514                    ()
14515                }
14516            }
14517            #[automatically_derived]
14518            #[doc(hidden)]
14519            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
14520                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14521                    Self {}
14522                }
14523            }
14524        }
14525        impl initializeReturn {
14526            fn _tokenize(
14527                &self,
14528            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14529                ()
14530            }
14531        }
14532        #[automatically_derived]
14533        impl alloy_sol_types::SolCall for initializeCall {
14534            type Parameters<'a> = (
14535                alloy::sol_types::sol_data::Address,
14536                alloy::sol_types::sol_data::Address,
14537                alloy::sol_types::sol_data::Uint<256>,
14538                alloy::sol_types::sol_data::Address,
14539            );
14540            type Token<'a> = <Self::Parameters<
14541                'a,
14542            > as alloy_sol_types::SolType>::Token<'a>;
14543            type Return = initializeReturn;
14544            type ReturnTuple<'a> = ();
14545            type ReturnToken<'a> = <Self::ReturnTuple<
14546                'a,
14547            > as alloy_sol_types::SolType>::Token<'a>;
14548            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
14549            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
14550            #[inline]
14551            fn new<'a>(
14552                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14553            ) -> Self {
14554                tuple.into()
14555            }
14556            #[inline]
14557            fn tokenize(&self) -> Self::Token<'_> {
14558                (
14559                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14560                        &self._tokenAddress,
14561                    ),
14562                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14563                        &self._lightClientAddress,
14564                    ),
14565                    <alloy::sol_types::sol_data::Uint<
14566                        256,
14567                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
14568                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14569                        &self._timelock,
14570                    ),
14571                )
14572            }
14573            #[inline]
14574            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14575                initializeReturn::_tokenize(ret)
14576            }
14577            #[inline]
14578            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14579                <Self::ReturnTuple<
14580                    '_,
14581                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14582                    .map(Into::into)
14583            }
14584            #[inline]
14585            fn abi_decode_returns_validate(
14586                data: &[u8],
14587            ) -> alloy_sol_types::Result<Self::Return> {
14588                <Self::ReturnTuple<
14589                    '_,
14590                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14591                    .map(Into::into)
14592            }
14593        }
14594    };
14595    #[derive(serde::Serialize, serde::Deserialize)]
14596    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14597    /**Function with signature `initializeV2(address,address,uint256,(address,uint16)[])` and selector `0x52780b6e`.
14598```solidity
14599function initializeV2(address pauser, address admin, uint256 initialActiveStake, InitialCommission[] memory initialCommissions) external;
14600```*/
14601    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14602    #[derive(Clone)]
14603    pub struct initializeV2Call {
14604        #[allow(missing_docs)]
14605        pub pauser: alloy::sol_types::private::Address,
14606        #[allow(missing_docs)]
14607        pub admin: alloy::sol_types::private::Address,
14608        #[allow(missing_docs)]
14609        pub initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
14610        #[allow(missing_docs)]
14611        pub initialCommissions: alloy::sol_types::private::Vec<
14612            <InitialCommission as alloy::sol_types::SolType>::RustType,
14613        >,
14614    }
14615    ///Container type for the return parameters of the [`initializeV2(address,address,uint256,(address,uint16)[])`](initializeV2Call) function.
14616    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14617    #[derive(Clone)]
14618    pub struct initializeV2Return {}
14619    #[allow(
14620        non_camel_case_types,
14621        non_snake_case,
14622        clippy::pub_underscore_fields,
14623        clippy::style
14624    )]
14625    const _: () = {
14626        use alloy::sol_types as alloy_sol_types;
14627        {
14628            #[doc(hidden)]
14629            #[allow(dead_code)]
14630            type UnderlyingSolTuple<'a> = (
14631                alloy::sol_types::sol_data::Address,
14632                alloy::sol_types::sol_data::Address,
14633                alloy::sol_types::sol_data::Uint<256>,
14634                alloy::sol_types::sol_data::Array<InitialCommission>,
14635            );
14636            #[doc(hidden)]
14637            type UnderlyingRustTuple<'a> = (
14638                alloy::sol_types::private::Address,
14639                alloy::sol_types::private::Address,
14640                alloy::sol_types::private::primitives::aliases::U256,
14641                alloy::sol_types::private::Vec<
14642                    <InitialCommission as alloy::sol_types::SolType>::RustType,
14643                >,
14644            );
14645            #[cfg(test)]
14646            #[allow(dead_code, unreachable_patterns)]
14647            fn _type_assertion(
14648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14649            ) {
14650                match _t {
14651                    alloy_sol_types::private::AssertTypeEq::<
14652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14653                    >(_) => {}
14654                }
14655            }
14656            #[automatically_derived]
14657            #[doc(hidden)]
14658            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
14659                fn from(value: initializeV2Call) -> Self {
14660                    (
14661                        value.pauser,
14662                        value.admin,
14663                        value.initialActiveStake,
14664                        value.initialCommissions,
14665                    )
14666                }
14667            }
14668            #[automatically_derived]
14669            #[doc(hidden)]
14670            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
14671                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14672                    Self {
14673                        pauser: tuple.0,
14674                        admin: tuple.1,
14675                        initialActiveStake: tuple.2,
14676                        initialCommissions: tuple.3,
14677                    }
14678                }
14679            }
14680        }
14681        {
14682            #[doc(hidden)]
14683            #[allow(dead_code)]
14684            type UnderlyingSolTuple<'a> = ();
14685            #[doc(hidden)]
14686            type UnderlyingRustTuple<'a> = ();
14687            #[cfg(test)]
14688            #[allow(dead_code, unreachable_patterns)]
14689            fn _type_assertion(
14690                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14691            ) {
14692                match _t {
14693                    alloy_sol_types::private::AssertTypeEq::<
14694                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14695                    >(_) => {}
14696                }
14697            }
14698            #[automatically_derived]
14699            #[doc(hidden)]
14700            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
14701                fn from(value: initializeV2Return) -> Self {
14702                    ()
14703                }
14704            }
14705            #[automatically_derived]
14706            #[doc(hidden)]
14707            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
14708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14709                    Self {}
14710                }
14711            }
14712        }
14713        impl initializeV2Return {
14714            fn _tokenize(
14715                &self,
14716            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
14717                ()
14718            }
14719        }
14720        #[automatically_derived]
14721        impl alloy_sol_types::SolCall for initializeV2Call {
14722            type Parameters<'a> = (
14723                alloy::sol_types::sol_data::Address,
14724                alloy::sol_types::sol_data::Address,
14725                alloy::sol_types::sol_data::Uint<256>,
14726                alloy::sol_types::sol_data::Array<InitialCommission>,
14727            );
14728            type Token<'a> = <Self::Parameters<
14729                'a,
14730            > as alloy_sol_types::SolType>::Token<'a>;
14731            type Return = initializeV2Return;
14732            type ReturnTuple<'a> = ();
14733            type ReturnToken<'a> = <Self::ReturnTuple<
14734                'a,
14735            > as alloy_sol_types::SolType>::Token<'a>;
14736            const SIGNATURE: &'static str = "initializeV2(address,address,uint256,(address,uint16)[])";
14737            const SELECTOR: [u8; 4] = [82u8, 120u8, 11u8, 110u8];
14738            #[inline]
14739            fn new<'a>(
14740                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14741            ) -> Self {
14742                tuple.into()
14743            }
14744            #[inline]
14745            fn tokenize(&self) -> Self::Token<'_> {
14746                (
14747                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14748                        &self.pauser,
14749                    ),
14750                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14751                        &self.admin,
14752                    ),
14753                    <alloy::sol_types::sol_data::Uint<
14754                        256,
14755                    > as alloy_sol_types::SolType>::tokenize(&self.initialActiveStake),
14756                    <alloy::sol_types::sol_data::Array<
14757                        InitialCommission,
14758                    > as alloy_sol_types::SolType>::tokenize(&self.initialCommissions),
14759                )
14760            }
14761            #[inline]
14762            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14763                initializeV2Return::_tokenize(ret)
14764            }
14765            #[inline]
14766            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14767                <Self::ReturnTuple<
14768                    '_,
14769                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14770                    .map(Into::into)
14771            }
14772            #[inline]
14773            fn abi_decode_returns_validate(
14774                data: &[u8],
14775            ) -> alloy_sol_types::Result<Self::Return> {
14776                <Self::ReturnTuple<
14777                    '_,
14778                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14779                    .map(Into::into)
14780            }
14781        }
14782    };
14783    #[derive(serde::Serialize, serde::Deserialize)]
14784    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14785    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
14786```solidity
14787function initializedAtBlock() external view returns (uint256);
14788```*/
14789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14790    #[derive(Clone)]
14791    pub struct initializedAtBlockCall;
14792    #[derive(serde::Serialize, serde::Deserialize)]
14793    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14794    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
14795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14796    #[derive(Clone)]
14797    pub struct initializedAtBlockReturn {
14798        #[allow(missing_docs)]
14799        pub _0: alloy::sol_types::private::primitives::aliases::U256,
14800    }
14801    #[allow(
14802        non_camel_case_types,
14803        non_snake_case,
14804        clippy::pub_underscore_fields,
14805        clippy::style
14806    )]
14807    const _: () = {
14808        use alloy::sol_types as alloy_sol_types;
14809        {
14810            #[doc(hidden)]
14811            #[allow(dead_code)]
14812            type UnderlyingSolTuple<'a> = ();
14813            #[doc(hidden)]
14814            type UnderlyingRustTuple<'a> = ();
14815            #[cfg(test)]
14816            #[allow(dead_code, unreachable_patterns)]
14817            fn _type_assertion(
14818                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14819            ) {
14820                match _t {
14821                    alloy_sol_types::private::AssertTypeEq::<
14822                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14823                    >(_) => {}
14824                }
14825            }
14826            #[automatically_derived]
14827            #[doc(hidden)]
14828            impl ::core::convert::From<initializedAtBlockCall>
14829            for UnderlyingRustTuple<'_> {
14830                fn from(value: initializedAtBlockCall) -> Self {
14831                    ()
14832                }
14833            }
14834            #[automatically_derived]
14835            #[doc(hidden)]
14836            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14837            for initializedAtBlockCall {
14838                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14839                    Self
14840                }
14841            }
14842        }
14843        {
14844            #[doc(hidden)]
14845            #[allow(dead_code)]
14846            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14847            #[doc(hidden)]
14848            type UnderlyingRustTuple<'a> = (
14849                alloy::sol_types::private::primitives::aliases::U256,
14850            );
14851            #[cfg(test)]
14852            #[allow(dead_code, unreachable_patterns)]
14853            fn _type_assertion(
14854                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14855            ) {
14856                match _t {
14857                    alloy_sol_types::private::AssertTypeEq::<
14858                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14859                    >(_) => {}
14860                }
14861            }
14862            #[automatically_derived]
14863            #[doc(hidden)]
14864            impl ::core::convert::From<initializedAtBlockReturn>
14865            for UnderlyingRustTuple<'_> {
14866                fn from(value: initializedAtBlockReturn) -> Self {
14867                    (value._0,)
14868                }
14869            }
14870            #[automatically_derived]
14871            #[doc(hidden)]
14872            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14873            for initializedAtBlockReturn {
14874                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14875                    Self { _0: tuple.0 }
14876                }
14877            }
14878        }
14879        #[automatically_derived]
14880        impl alloy_sol_types::SolCall for initializedAtBlockCall {
14881            type Parameters<'a> = ();
14882            type Token<'a> = <Self::Parameters<
14883                'a,
14884            > as alloy_sol_types::SolType>::Token<'a>;
14885            type Return = alloy::sol_types::private::primitives::aliases::U256;
14886            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14887            type ReturnToken<'a> = <Self::ReturnTuple<
14888                'a,
14889            > as alloy_sol_types::SolType>::Token<'a>;
14890            const SIGNATURE: &'static str = "initializedAtBlock()";
14891            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
14892            #[inline]
14893            fn new<'a>(
14894                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14895            ) -> Self {
14896                tuple.into()
14897            }
14898            #[inline]
14899            fn tokenize(&self) -> Self::Token<'_> {
14900                ()
14901            }
14902            #[inline]
14903            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14904                (
14905                    <alloy::sol_types::sol_data::Uint<
14906                        256,
14907                    > as alloy_sol_types::SolType>::tokenize(ret),
14908                )
14909            }
14910            #[inline]
14911            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14912                <Self::ReturnTuple<
14913                    '_,
14914                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14915                    .map(|r| {
14916                        let r: initializedAtBlockReturn = r.into();
14917                        r._0
14918                    })
14919            }
14920            #[inline]
14921            fn abi_decode_returns_validate(
14922                data: &[u8],
14923            ) -> alloy_sol_types::Result<Self::Return> {
14924                <Self::ReturnTuple<
14925                    '_,
14926                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14927                    .map(|r| {
14928                        let r: initializedAtBlockReturn = r.into();
14929                        r._0
14930                    })
14931            }
14932        }
14933    };
14934    #[derive(serde::Serialize, serde::Deserialize)]
14935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14936    /**Function with signature `lightClient()` and selector `0xb5700e68`.
14937```solidity
14938function lightClient() external view returns (address);
14939```*/
14940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14941    #[derive(Clone)]
14942    pub struct lightClientCall;
14943    #[derive(serde::Serialize, serde::Deserialize)]
14944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14945    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
14946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14947    #[derive(Clone)]
14948    pub struct lightClientReturn {
14949        #[allow(missing_docs)]
14950        pub _0: alloy::sol_types::private::Address,
14951    }
14952    #[allow(
14953        non_camel_case_types,
14954        non_snake_case,
14955        clippy::pub_underscore_fields,
14956        clippy::style
14957    )]
14958    const _: () = {
14959        use alloy::sol_types as alloy_sol_types;
14960        {
14961            #[doc(hidden)]
14962            #[allow(dead_code)]
14963            type UnderlyingSolTuple<'a> = ();
14964            #[doc(hidden)]
14965            type UnderlyingRustTuple<'a> = ();
14966            #[cfg(test)]
14967            #[allow(dead_code, unreachable_patterns)]
14968            fn _type_assertion(
14969                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14970            ) {
14971                match _t {
14972                    alloy_sol_types::private::AssertTypeEq::<
14973                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14974                    >(_) => {}
14975                }
14976            }
14977            #[automatically_derived]
14978            #[doc(hidden)]
14979            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
14980                fn from(value: lightClientCall) -> Self {
14981                    ()
14982                }
14983            }
14984            #[automatically_derived]
14985            #[doc(hidden)]
14986            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
14987                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14988                    Self
14989                }
14990            }
14991        }
14992        {
14993            #[doc(hidden)]
14994            #[allow(dead_code)]
14995            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14996            #[doc(hidden)]
14997            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14998            #[cfg(test)]
14999            #[allow(dead_code, unreachable_patterns)]
15000            fn _type_assertion(
15001                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15002            ) {
15003                match _t {
15004                    alloy_sol_types::private::AssertTypeEq::<
15005                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15006                    >(_) => {}
15007                }
15008            }
15009            #[automatically_derived]
15010            #[doc(hidden)]
15011            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
15012                fn from(value: lightClientReturn) -> Self {
15013                    (value._0,)
15014                }
15015            }
15016            #[automatically_derived]
15017            #[doc(hidden)]
15018            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
15019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15020                    Self { _0: tuple.0 }
15021                }
15022            }
15023        }
15024        #[automatically_derived]
15025        impl alloy_sol_types::SolCall for lightClientCall {
15026            type Parameters<'a> = ();
15027            type Token<'a> = <Self::Parameters<
15028                'a,
15029            > as alloy_sol_types::SolType>::Token<'a>;
15030            type Return = alloy::sol_types::private::Address;
15031            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
15032            type ReturnToken<'a> = <Self::ReturnTuple<
15033                'a,
15034            > as alloy_sol_types::SolType>::Token<'a>;
15035            const SIGNATURE: &'static str = "lightClient()";
15036            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
15037            #[inline]
15038            fn new<'a>(
15039                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15040            ) -> Self {
15041                tuple.into()
15042            }
15043            #[inline]
15044            fn tokenize(&self) -> Self::Token<'_> {
15045                ()
15046            }
15047            #[inline]
15048            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15049                (
15050                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15051                        ret,
15052                    ),
15053                )
15054            }
15055            #[inline]
15056            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15057                <Self::ReturnTuple<
15058                    '_,
15059                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15060                    .map(|r| {
15061                        let r: lightClientReturn = r.into();
15062                        r._0
15063                    })
15064            }
15065            #[inline]
15066            fn abi_decode_returns_validate(
15067                data: &[u8],
15068            ) -> alloy_sol_types::Result<Self::Return> {
15069                <Self::ReturnTuple<
15070                    '_,
15071                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15072                    .map(|r| {
15073                        let r: lightClientReturn = r.into();
15074                        r._0
15075                    })
15076            }
15077        }
15078    };
15079    #[derive(serde::Serialize, serde::Deserialize)]
15080    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15081    /**Function with signature `maxCommissionIncrease()` and selector `0x3f3bb366`.
15082```solidity
15083function maxCommissionIncrease() external view returns (uint16);
15084```*/
15085    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15086    #[derive(Clone)]
15087    pub struct maxCommissionIncreaseCall;
15088    #[derive(serde::Serialize, serde::Deserialize)]
15089    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15090    ///Container type for the return parameters of the [`maxCommissionIncrease()`](maxCommissionIncreaseCall) function.
15091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15092    #[derive(Clone)]
15093    pub struct maxCommissionIncreaseReturn {
15094        #[allow(missing_docs)]
15095        pub _0: u16,
15096    }
15097    #[allow(
15098        non_camel_case_types,
15099        non_snake_case,
15100        clippy::pub_underscore_fields,
15101        clippy::style
15102    )]
15103    const _: () = {
15104        use alloy::sol_types as alloy_sol_types;
15105        {
15106            #[doc(hidden)]
15107            #[allow(dead_code)]
15108            type UnderlyingSolTuple<'a> = ();
15109            #[doc(hidden)]
15110            type UnderlyingRustTuple<'a> = ();
15111            #[cfg(test)]
15112            #[allow(dead_code, unreachable_patterns)]
15113            fn _type_assertion(
15114                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15115            ) {
15116                match _t {
15117                    alloy_sol_types::private::AssertTypeEq::<
15118                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15119                    >(_) => {}
15120                }
15121            }
15122            #[automatically_derived]
15123            #[doc(hidden)]
15124            impl ::core::convert::From<maxCommissionIncreaseCall>
15125            for UnderlyingRustTuple<'_> {
15126                fn from(value: maxCommissionIncreaseCall) -> Self {
15127                    ()
15128                }
15129            }
15130            #[automatically_derived]
15131            #[doc(hidden)]
15132            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15133            for maxCommissionIncreaseCall {
15134                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15135                    Self
15136                }
15137            }
15138        }
15139        {
15140            #[doc(hidden)]
15141            #[allow(dead_code)]
15142            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15143            #[doc(hidden)]
15144            type UnderlyingRustTuple<'a> = (u16,);
15145            #[cfg(test)]
15146            #[allow(dead_code, unreachable_patterns)]
15147            fn _type_assertion(
15148                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15149            ) {
15150                match _t {
15151                    alloy_sol_types::private::AssertTypeEq::<
15152                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15153                    >(_) => {}
15154                }
15155            }
15156            #[automatically_derived]
15157            #[doc(hidden)]
15158            impl ::core::convert::From<maxCommissionIncreaseReturn>
15159            for UnderlyingRustTuple<'_> {
15160                fn from(value: maxCommissionIncreaseReturn) -> Self {
15161                    (value._0,)
15162                }
15163            }
15164            #[automatically_derived]
15165            #[doc(hidden)]
15166            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15167            for maxCommissionIncreaseReturn {
15168                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15169                    Self { _0: tuple.0 }
15170                }
15171            }
15172        }
15173        #[automatically_derived]
15174        impl alloy_sol_types::SolCall for maxCommissionIncreaseCall {
15175            type Parameters<'a> = ();
15176            type Token<'a> = <Self::Parameters<
15177                'a,
15178            > as alloy_sol_types::SolType>::Token<'a>;
15179            type Return = u16;
15180            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15181            type ReturnToken<'a> = <Self::ReturnTuple<
15182                'a,
15183            > as alloy_sol_types::SolType>::Token<'a>;
15184            const SIGNATURE: &'static str = "maxCommissionIncrease()";
15185            const SELECTOR: [u8; 4] = [63u8, 59u8, 179u8, 102u8];
15186            #[inline]
15187            fn new<'a>(
15188                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15189            ) -> Self {
15190                tuple.into()
15191            }
15192            #[inline]
15193            fn tokenize(&self) -> Self::Token<'_> {
15194                ()
15195            }
15196            #[inline]
15197            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15198                (
15199                    <alloy::sol_types::sol_data::Uint<
15200                        16,
15201                    > as alloy_sol_types::SolType>::tokenize(ret),
15202                )
15203            }
15204            #[inline]
15205            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15206                <Self::ReturnTuple<
15207                    '_,
15208                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15209                    .map(|r| {
15210                        let r: maxCommissionIncreaseReturn = r.into();
15211                        r._0
15212                    })
15213            }
15214            #[inline]
15215            fn abi_decode_returns_validate(
15216                data: &[u8],
15217            ) -> alloy_sol_types::Result<Self::Return> {
15218                <Self::ReturnTuple<
15219                    '_,
15220                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15221                    .map(|r| {
15222                        let r: maxCommissionIncreaseReturn = r.into();
15223                        r._0
15224                    })
15225            }
15226        }
15227    };
15228    #[derive(serde::Serialize, serde::Deserialize)]
15229    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15230    /**Function with signature `minCommissionIncreaseInterval()` and selector `0xd9cc7d26`.
15231```solidity
15232function minCommissionIncreaseInterval() external view returns (uint256);
15233```*/
15234    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15235    #[derive(Clone)]
15236    pub struct minCommissionIncreaseIntervalCall;
15237    #[derive(serde::Serialize, serde::Deserialize)]
15238    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15239    ///Container type for the return parameters of the [`minCommissionIncreaseInterval()`](minCommissionIncreaseIntervalCall) function.
15240    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15241    #[derive(Clone)]
15242    pub struct minCommissionIncreaseIntervalReturn {
15243        #[allow(missing_docs)]
15244        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15245    }
15246    #[allow(
15247        non_camel_case_types,
15248        non_snake_case,
15249        clippy::pub_underscore_fields,
15250        clippy::style
15251    )]
15252    const _: () = {
15253        use alloy::sol_types as alloy_sol_types;
15254        {
15255            #[doc(hidden)]
15256            #[allow(dead_code)]
15257            type UnderlyingSolTuple<'a> = ();
15258            #[doc(hidden)]
15259            type UnderlyingRustTuple<'a> = ();
15260            #[cfg(test)]
15261            #[allow(dead_code, unreachable_patterns)]
15262            fn _type_assertion(
15263                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15264            ) {
15265                match _t {
15266                    alloy_sol_types::private::AssertTypeEq::<
15267                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15268                    >(_) => {}
15269                }
15270            }
15271            #[automatically_derived]
15272            #[doc(hidden)]
15273            impl ::core::convert::From<minCommissionIncreaseIntervalCall>
15274            for UnderlyingRustTuple<'_> {
15275                fn from(value: minCommissionIncreaseIntervalCall) -> Self {
15276                    ()
15277                }
15278            }
15279            #[automatically_derived]
15280            #[doc(hidden)]
15281            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15282            for minCommissionIncreaseIntervalCall {
15283                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15284                    Self
15285                }
15286            }
15287        }
15288        {
15289            #[doc(hidden)]
15290            #[allow(dead_code)]
15291            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15292            #[doc(hidden)]
15293            type UnderlyingRustTuple<'a> = (
15294                alloy::sol_types::private::primitives::aliases::U256,
15295            );
15296            #[cfg(test)]
15297            #[allow(dead_code, unreachable_patterns)]
15298            fn _type_assertion(
15299                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15300            ) {
15301                match _t {
15302                    alloy_sol_types::private::AssertTypeEq::<
15303                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15304                    >(_) => {}
15305                }
15306            }
15307            #[automatically_derived]
15308            #[doc(hidden)]
15309            impl ::core::convert::From<minCommissionIncreaseIntervalReturn>
15310            for UnderlyingRustTuple<'_> {
15311                fn from(value: minCommissionIncreaseIntervalReturn) -> Self {
15312                    (value._0,)
15313                }
15314            }
15315            #[automatically_derived]
15316            #[doc(hidden)]
15317            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15318            for minCommissionIncreaseIntervalReturn {
15319                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15320                    Self { _0: tuple.0 }
15321                }
15322            }
15323        }
15324        #[automatically_derived]
15325        impl alloy_sol_types::SolCall for minCommissionIncreaseIntervalCall {
15326            type Parameters<'a> = ();
15327            type Token<'a> = <Self::Parameters<
15328                'a,
15329            > as alloy_sol_types::SolType>::Token<'a>;
15330            type Return = alloy::sol_types::private::primitives::aliases::U256;
15331            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15332            type ReturnToken<'a> = <Self::ReturnTuple<
15333                'a,
15334            > as alloy_sol_types::SolType>::Token<'a>;
15335            const SIGNATURE: &'static str = "minCommissionIncreaseInterval()";
15336            const SELECTOR: [u8; 4] = [217u8, 204u8, 125u8, 38u8];
15337            #[inline]
15338            fn new<'a>(
15339                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15340            ) -> Self {
15341                tuple.into()
15342            }
15343            #[inline]
15344            fn tokenize(&self) -> Self::Token<'_> {
15345                ()
15346            }
15347            #[inline]
15348            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15349                (
15350                    <alloy::sol_types::sol_data::Uint<
15351                        256,
15352                    > as alloy_sol_types::SolType>::tokenize(ret),
15353                )
15354            }
15355            #[inline]
15356            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15357                <Self::ReturnTuple<
15358                    '_,
15359                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15360                    .map(|r| {
15361                        let r: minCommissionIncreaseIntervalReturn = r.into();
15362                        r._0
15363                    })
15364            }
15365            #[inline]
15366            fn abi_decode_returns_validate(
15367                data: &[u8],
15368            ) -> alloy_sol_types::Result<Self::Return> {
15369                <Self::ReturnTuple<
15370                    '_,
15371                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15372                    .map(|r| {
15373                        let r: minCommissionIncreaseIntervalReturn = r.into();
15374                        r._0
15375                    })
15376            }
15377        }
15378    };
15379    #[derive(serde::Serialize, serde::Deserialize)]
15380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15381    /**Function with signature `minDelegateAmount()` and selector `0x72e9c934`.
15382```solidity
15383function minDelegateAmount() external view returns (uint256);
15384```*/
15385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15386    #[derive(Clone)]
15387    pub struct minDelegateAmountCall;
15388    #[derive(serde::Serialize, serde::Deserialize)]
15389    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15390    ///Container type for the return parameters of the [`minDelegateAmount()`](minDelegateAmountCall) function.
15391    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15392    #[derive(Clone)]
15393    pub struct minDelegateAmountReturn {
15394        #[allow(missing_docs)]
15395        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15396    }
15397    #[allow(
15398        non_camel_case_types,
15399        non_snake_case,
15400        clippy::pub_underscore_fields,
15401        clippy::style
15402    )]
15403    const _: () = {
15404        use alloy::sol_types as alloy_sol_types;
15405        {
15406            #[doc(hidden)]
15407            #[allow(dead_code)]
15408            type UnderlyingSolTuple<'a> = ();
15409            #[doc(hidden)]
15410            type UnderlyingRustTuple<'a> = ();
15411            #[cfg(test)]
15412            #[allow(dead_code, unreachable_patterns)]
15413            fn _type_assertion(
15414                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15415            ) {
15416                match _t {
15417                    alloy_sol_types::private::AssertTypeEq::<
15418                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15419                    >(_) => {}
15420                }
15421            }
15422            #[automatically_derived]
15423            #[doc(hidden)]
15424            impl ::core::convert::From<minDelegateAmountCall>
15425            for UnderlyingRustTuple<'_> {
15426                fn from(value: minDelegateAmountCall) -> Self {
15427                    ()
15428                }
15429            }
15430            #[automatically_derived]
15431            #[doc(hidden)]
15432            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15433            for minDelegateAmountCall {
15434                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15435                    Self
15436                }
15437            }
15438        }
15439        {
15440            #[doc(hidden)]
15441            #[allow(dead_code)]
15442            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15443            #[doc(hidden)]
15444            type UnderlyingRustTuple<'a> = (
15445                alloy::sol_types::private::primitives::aliases::U256,
15446            );
15447            #[cfg(test)]
15448            #[allow(dead_code, unreachable_patterns)]
15449            fn _type_assertion(
15450                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15451            ) {
15452                match _t {
15453                    alloy_sol_types::private::AssertTypeEq::<
15454                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15455                    >(_) => {}
15456                }
15457            }
15458            #[automatically_derived]
15459            #[doc(hidden)]
15460            impl ::core::convert::From<minDelegateAmountReturn>
15461            for UnderlyingRustTuple<'_> {
15462                fn from(value: minDelegateAmountReturn) -> Self {
15463                    (value._0,)
15464                }
15465            }
15466            #[automatically_derived]
15467            #[doc(hidden)]
15468            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15469            for minDelegateAmountReturn {
15470                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15471                    Self { _0: tuple.0 }
15472                }
15473            }
15474        }
15475        #[automatically_derived]
15476        impl alloy_sol_types::SolCall for minDelegateAmountCall {
15477            type Parameters<'a> = ();
15478            type Token<'a> = <Self::Parameters<
15479                'a,
15480            > as alloy_sol_types::SolType>::Token<'a>;
15481            type Return = alloy::sol_types::private::primitives::aliases::U256;
15482            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15483            type ReturnToken<'a> = <Self::ReturnTuple<
15484                'a,
15485            > as alloy_sol_types::SolType>::Token<'a>;
15486            const SIGNATURE: &'static str = "minDelegateAmount()";
15487            const SELECTOR: [u8; 4] = [114u8, 233u8, 201u8, 52u8];
15488            #[inline]
15489            fn new<'a>(
15490                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15491            ) -> Self {
15492                tuple.into()
15493            }
15494            #[inline]
15495            fn tokenize(&self) -> Self::Token<'_> {
15496                ()
15497            }
15498            #[inline]
15499            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15500                (
15501                    <alloy::sol_types::sol_data::Uint<
15502                        256,
15503                    > as alloy_sol_types::SolType>::tokenize(ret),
15504                )
15505            }
15506            #[inline]
15507            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15508                <Self::ReturnTuple<
15509                    '_,
15510                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15511                    .map(|r| {
15512                        let r: minDelegateAmountReturn = r.into();
15513                        r._0
15514                    })
15515            }
15516            #[inline]
15517            fn abi_decode_returns_validate(
15518                data: &[u8],
15519            ) -> alloy_sol_types::Result<Self::Return> {
15520                <Self::ReturnTuple<
15521                    '_,
15522                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15523                    .map(|r| {
15524                        let r: minDelegateAmountReturn = r.into();
15525                        r._0
15526                    })
15527            }
15528        }
15529    };
15530    #[derive(serde::Serialize, serde::Deserialize)]
15531    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15532    /**Function with signature `owner()` and selector `0x8da5cb5b`.
15533```solidity
15534function owner() external view returns (address);
15535```*/
15536    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15537    #[derive(Clone)]
15538    pub struct ownerCall;
15539    #[derive(serde::Serialize, serde::Deserialize)]
15540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15541    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
15542    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15543    #[derive(Clone)]
15544    pub struct ownerReturn {
15545        #[allow(missing_docs)]
15546        pub _0: alloy::sol_types::private::Address,
15547    }
15548    #[allow(
15549        non_camel_case_types,
15550        non_snake_case,
15551        clippy::pub_underscore_fields,
15552        clippy::style
15553    )]
15554    const _: () = {
15555        use alloy::sol_types as alloy_sol_types;
15556        {
15557            #[doc(hidden)]
15558            #[allow(dead_code)]
15559            type UnderlyingSolTuple<'a> = ();
15560            #[doc(hidden)]
15561            type UnderlyingRustTuple<'a> = ();
15562            #[cfg(test)]
15563            #[allow(dead_code, unreachable_patterns)]
15564            fn _type_assertion(
15565                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15566            ) {
15567                match _t {
15568                    alloy_sol_types::private::AssertTypeEq::<
15569                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15570                    >(_) => {}
15571                }
15572            }
15573            #[automatically_derived]
15574            #[doc(hidden)]
15575            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
15576                fn from(value: ownerCall) -> Self {
15577                    ()
15578                }
15579            }
15580            #[automatically_derived]
15581            #[doc(hidden)]
15582            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
15583                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15584                    Self
15585                }
15586            }
15587        }
15588        {
15589            #[doc(hidden)]
15590            #[allow(dead_code)]
15591            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
15592            #[doc(hidden)]
15593            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15594            #[cfg(test)]
15595            #[allow(dead_code, unreachable_patterns)]
15596            fn _type_assertion(
15597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15598            ) {
15599                match _t {
15600                    alloy_sol_types::private::AssertTypeEq::<
15601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15602                    >(_) => {}
15603                }
15604            }
15605            #[automatically_derived]
15606            #[doc(hidden)]
15607            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
15608                fn from(value: ownerReturn) -> Self {
15609                    (value._0,)
15610                }
15611            }
15612            #[automatically_derived]
15613            #[doc(hidden)]
15614            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
15615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15616                    Self { _0: tuple.0 }
15617                }
15618            }
15619        }
15620        #[automatically_derived]
15621        impl alloy_sol_types::SolCall for ownerCall {
15622            type Parameters<'a> = ();
15623            type Token<'a> = <Self::Parameters<
15624                'a,
15625            > as alloy_sol_types::SolType>::Token<'a>;
15626            type Return = alloy::sol_types::private::Address;
15627            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
15628            type ReturnToken<'a> = <Self::ReturnTuple<
15629                'a,
15630            > as alloy_sol_types::SolType>::Token<'a>;
15631            const SIGNATURE: &'static str = "owner()";
15632            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
15633            #[inline]
15634            fn new<'a>(
15635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15636            ) -> Self {
15637                tuple.into()
15638            }
15639            #[inline]
15640            fn tokenize(&self) -> Self::Token<'_> {
15641                ()
15642            }
15643            #[inline]
15644            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15645                (
15646                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15647                        ret,
15648                    ),
15649                )
15650            }
15651            #[inline]
15652            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15653                <Self::ReturnTuple<
15654                    '_,
15655                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15656                    .map(|r| {
15657                        let r: ownerReturn = r.into();
15658                        r._0
15659                    })
15660            }
15661            #[inline]
15662            fn abi_decode_returns_validate(
15663                data: &[u8],
15664            ) -> alloy_sol_types::Result<Self::Return> {
15665                <Self::ReturnTuple<
15666                    '_,
15667                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15668                    .map(|r| {
15669                        let r: ownerReturn = r.into();
15670                        r._0
15671                    })
15672            }
15673        }
15674    };
15675    #[derive(serde::Serialize, serde::Deserialize)]
15676    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15677    /**Function with signature `pause()` and selector `0x8456cb59`.
15678```solidity
15679function pause() external;
15680```*/
15681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15682    #[derive(Clone)]
15683    pub struct pauseCall;
15684    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
15685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15686    #[derive(Clone)]
15687    pub struct pauseReturn {}
15688    #[allow(
15689        non_camel_case_types,
15690        non_snake_case,
15691        clippy::pub_underscore_fields,
15692        clippy::style
15693    )]
15694    const _: () = {
15695        use alloy::sol_types as alloy_sol_types;
15696        {
15697            #[doc(hidden)]
15698            #[allow(dead_code)]
15699            type UnderlyingSolTuple<'a> = ();
15700            #[doc(hidden)]
15701            type UnderlyingRustTuple<'a> = ();
15702            #[cfg(test)]
15703            #[allow(dead_code, unreachable_patterns)]
15704            fn _type_assertion(
15705                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15706            ) {
15707                match _t {
15708                    alloy_sol_types::private::AssertTypeEq::<
15709                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15710                    >(_) => {}
15711                }
15712            }
15713            #[automatically_derived]
15714            #[doc(hidden)]
15715            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
15716                fn from(value: pauseCall) -> Self {
15717                    ()
15718                }
15719            }
15720            #[automatically_derived]
15721            #[doc(hidden)]
15722            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
15723                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15724                    Self
15725                }
15726            }
15727        }
15728        {
15729            #[doc(hidden)]
15730            #[allow(dead_code)]
15731            type UnderlyingSolTuple<'a> = ();
15732            #[doc(hidden)]
15733            type UnderlyingRustTuple<'a> = ();
15734            #[cfg(test)]
15735            #[allow(dead_code, unreachable_patterns)]
15736            fn _type_assertion(
15737                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15738            ) {
15739                match _t {
15740                    alloy_sol_types::private::AssertTypeEq::<
15741                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15742                    >(_) => {}
15743                }
15744            }
15745            #[automatically_derived]
15746            #[doc(hidden)]
15747            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
15748                fn from(value: pauseReturn) -> Self {
15749                    ()
15750                }
15751            }
15752            #[automatically_derived]
15753            #[doc(hidden)]
15754            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
15755                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15756                    Self {}
15757                }
15758            }
15759        }
15760        impl pauseReturn {
15761            fn _tokenize(
15762                &self,
15763            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15764                ()
15765            }
15766        }
15767        #[automatically_derived]
15768        impl alloy_sol_types::SolCall for pauseCall {
15769            type Parameters<'a> = ();
15770            type Token<'a> = <Self::Parameters<
15771                'a,
15772            > as alloy_sol_types::SolType>::Token<'a>;
15773            type Return = pauseReturn;
15774            type ReturnTuple<'a> = ();
15775            type ReturnToken<'a> = <Self::ReturnTuple<
15776                'a,
15777            > as alloy_sol_types::SolType>::Token<'a>;
15778            const SIGNATURE: &'static str = "pause()";
15779            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
15780            #[inline]
15781            fn new<'a>(
15782                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15783            ) -> Self {
15784                tuple.into()
15785            }
15786            #[inline]
15787            fn tokenize(&self) -> Self::Token<'_> {
15788                ()
15789            }
15790            #[inline]
15791            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15792                pauseReturn::_tokenize(ret)
15793            }
15794            #[inline]
15795            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15796                <Self::ReturnTuple<
15797                    '_,
15798                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15799                    .map(Into::into)
15800            }
15801            #[inline]
15802            fn abi_decode_returns_validate(
15803                data: &[u8],
15804            ) -> alloy_sol_types::Result<Self::Return> {
15805                <Self::ReturnTuple<
15806                    '_,
15807                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15808                    .map(Into::into)
15809            }
15810        }
15811    };
15812    #[derive(serde::Serialize, serde::Deserialize)]
15813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15814    /**Function with signature `paused()` and selector `0x5c975abb`.
15815```solidity
15816function paused() external view returns (bool);
15817```*/
15818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15819    #[derive(Clone)]
15820    pub struct pausedCall;
15821    #[derive(serde::Serialize, serde::Deserialize)]
15822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15823    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
15824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15825    #[derive(Clone)]
15826    pub struct pausedReturn {
15827        #[allow(missing_docs)]
15828        pub _0: bool,
15829    }
15830    #[allow(
15831        non_camel_case_types,
15832        non_snake_case,
15833        clippy::pub_underscore_fields,
15834        clippy::style
15835    )]
15836    const _: () = {
15837        use alloy::sol_types as alloy_sol_types;
15838        {
15839            #[doc(hidden)]
15840            #[allow(dead_code)]
15841            type UnderlyingSolTuple<'a> = ();
15842            #[doc(hidden)]
15843            type UnderlyingRustTuple<'a> = ();
15844            #[cfg(test)]
15845            #[allow(dead_code, unreachable_patterns)]
15846            fn _type_assertion(
15847                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15848            ) {
15849                match _t {
15850                    alloy_sol_types::private::AssertTypeEq::<
15851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15852                    >(_) => {}
15853                }
15854            }
15855            #[automatically_derived]
15856            #[doc(hidden)]
15857            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
15858                fn from(value: pausedCall) -> Self {
15859                    ()
15860                }
15861            }
15862            #[automatically_derived]
15863            #[doc(hidden)]
15864            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
15865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15866                    Self
15867                }
15868            }
15869        }
15870        {
15871            #[doc(hidden)]
15872            #[allow(dead_code)]
15873            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
15874            #[doc(hidden)]
15875            type UnderlyingRustTuple<'a> = (bool,);
15876            #[cfg(test)]
15877            #[allow(dead_code, unreachable_patterns)]
15878            fn _type_assertion(
15879                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15880            ) {
15881                match _t {
15882                    alloy_sol_types::private::AssertTypeEq::<
15883                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15884                    >(_) => {}
15885                }
15886            }
15887            #[automatically_derived]
15888            #[doc(hidden)]
15889            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
15890                fn from(value: pausedReturn) -> Self {
15891                    (value._0,)
15892                }
15893            }
15894            #[automatically_derived]
15895            #[doc(hidden)]
15896            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
15897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15898                    Self { _0: tuple.0 }
15899                }
15900            }
15901        }
15902        #[automatically_derived]
15903        impl alloy_sol_types::SolCall for pausedCall {
15904            type Parameters<'a> = ();
15905            type Token<'a> = <Self::Parameters<
15906                'a,
15907            > as alloy_sol_types::SolType>::Token<'a>;
15908            type Return = bool;
15909            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
15910            type ReturnToken<'a> = <Self::ReturnTuple<
15911                'a,
15912            > as alloy_sol_types::SolType>::Token<'a>;
15913            const SIGNATURE: &'static str = "paused()";
15914            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
15915            #[inline]
15916            fn new<'a>(
15917                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15918            ) -> Self {
15919                tuple.into()
15920            }
15921            #[inline]
15922            fn tokenize(&self) -> Self::Token<'_> {
15923                ()
15924            }
15925            #[inline]
15926            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15927                (
15928                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
15929                        ret,
15930                    ),
15931                )
15932            }
15933            #[inline]
15934            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15935                <Self::ReturnTuple<
15936                    '_,
15937                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15938                    .map(|r| {
15939                        let r: pausedReturn = r.into();
15940                        r._0
15941                    })
15942            }
15943            #[inline]
15944            fn abi_decode_returns_validate(
15945                data: &[u8],
15946            ) -> alloy_sol_types::Result<Self::Return> {
15947                <Self::ReturnTuple<
15948                    '_,
15949                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15950                    .map(|r| {
15951                        let r: pausedReturn = r.into();
15952                        r._0
15953                    })
15954            }
15955        }
15956    };
15957    #[derive(serde::Serialize, serde::Deserialize)]
15958    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15959    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
15960```solidity
15961function proxiableUUID() external view returns (bytes32);
15962```*/
15963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15964    #[derive(Clone)]
15965    pub struct proxiableUUIDCall;
15966    #[derive(serde::Serialize, serde::Deserialize)]
15967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15968    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
15969    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15970    #[derive(Clone)]
15971    pub struct proxiableUUIDReturn {
15972        #[allow(missing_docs)]
15973        pub _0: alloy::sol_types::private::FixedBytes<32>,
15974    }
15975    #[allow(
15976        non_camel_case_types,
15977        non_snake_case,
15978        clippy::pub_underscore_fields,
15979        clippy::style
15980    )]
15981    const _: () = {
15982        use alloy::sol_types as alloy_sol_types;
15983        {
15984            #[doc(hidden)]
15985            #[allow(dead_code)]
15986            type UnderlyingSolTuple<'a> = ();
15987            #[doc(hidden)]
15988            type UnderlyingRustTuple<'a> = ();
15989            #[cfg(test)]
15990            #[allow(dead_code, unreachable_patterns)]
15991            fn _type_assertion(
15992                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15993            ) {
15994                match _t {
15995                    alloy_sol_types::private::AssertTypeEq::<
15996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15997                    >(_) => {}
15998                }
15999            }
16000            #[automatically_derived]
16001            #[doc(hidden)]
16002            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
16003                fn from(value: proxiableUUIDCall) -> Self {
16004                    ()
16005                }
16006            }
16007            #[automatically_derived]
16008            #[doc(hidden)]
16009            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
16010                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16011                    Self
16012                }
16013            }
16014        }
16015        {
16016            #[doc(hidden)]
16017            #[allow(dead_code)]
16018            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16019            #[doc(hidden)]
16020            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
16021            #[cfg(test)]
16022            #[allow(dead_code, unreachable_patterns)]
16023            fn _type_assertion(
16024                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16025            ) {
16026                match _t {
16027                    alloy_sol_types::private::AssertTypeEq::<
16028                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16029                    >(_) => {}
16030                }
16031            }
16032            #[automatically_derived]
16033            #[doc(hidden)]
16034            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
16035                fn from(value: proxiableUUIDReturn) -> Self {
16036                    (value._0,)
16037                }
16038            }
16039            #[automatically_derived]
16040            #[doc(hidden)]
16041            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
16042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16043                    Self { _0: tuple.0 }
16044                }
16045            }
16046        }
16047        #[automatically_derived]
16048        impl alloy_sol_types::SolCall for proxiableUUIDCall {
16049            type Parameters<'a> = ();
16050            type Token<'a> = <Self::Parameters<
16051                'a,
16052            > as alloy_sol_types::SolType>::Token<'a>;
16053            type Return = alloy::sol_types::private::FixedBytes<32>;
16054            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16055            type ReturnToken<'a> = <Self::ReturnTuple<
16056                'a,
16057            > as alloy_sol_types::SolType>::Token<'a>;
16058            const SIGNATURE: &'static str = "proxiableUUID()";
16059            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
16060            #[inline]
16061            fn new<'a>(
16062                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16063            ) -> Self {
16064                tuple.into()
16065            }
16066            #[inline]
16067            fn tokenize(&self) -> Self::Token<'_> {
16068                ()
16069            }
16070            #[inline]
16071            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16072                (
16073                    <alloy::sol_types::sol_data::FixedBytes<
16074                        32,
16075                    > as alloy_sol_types::SolType>::tokenize(ret),
16076                )
16077            }
16078            #[inline]
16079            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16080                <Self::ReturnTuple<
16081                    '_,
16082                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16083                    .map(|r| {
16084                        let r: proxiableUUIDReturn = r.into();
16085                        r._0
16086                    })
16087            }
16088            #[inline]
16089            fn abi_decode_returns_validate(
16090                data: &[u8],
16091            ) -> alloy_sol_types::Result<Self::Return> {
16092                <Self::ReturnTuple<
16093                    '_,
16094                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16095                    .map(|r| {
16096                        let r: proxiableUUIDReturn = r.into();
16097                        r._0
16098                    })
16099            }
16100        }
16101    };
16102    #[derive(serde::Serialize, serde::Deserialize)]
16103    #[derive()]
16104    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
16105```solidity
16106function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
16107```*/
16108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16109    #[derive(Clone)]
16110    pub struct registerValidatorCall {
16111        #[allow(missing_docs)]
16112        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16113        #[allow(missing_docs)]
16114        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16115        #[allow(missing_docs)]
16116        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16117        #[allow(missing_docs)]
16118        pub _3: u16,
16119    }
16120    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
16121    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16122    #[derive(Clone)]
16123    pub struct registerValidatorReturn {}
16124    #[allow(
16125        non_camel_case_types,
16126        non_snake_case,
16127        clippy::pub_underscore_fields,
16128        clippy::style
16129    )]
16130    const _: () = {
16131        use alloy::sol_types as alloy_sol_types;
16132        {
16133            #[doc(hidden)]
16134            #[allow(dead_code)]
16135            type UnderlyingSolTuple<'a> = (
16136                BN254::G2Point,
16137                EdOnBN254::EdOnBN254Point,
16138                BN254::G1Point,
16139                alloy::sol_types::sol_data::Uint<16>,
16140            );
16141            #[doc(hidden)]
16142            type UnderlyingRustTuple<'a> = (
16143                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16144                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16145                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16146                u16,
16147            );
16148            #[cfg(test)]
16149            #[allow(dead_code, unreachable_patterns)]
16150            fn _type_assertion(
16151                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16152            ) {
16153                match _t {
16154                    alloy_sol_types::private::AssertTypeEq::<
16155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16156                    >(_) => {}
16157                }
16158            }
16159            #[automatically_derived]
16160            #[doc(hidden)]
16161            impl ::core::convert::From<registerValidatorCall>
16162            for UnderlyingRustTuple<'_> {
16163                fn from(value: registerValidatorCall) -> Self {
16164                    (value._0, value._1, value._2, value._3)
16165                }
16166            }
16167            #[automatically_derived]
16168            #[doc(hidden)]
16169            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16170            for registerValidatorCall {
16171                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16172                    Self {
16173                        _0: tuple.0,
16174                        _1: tuple.1,
16175                        _2: tuple.2,
16176                        _3: tuple.3,
16177                    }
16178                }
16179            }
16180        }
16181        {
16182            #[doc(hidden)]
16183            #[allow(dead_code)]
16184            type UnderlyingSolTuple<'a> = ();
16185            #[doc(hidden)]
16186            type UnderlyingRustTuple<'a> = ();
16187            #[cfg(test)]
16188            #[allow(dead_code, unreachable_patterns)]
16189            fn _type_assertion(
16190                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16191            ) {
16192                match _t {
16193                    alloy_sol_types::private::AssertTypeEq::<
16194                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16195                    >(_) => {}
16196                }
16197            }
16198            #[automatically_derived]
16199            #[doc(hidden)]
16200            impl ::core::convert::From<registerValidatorReturn>
16201            for UnderlyingRustTuple<'_> {
16202                fn from(value: registerValidatorReturn) -> Self {
16203                    ()
16204                }
16205            }
16206            #[automatically_derived]
16207            #[doc(hidden)]
16208            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16209            for registerValidatorReturn {
16210                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16211                    Self {}
16212                }
16213            }
16214        }
16215        impl registerValidatorReturn {
16216            fn _tokenize(
16217                &self,
16218            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16219                ()
16220            }
16221        }
16222        #[automatically_derived]
16223        impl alloy_sol_types::SolCall for registerValidatorCall {
16224            type Parameters<'a> = (
16225                BN254::G2Point,
16226                EdOnBN254::EdOnBN254Point,
16227                BN254::G1Point,
16228                alloy::sol_types::sol_data::Uint<16>,
16229            );
16230            type Token<'a> = <Self::Parameters<
16231                'a,
16232            > as alloy_sol_types::SolType>::Token<'a>;
16233            type Return = registerValidatorReturn;
16234            type ReturnTuple<'a> = ();
16235            type ReturnToken<'a> = <Self::ReturnTuple<
16236                'a,
16237            > as alloy_sol_types::SolType>::Token<'a>;
16238            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
16239            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
16240            #[inline]
16241            fn new<'a>(
16242                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16243            ) -> Self {
16244                tuple.into()
16245            }
16246            #[inline]
16247            fn tokenize(&self) -> Self::Token<'_> {
16248                (
16249                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
16250                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
16251                        &self._1,
16252                    ),
16253                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
16254                    <alloy::sol_types::sol_data::Uint<
16255                        16,
16256                    > as alloy_sol_types::SolType>::tokenize(&self._3),
16257                )
16258            }
16259            #[inline]
16260            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16261                registerValidatorReturn::_tokenize(ret)
16262            }
16263            #[inline]
16264            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16265                <Self::ReturnTuple<
16266                    '_,
16267                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16268                    .map(Into::into)
16269            }
16270            #[inline]
16271            fn abi_decode_returns_validate(
16272                data: &[u8],
16273            ) -> alloy_sol_types::Result<Self::Return> {
16274                <Self::ReturnTuple<
16275                    '_,
16276                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16277                    .map(Into::into)
16278            }
16279        }
16280    };
16281    #[derive(serde::Serialize, serde::Deserialize)]
16282    #[derive()]
16283    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)` and selector `0x2b9e5c8a`.
16284```solidity
16285function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri) external;
16286```*/
16287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16288    #[derive(Clone)]
16289    pub struct registerValidatorV2Call {
16290        #[allow(missing_docs)]
16291        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16292        #[allow(missing_docs)]
16293        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16294        #[allow(missing_docs)]
16295        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16296        #[allow(missing_docs)]
16297        pub schnorrSig: alloy::sol_types::private::Bytes,
16298        #[allow(missing_docs)]
16299        pub commission: u16,
16300        #[allow(missing_docs)]
16301        pub metadataUri: alloy::sol_types::private::String,
16302    }
16303    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)`](registerValidatorV2Call) function.
16304    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16305    #[derive(Clone)]
16306    pub struct registerValidatorV2Return {}
16307    #[allow(
16308        non_camel_case_types,
16309        non_snake_case,
16310        clippy::pub_underscore_fields,
16311        clippy::style
16312    )]
16313    const _: () = {
16314        use alloy::sol_types as alloy_sol_types;
16315        {
16316            #[doc(hidden)]
16317            #[allow(dead_code)]
16318            type UnderlyingSolTuple<'a> = (
16319                BN254::G2Point,
16320                EdOnBN254::EdOnBN254Point,
16321                BN254::G1Point,
16322                alloy::sol_types::sol_data::Bytes,
16323                alloy::sol_types::sol_data::Uint<16>,
16324                alloy::sol_types::sol_data::String,
16325            );
16326            #[doc(hidden)]
16327            type UnderlyingRustTuple<'a> = (
16328                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16329                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16330                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16331                alloy::sol_types::private::Bytes,
16332                u16,
16333                alloy::sol_types::private::String,
16334            );
16335            #[cfg(test)]
16336            #[allow(dead_code, unreachable_patterns)]
16337            fn _type_assertion(
16338                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16339            ) {
16340                match _t {
16341                    alloy_sol_types::private::AssertTypeEq::<
16342                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16343                    >(_) => {}
16344                }
16345            }
16346            #[automatically_derived]
16347            #[doc(hidden)]
16348            impl ::core::convert::From<registerValidatorV2Call>
16349            for UnderlyingRustTuple<'_> {
16350                fn from(value: registerValidatorV2Call) -> Self {
16351                    (
16352                        value.blsVK,
16353                        value.schnorrVK,
16354                        value.blsSig,
16355                        value.schnorrSig,
16356                        value.commission,
16357                        value.metadataUri,
16358                    )
16359                }
16360            }
16361            #[automatically_derived]
16362            #[doc(hidden)]
16363            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16364            for registerValidatorV2Call {
16365                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16366                    Self {
16367                        blsVK: tuple.0,
16368                        schnorrVK: tuple.1,
16369                        blsSig: tuple.2,
16370                        schnorrSig: tuple.3,
16371                        commission: tuple.4,
16372                        metadataUri: tuple.5,
16373                    }
16374                }
16375            }
16376        }
16377        {
16378            #[doc(hidden)]
16379            #[allow(dead_code)]
16380            type UnderlyingSolTuple<'a> = ();
16381            #[doc(hidden)]
16382            type UnderlyingRustTuple<'a> = ();
16383            #[cfg(test)]
16384            #[allow(dead_code, unreachable_patterns)]
16385            fn _type_assertion(
16386                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16387            ) {
16388                match _t {
16389                    alloy_sol_types::private::AssertTypeEq::<
16390                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16391                    >(_) => {}
16392                }
16393            }
16394            #[automatically_derived]
16395            #[doc(hidden)]
16396            impl ::core::convert::From<registerValidatorV2Return>
16397            for UnderlyingRustTuple<'_> {
16398                fn from(value: registerValidatorV2Return) -> Self {
16399                    ()
16400                }
16401            }
16402            #[automatically_derived]
16403            #[doc(hidden)]
16404            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16405            for registerValidatorV2Return {
16406                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16407                    Self {}
16408                }
16409            }
16410        }
16411        impl registerValidatorV2Return {
16412            fn _tokenize(
16413                &self,
16414            ) -> <registerValidatorV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
16415                ()
16416            }
16417        }
16418        #[automatically_derived]
16419        impl alloy_sol_types::SolCall for registerValidatorV2Call {
16420            type Parameters<'a> = (
16421                BN254::G2Point,
16422                EdOnBN254::EdOnBN254Point,
16423                BN254::G1Point,
16424                alloy::sol_types::sol_data::Bytes,
16425                alloy::sol_types::sol_data::Uint<16>,
16426                alloy::sol_types::sol_data::String,
16427            );
16428            type Token<'a> = <Self::Parameters<
16429                'a,
16430            > as alloy_sol_types::SolType>::Token<'a>;
16431            type Return = registerValidatorV2Return;
16432            type ReturnTuple<'a> = ();
16433            type ReturnToken<'a> = <Self::ReturnTuple<
16434                'a,
16435            > as alloy_sol_types::SolType>::Token<'a>;
16436            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)";
16437            const SELECTOR: [u8; 4] = [43u8, 158u8, 92u8, 138u8];
16438            #[inline]
16439            fn new<'a>(
16440                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16441            ) -> Self {
16442                tuple.into()
16443            }
16444            #[inline]
16445            fn tokenize(&self) -> Self::Token<'_> {
16446                (
16447                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
16448                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
16449                        &self.schnorrVK,
16450                    ),
16451                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
16452                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
16453                        &self.schnorrSig,
16454                    ),
16455                    <alloy::sol_types::sol_data::Uint<
16456                        16,
16457                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
16458                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
16459                        &self.metadataUri,
16460                    ),
16461                )
16462            }
16463            #[inline]
16464            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16465                registerValidatorV2Return::_tokenize(ret)
16466            }
16467            #[inline]
16468            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16469                <Self::ReturnTuple<
16470                    '_,
16471                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16472                    .map(Into::into)
16473            }
16474            #[inline]
16475            fn abi_decode_returns_validate(
16476                data: &[u8],
16477            ) -> alloy_sol_types::Result<Self::Return> {
16478                <Self::ReturnTuple<
16479                    '_,
16480                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16481                    .map(Into::into)
16482            }
16483        }
16484    };
16485    #[derive(serde::Serialize, serde::Deserialize)]
16486    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16487    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
16488```solidity
16489function renounceOwnership() external;
16490```*/
16491    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16492    #[derive(Clone)]
16493    pub struct renounceOwnershipCall;
16494    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
16495    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16496    #[derive(Clone)]
16497    pub struct renounceOwnershipReturn {}
16498    #[allow(
16499        non_camel_case_types,
16500        non_snake_case,
16501        clippy::pub_underscore_fields,
16502        clippy::style
16503    )]
16504    const _: () = {
16505        use alloy::sol_types as alloy_sol_types;
16506        {
16507            #[doc(hidden)]
16508            #[allow(dead_code)]
16509            type UnderlyingSolTuple<'a> = ();
16510            #[doc(hidden)]
16511            type UnderlyingRustTuple<'a> = ();
16512            #[cfg(test)]
16513            #[allow(dead_code, unreachable_patterns)]
16514            fn _type_assertion(
16515                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16516            ) {
16517                match _t {
16518                    alloy_sol_types::private::AssertTypeEq::<
16519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16520                    >(_) => {}
16521                }
16522            }
16523            #[automatically_derived]
16524            #[doc(hidden)]
16525            impl ::core::convert::From<renounceOwnershipCall>
16526            for UnderlyingRustTuple<'_> {
16527                fn from(value: renounceOwnershipCall) -> Self {
16528                    ()
16529                }
16530            }
16531            #[automatically_derived]
16532            #[doc(hidden)]
16533            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16534            for renounceOwnershipCall {
16535                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16536                    Self
16537                }
16538            }
16539        }
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<renounceOwnershipReturn>
16560            for UnderlyingRustTuple<'_> {
16561                fn from(value: renounceOwnershipReturn) -> Self {
16562                    ()
16563                }
16564            }
16565            #[automatically_derived]
16566            #[doc(hidden)]
16567            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16568            for renounceOwnershipReturn {
16569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16570                    Self {}
16571                }
16572            }
16573        }
16574        impl renounceOwnershipReturn {
16575            fn _tokenize(
16576                &self,
16577            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16578                ()
16579            }
16580        }
16581        #[automatically_derived]
16582        impl alloy_sol_types::SolCall for renounceOwnershipCall {
16583            type Parameters<'a> = ();
16584            type Token<'a> = <Self::Parameters<
16585                'a,
16586            > as alloy_sol_types::SolType>::Token<'a>;
16587            type Return = renounceOwnershipReturn;
16588            type ReturnTuple<'a> = ();
16589            type ReturnToken<'a> = <Self::ReturnTuple<
16590                'a,
16591            > as alloy_sol_types::SolType>::Token<'a>;
16592            const SIGNATURE: &'static str = "renounceOwnership()";
16593            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
16594            #[inline]
16595            fn new<'a>(
16596                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16597            ) -> Self {
16598                tuple.into()
16599            }
16600            #[inline]
16601            fn tokenize(&self) -> Self::Token<'_> {
16602                ()
16603            }
16604            #[inline]
16605            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16606                renounceOwnershipReturn::_tokenize(ret)
16607            }
16608            #[inline]
16609            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16610                <Self::ReturnTuple<
16611                    '_,
16612                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16613                    .map(Into::into)
16614            }
16615            #[inline]
16616            fn abi_decode_returns_validate(
16617                data: &[u8],
16618            ) -> alloy_sol_types::Result<Self::Return> {
16619                <Self::ReturnTuple<
16620                    '_,
16621                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16622                    .map(Into::into)
16623            }
16624        }
16625    };
16626    #[derive(serde::Serialize, serde::Deserialize)]
16627    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16628    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
16629```solidity
16630function renounceRole(bytes32 role, address callerConfirmation) external;
16631```*/
16632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16633    #[derive(Clone)]
16634    pub struct renounceRoleCall {
16635        #[allow(missing_docs)]
16636        pub role: alloy::sol_types::private::FixedBytes<32>,
16637        #[allow(missing_docs)]
16638        pub callerConfirmation: alloy::sol_types::private::Address,
16639    }
16640    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
16641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16642    #[derive(Clone)]
16643    pub struct renounceRoleReturn {}
16644    #[allow(
16645        non_camel_case_types,
16646        non_snake_case,
16647        clippy::pub_underscore_fields,
16648        clippy::style
16649    )]
16650    const _: () = {
16651        use alloy::sol_types as alloy_sol_types;
16652        {
16653            #[doc(hidden)]
16654            #[allow(dead_code)]
16655            type UnderlyingSolTuple<'a> = (
16656                alloy::sol_types::sol_data::FixedBytes<32>,
16657                alloy::sol_types::sol_data::Address,
16658            );
16659            #[doc(hidden)]
16660            type UnderlyingRustTuple<'a> = (
16661                alloy::sol_types::private::FixedBytes<32>,
16662                alloy::sol_types::private::Address,
16663            );
16664            #[cfg(test)]
16665            #[allow(dead_code, unreachable_patterns)]
16666            fn _type_assertion(
16667                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16668            ) {
16669                match _t {
16670                    alloy_sol_types::private::AssertTypeEq::<
16671                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16672                    >(_) => {}
16673                }
16674            }
16675            #[automatically_derived]
16676            #[doc(hidden)]
16677            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
16678                fn from(value: renounceRoleCall) -> Self {
16679                    (value.role, value.callerConfirmation)
16680                }
16681            }
16682            #[automatically_derived]
16683            #[doc(hidden)]
16684            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
16685                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16686                    Self {
16687                        role: tuple.0,
16688                        callerConfirmation: tuple.1,
16689                    }
16690                }
16691            }
16692        }
16693        {
16694            #[doc(hidden)]
16695            #[allow(dead_code)]
16696            type UnderlyingSolTuple<'a> = ();
16697            #[doc(hidden)]
16698            type UnderlyingRustTuple<'a> = ();
16699            #[cfg(test)]
16700            #[allow(dead_code, unreachable_patterns)]
16701            fn _type_assertion(
16702                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16703            ) {
16704                match _t {
16705                    alloy_sol_types::private::AssertTypeEq::<
16706                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16707                    >(_) => {}
16708                }
16709            }
16710            #[automatically_derived]
16711            #[doc(hidden)]
16712            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
16713                fn from(value: renounceRoleReturn) -> Self {
16714                    ()
16715                }
16716            }
16717            #[automatically_derived]
16718            #[doc(hidden)]
16719            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
16720                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16721                    Self {}
16722                }
16723            }
16724        }
16725        impl renounceRoleReturn {
16726            fn _tokenize(
16727                &self,
16728            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16729                ()
16730            }
16731        }
16732        #[automatically_derived]
16733        impl alloy_sol_types::SolCall for renounceRoleCall {
16734            type Parameters<'a> = (
16735                alloy::sol_types::sol_data::FixedBytes<32>,
16736                alloy::sol_types::sol_data::Address,
16737            );
16738            type Token<'a> = <Self::Parameters<
16739                'a,
16740            > as alloy_sol_types::SolType>::Token<'a>;
16741            type Return = renounceRoleReturn;
16742            type ReturnTuple<'a> = ();
16743            type ReturnToken<'a> = <Self::ReturnTuple<
16744                'a,
16745            > as alloy_sol_types::SolType>::Token<'a>;
16746            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
16747            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
16748            #[inline]
16749            fn new<'a>(
16750                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16751            ) -> Self {
16752                tuple.into()
16753            }
16754            #[inline]
16755            fn tokenize(&self) -> Self::Token<'_> {
16756                (
16757                    <alloy::sol_types::sol_data::FixedBytes<
16758                        32,
16759                    > as alloy_sol_types::SolType>::tokenize(&self.role),
16760                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16761                        &self.callerConfirmation,
16762                    ),
16763                )
16764            }
16765            #[inline]
16766            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16767                renounceRoleReturn::_tokenize(ret)
16768            }
16769            #[inline]
16770            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16771                <Self::ReturnTuple<
16772                    '_,
16773                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16774                    .map(Into::into)
16775            }
16776            #[inline]
16777            fn abi_decode_returns_validate(
16778                data: &[u8],
16779            ) -> alloy_sol_types::Result<Self::Return> {
16780                <Self::ReturnTuple<
16781                    '_,
16782                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16783                    .map(Into::into)
16784            }
16785        }
16786    };
16787    #[derive(serde::Serialize, serde::Deserialize)]
16788    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16789    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
16790```solidity
16791function revokeRole(bytes32 role, address account) external;
16792```*/
16793    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16794    #[derive(Clone)]
16795    pub struct revokeRoleCall {
16796        #[allow(missing_docs)]
16797        pub role: alloy::sol_types::private::FixedBytes<32>,
16798        #[allow(missing_docs)]
16799        pub account: alloy::sol_types::private::Address,
16800    }
16801    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
16802    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16803    #[derive(Clone)]
16804    pub struct revokeRoleReturn {}
16805    #[allow(
16806        non_camel_case_types,
16807        non_snake_case,
16808        clippy::pub_underscore_fields,
16809        clippy::style
16810    )]
16811    const _: () = {
16812        use alloy::sol_types as alloy_sol_types;
16813        {
16814            #[doc(hidden)]
16815            #[allow(dead_code)]
16816            type UnderlyingSolTuple<'a> = (
16817                alloy::sol_types::sol_data::FixedBytes<32>,
16818                alloy::sol_types::sol_data::Address,
16819            );
16820            #[doc(hidden)]
16821            type UnderlyingRustTuple<'a> = (
16822                alloy::sol_types::private::FixedBytes<32>,
16823                alloy::sol_types::private::Address,
16824            );
16825            #[cfg(test)]
16826            #[allow(dead_code, unreachable_patterns)]
16827            fn _type_assertion(
16828                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16829            ) {
16830                match _t {
16831                    alloy_sol_types::private::AssertTypeEq::<
16832                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16833                    >(_) => {}
16834                }
16835            }
16836            #[automatically_derived]
16837            #[doc(hidden)]
16838            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
16839                fn from(value: revokeRoleCall) -> Self {
16840                    (value.role, value.account)
16841                }
16842            }
16843            #[automatically_derived]
16844            #[doc(hidden)]
16845            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
16846                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16847                    Self {
16848                        role: tuple.0,
16849                        account: tuple.1,
16850                    }
16851                }
16852            }
16853        }
16854        {
16855            #[doc(hidden)]
16856            #[allow(dead_code)]
16857            type UnderlyingSolTuple<'a> = ();
16858            #[doc(hidden)]
16859            type UnderlyingRustTuple<'a> = ();
16860            #[cfg(test)]
16861            #[allow(dead_code, unreachable_patterns)]
16862            fn _type_assertion(
16863                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16864            ) {
16865                match _t {
16866                    alloy_sol_types::private::AssertTypeEq::<
16867                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16868                    >(_) => {}
16869                }
16870            }
16871            #[automatically_derived]
16872            #[doc(hidden)]
16873            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
16874                fn from(value: revokeRoleReturn) -> Self {
16875                    ()
16876                }
16877            }
16878            #[automatically_derived]
16879            #[doc(hidden)]
16880            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
16881                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16882                    Self {}
16883                }
16884            }
16885        }
16886        impl revokeRoleReturn {
16887            fn _tokenize(
16888                &self,
16889            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16890                ()
16891            }
16892        }
16893        #[automatically_derived]
16894        impl alloy_sol_types::SolCall for revokeRoleCall {
16895            type Parameters<'a> = (
16896                alloy::sol_types::sol_data::FixedBytes<32>,
16897                alloy::sol_types::sol_data::Address,
16898            );
16899            type Token<'a> = <Self::Parameters<
16900                'a,
16901            > as alloy_sol_types::SolType>::Token<'a>;
16902            type Return = revokeRoleReturn;
16903            type ReturnTuple<'a> = ();
16904            type ReturnToken<'a> = <Self::ReturnTuple<
16905                'a,
16906            > as alloy_sol_types::SolType>::Token<'a>;
16907            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
16908            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
16909            #[inline]
16910            fn new<'a>(
16911                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16912            ) -> Self {
16913                tuple.into()
16914            }
16915            #[inline]
16916            fn tokenize(&self) -> Self::Token<'_> {
16917                (
16918                    <alloy::sol_types::sol_data::FixedBytes<
16919                        32,
16920                    > as alloy_sol_types::SolType>::tokenize(&self.role),
16921                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16922                        &self.account,
16923                    ),
16924                )
16925            }
16926            #[inline]
16927            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16928                revokeRoleReturn::_tokenize(ret)
16929            }
16930            #[inline]
16931            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16932                <Self::ReturnTuple<
16933                    '_,
16934                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16935                    .map(Into::into)
16936            }
16937            #[inline]
16938            fn abi_decode_returns_validate(
16939                data: &[u8],
16940            ) -> alloy_sol_types::Result<Self::Return> {
16941                <Self::ReturnTuple<
16942                    '_,
16943                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16944                    .map(Into::into)
16945            }
16946        }
16947    };
16948    #[derive(serde::Serialize, serde::Deserialize)]
16949    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16950    /**Function with signature `schnorrKeys(bytes32)` and selector `0x5f8754a6`.
16951```solidity
16952function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
16953```*/
16954    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16955    #[derive(Clone)]
16956    pub struct schnorrKeysCall {
16957        #[allow(missing_docs)]
16958        pub schnorrKey: alloy::sol_types::private::FixedBytes<32>,
16959    }
16960    #[derive(serde::Serialize, serde::Deserialize)]
16961    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16962    ///Container type for the return parameters of the [`schnorrKeys(bytes32)`](schnorrKeysCall) function.
16963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16964    #[derive(Clone)]
16965    pub struct schnorrKeysReturn {
16966        #[allow(missing_docs)]
16967        pub used: bool,
16968    }
16969    #[allow(
16970        non_camel_case_types,
16971        non_snake_case,
16972        clippy::pub_underscore_fields,
16973        clippy::style
16974    )]
16975    const _: () = {
16976        use alloy::sol_types as alloy_sol_types;
16977        {
16978            #[doc(hidden)]
16979            #[allow(dead_code)]
16980            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16981            #[doc(hidden)]
16982            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
16983            #[cfg(test)]
16984            #[allow(dead_code, unreachable_patterns)]
16985            fn _type_assertion(
16986                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16987            ) {
16988                match _t {
16989                    alloy_sol_types::private::AssertTypeEq::<
16990                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16991                    >(_) => {}
16992                }
16993            }
16994            #[automatically_derived]
16995            #[doc(hidden)]
16996            impl ::core::convert::From<schnorrKeysCall> for UnderlyingRustTuple<'_> {
16997                fn from(value: schnorrKeysCall) -> Self {
16998                    (value.schnorrKey,)
16999                }
17000            }
17001            #[automatically_derived]
17002            #[doc(hidden)]
17003            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysCall {
17004                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17005                    Self { schnorrKey: tuple.0 }
17006                }
17007            }
17008        }
17009        {
17010            #[doc(hidden)]
17011            #[allow(dead_code)]
17012            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17013            #[doc(hidden)]
17014            type UnderlyingRustTuple<'a> = (bool,);
17015            #[cfg(test)]
17016            #[allow(dead_code, unreachable_patterns)]
17017            fn _type_assertion(
17018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17019            ) {
17020                match _t {
17021                    alloy_sol_types::private::AssertTypeEq::<
17022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17023                    >(_) => {}
17024                }
17025            }
17026            #[automatically_derived]
17027            #[doc(hidden)]
17028            impl ::core::convert::From<schnorrKeysReturn> for UnderlyingRustTuple<'_> {
17029                fn from(value: schnorrKeysReturn) -> Self {
17030                    (value.used,)
17031                }
17032            }
17033            #[automatically_derived]
17034            #[doc(hidden)]
17035            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysReturn {
17036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17037                    Self { used: tuple.0 }
17038                }
17039            }
17040        }
17041        #[automatically_derived]
17042        impl alloy_sol_types::SolCall for schnorrKeysCall {
17043            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17044            type Token<'a> = <Self::Parameters<
17045                'a,
17046            > as alloy_sol_types::SolType>::Token<'a>;
17047            type Return = bool;
17048            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17049            type ReturnToken<'a> = <Self::ReturnTuple<
17050                'a,
17051            > as alloy_sol_types::SolType>::Token<'a>;
17052            const SIGNATURE: &'static str = "schnorrKeys(bytes32)";
17053            const SELECTOR: [u8; 4] = [95u8, 135u8, 84u8, 166u8];
17054            #[inline]
17055            fn new<'a>(
17056                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17057            ) -> Self {
17058                tuple.into()
17059            }
17060            #[inline]
17061            fn tokenize(&self) -> Self::Token<'_> {
17062                (
17063                    <alloy::sol_types::sol_data::FixedBytes<
17064                        32,
17065                    > as alloy_sol_types::SolType>::tokenize(&self.schnorrKey),
17066                )
17067            }
17068            #[inline]
17069            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17070                (
17071                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
17072                        ret,
17073                    ),
17074                )
17075            }
17076            #[inline]
17077            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17078                <Self::ReturnTuple<
17079                    '_,
17080                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17081                    .map(|r| {
17082                        let r: schnorrKeysReturn = r.into();
17083                        r.used
17084                    })
17085            }
17086            #[inline]
17087            fn abi_decode_returns_validate(
17088                data: &[u8],
17089            ) -> alloy_sol_types::Result<Self::Return> {
17090                <Self::ReturnTuple<
17091                    '_,
17092                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17093                    .map(|r| {
17094                        let r: schnorrKeysReturn = r.into();
17095                        r.used
17096                    })
17097            }
17098        }
17099    };
17100    #[derive(serde::Serialize, serde::Deserialize)]
17101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17102    /**Function with signature `setMaxCommissionIncrease(uint16)` and selector `0x2dc9bac6`.
17103```solidity
17104function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
17105```*/
17106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17107    #[derive(Clone)]
17108    pub struct setMaxCommissionIncreaseCall {
17109        #[allow(missing_docs)]
17110        pub newMaxIncrease: u16,
17111    }
17112    ///Container type for the return parameters of the [`setMaxCommissionIncrease(uint16)`](setMaxCommissionIncreaseCall) function.
17113    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17114    #[derive(Clone)]
17115    pub struct setMaxCommissionIncreaseReturn {}
17116    #[allow(
17117        non_camel_case_types,
17118        non_snake_case,
17119        clippy::pub_underscore_fields,
17120        clippy::style
17121    )]
17122    const _: () = {
17123        use alloy::sol_types as alloy_sol_types;
17124        {
17125            #[doc(hidden)]
17126            #[allow(dead_code)]
17127            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17128            #[doc(hidden)]
17129            type UnderlyingRustTuple<'a> = (u16,);
17130            #[cfg(test)]
17131            #[allow(dead_code, unreachable_patterns)]
17132            fn _type_assertion(
17133                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17134            ) {
17135                match _t {
17136                    alloy_sol_types::private::AssertTypeEq::<
17137                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17138                    >(_) => {}
17139                }
17140            }
17141            #[automatically_derived]
17142            #[doc(hidden)]
17143            impl ::core::convert::From<setMaxCommissionIncreaseCall>
17144            for UnderlyingRustTuple<'_> {
17145                fn from(value: setMaxCommissionIncreaseCall) -> Self {
17146                    (value.newMaxIncrease,)
17147                }
17148            }
17149            #[automatically_derived]
17150            #[doc(hidden)]
17151            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17152            for setMaxCommissionIncreaseCall {
17153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17154                    Self { newMaxIncrease: tuple.0 }
17155                }
17156            }
17157        }
17158        {
17159            #[doc(hidden)]
17160            #[allow(dead_code)]
17161            type UnderlyingSolTuple<'a> = ();
17162            #[doc(hidden)]
17163            type UnderlyingRustTuple<'a> = ();
17164            #[cfg(test)]
17165            #[allow(dead_code, unreachable_patterns)]
17166            fn _type_assertion(
17167                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17168            ) {
17169                match _t {
17170                    alloy_sol_types::private::AssertTypeEq::<
17171                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17172                    >(_) => {}
17173                }
17174            }
17175            #[automatically_derived]
17176            #[doc(hidden)]
17177            impl ::core::convert::From<setMaxCommissionIncreaseReturn>
17178            for UnderlyingRustTuple<'_> {
17179                fn from(value: setMaxCommissionIncreaseReturn) -> Self {
17180                    ()
17181                }
17182            }
17183            #[automatically_derived]
17184            #[doc(hidden)]
17185            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17186            for setMaxCommissionIncreaseReturn {
17187                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17188                    Self {}
17189                }
17190            }
17191        }
17192        impl setMaxCommissionIncreaseReturn {
17193            fn _tokenize(
17194                &self,
17195            ) -> <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::ReturnToken<
17196                '_,
17197            > {
17198                ()
17199            }
17200        }
17201        #[automatically_derived]
17202        impl alloy_sol_types::SolCall for setMaxCommissionIncreaseCall {
17203            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17204            type Token<'a> = <Self::Parameters<
17205                'a,
17206            > as alloy_sol_types::SolType>::Token<'a>;
17207            type Return = setMaxCommissionIncreaseReturn;
17208            type ReturnTuple<'a> = ();
17209            type ReturnToken<'a> = <Self::ReturnTuple<
17210                'a,
17211            > as alloy_sol_types::SolType>::Token<'a>;
17212            const SIGNATURE: &'static str = "setMaxCommissionIncrease(uint16)";
17213            const SELECTOR: [u8; 4] = [45u8, 201u8, 186u8, 198u8];
17214            #[inline]
17215            fn new<'a>(
17216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17217            ) -> Self {
17218                tuple.into()
17219            }
17220            #[inline]
17221            fn tokenize(&self) -> Self::Token<'_> {
17222                (
17223                    <alloy::sol_types::sol_data::Uint<
17224                        16,
17225                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
17226                )
17227            }
17228            #[inline]
17229            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17230                setMaxCommissionIncreaseReturn::_tokenize(ret)
17231            }
17232            #[inline]
17233            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17234                <Self::ReturnTuple<
17235                    '_,
17236                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17237                    .map(Into::into)
17238            }
17239            #[inline]
17240            fn abi_decode_returns_validate(
17241                data: &[u8],
17242            ) -> alloy_sol_types::Result<Self::Return> {
17243                <Self::ReturnTuple<
17244                    '_,
17245                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17246                    .map(Into::into)
17247            }
17248        }
17249    };
17250    #[derive(serde::Serialize, serde::Deserialize)]
17251    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17252    /**Function with signature `setMinCommissionUpdateInterval(uint256)` and selector `0x394b348f`.
17253```solidity
17254function setMinCommissionUpdateInterval(uint256 newInterval) external;
17255```*/
17256    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17257    #[derive(Clone)]
17258    pub struct setMinCommissionUpdateIntervalCall {
17259        #[allow(missing_docs)]
17260        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
17261    }
17262    ///Container type for the return parameters of the [`setMinCommissionUpdateInterval(uint256)`](setMinCommissionUpdateIntervalCall) function.
17263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17264    #[derive(Clone)]
17265    pub struct setMinCommissionUpdateIntervalReturn {}
17266    #[allow(
17267        non_camel_case_types,
17268        non_snake_case,
17269        clippy::pub_underscore_fields,
17270        clippy::style
17271    )]
17272    const _: () = {
17273        use alloy::sol_types as alloy_sol_types;
17274        {
17275            #[doc(hidden)]
17276            #[allow(dead_code)]
17277            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17278            #[doc(hidden)]
17279            type UnderlyingRustTuple<'a> = (
17280                alloy::sol_types::private::primitives::aliases::U256,
17281            );
17282            #[cfg(test)]
17283            #[allow(dead_code, unreachable_patterns)]
17284            fn _type_assertion(
17285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17286            ) {
17287                match _t {
17288                    alloy_sol_types::private::AssertTypeEq::<
17289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17290                    >(_) => {}
17291                }
17292            }
17293            #[automatically_derived]
17294            #[doc(hidden)]
17295            impl ::core::convert::From<setMinCommissionUpdateIntervalCall>
17296            for UnderlyingRustTuple<'_> {
17297                fn from(value: setMinCommissionUpdateIntervalCall) -> Self {
17298                    (value.newInterval,)
17299                }
17300            }
17301            #[automatically_derived]
17302            #[doc(hidden)]
17303            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17304            for setMinCommissionUpdateIntervalCall {
17305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17306                    Self { newInterval: tuple.0 }
17307                }
17308            }
17309        }
17310        {
17311            #[doc(hidden)]
17312            #[allow(dead_code)]
17313            type UnderlyingSolTuple<'a> = ();
17314            #[doc(hidden)]
17315            type UnderlyingRustTuple<'a> = ();
17316            #[cfg(test)]
17317            #[allow(dead_code, unreachable_patterns)]
17318            fn _type_assertion(
17319                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17320            ) {
17321                match _t {
17322                    alloy_sol_types::private::AssertTypeEq::<
17323                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17324                    >(_) => {}
17325                }
17326            }
17327            #[automatically_derived]
17328            #[doc(hidden)]
17329            impl ::core::convert::From<setMinCommissionUpdateIntervalReturn>
17330            for UnderlyingRustTuple<'_> {
17331                fn from(value: setMinCommissionUpdateIntervalReturn) -> Self {
17332                    ()
17333                }
17334            }
17335            #[automatically_derived]
17336            #[doc(hidden)]
17337            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17338            for setMinCommissionUpdateIntervalReturn {
17339                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17340                    Self {}
17341                }
17342            }
17343        }
17344        impl setMinCommissionUpdateIntervalReturn {
17345            fn _tokenize(
17346                &self,
17347            ) -> <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::ReturnToken<
17348                '_,
17349            > {
17350                ()
17351            }
17352        }
17353        #[automatically_derived]
17354        impl alloy_sol_types::SolCall for setMinCommissionUpdateIntervalCall {
17355            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17356            type Token<'a> = <Self::Parameters<
17357                'a,
17358            > as alloy_sol_types::SolType>::Token<'a>;
17359            type Return = setMinCommissionUpdateIntervalReturn;
17360            type ReturnTuple<'a> = ();
17361            type ReturnToken<'a> = <Self::ReturnTuple<
17362                'a,
17363            > as alloy_sol_types::SolType>::Token<'a>;
17364            const SIGNATURE: &'static str = "setMinCommissionUpdateInterval(uint256)";
17365            const SELECTOR: [u8; 4] = [57u8, 75u8, 52u8, 143u8];
17366            #[inline]
17367            fn new<'a>(
17368                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17369            ) -> Self {
17370                tuple.into()
17371            }
17372            #[inline]
17373            fn tokenize(&self) -> Self::Token<'_> {
17374                (
17375                    <alloy::sol_types::sol_data::Uint<
17376                        256,
17377                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
17378                )
17379            }
17380            #[inline]
17381            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17382                setMinCommissionUpdateIntervalReturn::_tokenize(ret)
17383            }
17384            #[inline]
17385            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17386                <Self::ReturnTuple<
17387                    '_,
17388                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17389                    .map(Into::into)
17390            }
17391            #[inline]
17392            fn abi_decode_returns_validate(
17393                data: &[u8],
17394            ) -> alloy_sol_types::Result<Self::Return> {
17395                <Self::ReturnTuple<
17396                    '_,
17397                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17398                    .map(Into::into)
17399            }
17400        }
17401    };
17402    #[derive(serde::Serialize, serde::Deserialize)]
17403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17404    /**Function with signature `setMinDelegateAmount(uint256)` and selector `0x3e732eba`.
17405```solidity
17406function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
17407```*/
17408    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17409    #[derive(Clone)]
17410    pub struct setMinDelegateAmountCall {
17411        #[allow(missing_docs)]
17412        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
17413    }
17414    ///Container type for the return parameters of the [`setMinDelegateAmount(uint256)`](setMinDelegateAmountCall) function.
17415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17416    #[derive(Clone)]
17417    pub struct setMinDelegateAmountReturn {}
17418    #[allow(
17419        non_camel_case_types,
17420        non_snake_case,
17421        clippy::pub_underscore_fields,
17422        clippy::style
17423    )]
17424    const _: () = {
17425        use alloy::sol_types as alloy_sol_types;
17426        {
17427            #[doc(hidden)]
17428            #[allow(dead_code)]
17429            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17430            #[doc(hidden)]
17431            type UnderlyingRustTuple<'a> = (
17432                alloy::sol_types::private::primitives::aliases::U256,
17433            );
17434            #[cfg(test)]
17435            #[allow(dead_code, unreachable_patterns)]
17436            fn _type_assertion(
17437                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17438            ) {
17439                match _t {
17440                    alloy_sol_types::private::AssertTypeEq::<
17441                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17442                    >(_) => {}
17443                }
17444            }
17445            #[automatically_derived]
17446            #[doc(hidden)]
17447            impl ::core::convert::From<setMinDelegateAmountCall>
17448            for UnderlyingRustTuple<'_> {
17449                fn from(value: setMinDelegateAmountCall) -> Self {
17450                    (value.newMinDelegateAmount,)
17451                }
17452            }
17453            #[automatically_derived]
17454            #[doc(hidden)]
17455            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17456            for setMinDelegateAmountCall {
17457                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17458                    Self {
17459                        newMinDelegateAmount: tuple.0,
17460                    }
17461                }
17462            }
17463        }
17464        {
17465            #[doc(hidden)]
17466            #[allow(dead_code)]
17467            type UnderlyingSolTuple<'a> = ();
17468            #[doc(hidden)]
17469            type UnderlyingRustTuple<'a> = ();
17470            #[cfg(test)]
17471            #[allow(dead_code, unreachable_patterns)]
17472            fn _type_assertion(
17473                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17474            ) {
17475                match _t {
17476                    alloy_sol_types::private::AssertTypeEq::<
17477                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17478                    >(_) => {}
17479                }
17480            }
17481            #[automatically_derived]
17482            #[doc(hidden)]
17483            impl ::core::convert::From<setMinDelegateAmountReturn>
17484            for UnderlyingRustTuple<'_> {
17485                fn from(value: setMinDelegateAmountReturn) -> Self {
17486                    ()
17487                }
17488            }
17489            #[automatically_derived]
17490            #[doc(hidden)]
17491            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17492            for setMinDelegateAmountReturn {
17493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17494                    Self {}
17495                }
17496            }
17497        }
17498        impl setMinDelegateAmountReturn {
17499            fn _tokenize(
17500                &self,
17501            ) -> <setMinDelegateAmountCall as alloy_sol_types::SolCall>::ReturnToken<
17502                '_,
17503            > {
17504                ()
17505            }
17506        }
17507        #[automatically_derived]
17508        impl alloy_sol_types::SolCall for setMinDelegateAmountCall {
17509            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17510            type Token<'a> = <Self::Parameters<
17511                'a,
17512            > as alloy_sol_types::SolType>::Token<'a>;
17513            type Return = setMinDelegateAmountReturn;
17514            type ReturnTuple<'a> = ();
17515            type ReturnToken<'a> = <Self::ReturnTuple<
17516                'a,
17517            > as alloy_sol_types::SolType>::Token<'a>;
17518            const SIGNATURE: &'static str = "setMinDelegateAmount(uint256)";
17519            const SELECTOR: [u8; 4] = [62u8, 115u8, 46u8, 186u8];
17520            #[inline]
17521            fn new<'a>(
17522                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17523            ) -> Self {
17524                tuple.into()
17525            }
17526            #[inline]
17527            fn tokenize(&self) -> Self::Token<'_> {
17528                (
17529                    <alloy::sol_types::sol_data::Uint<
17530                        256,
17531                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
17532                )
17533            }
17534            #[inline]
17535            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17536                setMinDelegateAmountReturn::_tokenize(ret)
17537            }
17538            #[inline]
17539            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17540                <Self::ReturnTuple<
17541                    '_,
17542                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17543                    .map(Into::into)
17544            }
17545            #[inline]
17546            fn abi_decode_returns_validate(
17547                data: &[u8],
17548            ) -> alloy_sol_types::Result<Self::Return> {
17549                <Self::ReturnTuple<
17550                    '_,
17551                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17552                    .map(Into::into)
17553            }
17554        }
17555    };
17556    #[derive(serde::Serialize, serde::Deserialize)]
17557    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17558    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
17559```solidity
17560function supportsInterface(bytes4 interfaceId) external view returns (bool);
17561```*/
17562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17563    #[derive(Clone)]
17564    pub struct supportsInterfaceCall {
17565        #[allow(missing_docs)]
17566        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
17567    }
17568    #[derive(serde::Serialize, serde::Deserialize)]
17569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17570    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
17571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17572    #[derive(Clone)]
17573    pub struct supportsInterfaceReturn {
17574        #[allow(missing_docs)]
17575        pub _0: bool,
17576    }
17577    #[allow(
17578        non_camel_case_types,
17579        non_snake_case,
17580        clippy::pub_underscore_fields,
17581        clippy::style
17582    )]
17583    const _: () = {
17584        use alloy::sol_types as alloy_sol_types;
17585        {
17586            #[doc(hidden)]
17587            #[allow(dead_code)]
17588            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
17589            #[doc(hidden)]
17590            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
17591            #[cfg(test)]
17592            #[allow(dead_code, unreachable_patterns)]
17593            fn _type_assertion(
17594                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17595            ) {
17596                match _t {
17597                    alloy_sol_types::private::AssertTypeEq::<
17598                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17599                    >(_) => {}
17600                }
17601            }
17602            #[automatically_derived]
17603            #[doc(hidden)]
17604            impl ::core::convert::From<supportsInterfaceCall>
17605            for UnderlyingRustTuple<'_> {
17606                fn from(value: supportsInterfaceCall) -> Self {
17607                    (value.interfaceId,)
17608                }
17609            }
17610            #[automatically_derived]
17611            #[doc(hidden)]
17612            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17613            for supportsInterfaceCall {
17614                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17615                    Self { interfaceId: tuple.0 }
17616                }
17617            }
17618        }
17619        {
17620            #[doc(hidden)]
17621            #[allow(dead_code)]
17622            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17623            #[doc(hidden)]
17624            type UnderlyingRustTuple<'a> = (bool,);
17625            #[cfg(test)]
17626            #[allow(dead_code, unreachable_patterns)]
17627            fn _type_assertion(
17628                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17629            ) {
17630                match _t {
17631                    alloy_sol_types::private::AssertTypeEq::<
17632                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17633                    >(_) => {}
17634                }
17635            }
17636            #[automatically_derived]
17637            #[doc(hidden)]
17638            impl ::core::convert::From<supportsInterfaceReturn>
17639            for UnderlyingRustTuple<'_> {
17640                fn from(value: supportsInterfaceReturn) -> Self {
17641                    (value._0,)
17642                }
17643            }
17644            #[automatically_derived]
17645            #[doc(hidden)]
17646            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17647            for supportsInterfaceReturn {
17648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17649                    Self { _0: tuple.0 }
17650                }
17651            }
17652        }
17653        #[automatically_derived]
17654        impl alloy_sol_types::SolCall for supportsInterfaceCall {
17655            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
17656            type Token<'a> = <Self::Parameters<
17657                'a,
17658            > as alloy_sol_types::SolType>::Token<'a>;
17659            type Return = bool;
17660            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17661            type ReturnToken<'a> = <Self::ReturnTuple<
17662                'a,
17663            > as alloy_sol_types::SolType>::Token<'a>;
17664            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
17665            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
17666            #[inline]
17667            fn new<'a>(
17668                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17669            ) -> Self {
17670                tuple.into()
17671            }
17672            #[inline]
17673            fn tokenize(&self) -> Self::Token<'_> {
17674                (
17675                    <alloy::sol_types::sol_data::FixedBytes<
17676                        4,
17677                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
17678                )
17679            }
17680            #[inline]
17681            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17682                (
17683                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
17684                        ret,
17685                    ),
17686                )
17687            }
17688            #[inline]
17689            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17690                <Self::ReturnTuple<
17691                    '_,
17692                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17693                    .map(|r| {
17694                        let r: supportsInterfaceReturn = r.into();
17695                        r._0
17696                    })
17697            }
17698            #[inline]
17699            fn abi_decode_returns_validate(
17700                data: &[u8],
17701            ) -> alloy_sol_types::Result<Self::Return> {
17702                <Self::ReturnTuple<
17703                    '_,
17704                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17705                    .map(|r| {
17706                        let r: supportsInterfaceReturn = r.into();
17707                        r._0
17708                    })
17709            }
17710        }
17711    };
17712    #[derive(serde::Serialize, serde::Deserialize)]
17713    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17714    /**Function with signature `token()` and selector `0xfc0c546a`.
17715```solidity
17716function token() external view returns (address);
17717```*/
17718    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17719    #[derive(Clone)]
17720    pub struct tokenCall;
17721    #[derive(serde::Serialize, serde::Deserialize)]
17722    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17723    ///Container type for the return parameters of the [`token()`](tokenCall) function.
17724    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17725    #[derive(Clone)]
17726    pub struct tokenReturn {
17727        #[allow(missing_docs)]
17728        pub _0: alloy::sol_types::private::Address,
17729    }
17730    #[allow(
17731        non_camel_case_types,
17732        non_snake_case,
17733        clippy::pub_underscore_fields,
17734        clippy::style
17735    )]
17736    const _: () = {
17737        use alloy::sol_types as alloy_sol_types;
17738        {
17739            #[doc(hidden)]
17740            #[allow(dead_code)]
17741            type UnderlyingSolTuple<'a> = ();
17742            #[doc(hidden)]
17743            type UnderlyingRustTuple<'a> = ();
17744            #[cfg(test)]
17745            #[allow(dead_code, unreachable_patterns)]
17746            fn _type_assertion(
17747                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17748            ) {
17749                match _t {
17750                    alloy_sol_types::private::AssertTypeEq::<
17751                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17752                    >(_) => {}
17753                }
17754            }
17755            #[automatically_derived]
17756            #[doc(hidden)]
17757            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
17758                fn from(value: tokenCall) -> Self {
17759                    ()
17760                }
17761            }
17762            #[automatically_derived]
17763            #[doc(hidden)]
17764            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
17765                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17766                    Self
17767                }
17768            }
17769        }
17770        {
17771            #[doc(hidden)]
17772            #[allow(dead_code)]
17773            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17774            #[doc(hidden)]
17775            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17776            #[cfg(test)]
17777            #[allow(dead_code, unreachable_patterns)]
17778            fn _type_assertion(
17779                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17780            ) {
17781                match _t {
17782                    alloy_sol_types::private::AssertTypeEq::<
17783                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17784                    >(_) => {}
17785                }
17786            }
17787            #[automatically_derived]
17788            #[doc(hidden)]
17789            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
17790                fn from(value: tokenReturn) -> Self {
17791                    (value._0,)
17792                }
17793            }
17794            #[automatically_derived]
17795            #[doc(hidden)]
17796            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
17797                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17798                    Self { _0: tuple.0 }
17799                }
17800            }
17801        }
17802        #[automatically_derived]
17803        impl alloy_sol_types::SolCall for tokenCall {
17804            type Parameters<'a> = ();
17805            type Token<'a> = <Self::Parameters<
17806                'a,
17807            > as alloy_sol_types::SolType>::Token<'a>;
17808            type Return = alloy::sol_types::private::Address;
17809            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
17810            type ReturnToken<'a> = <Self::ReturnTuple<
17811                'a,
17812            > as alloy_sol_types::SolType>::Token<'a>;
17813            const SIGNATURE: &'static str = "token()";
17814            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
17815            #[inline]
17816            fn new<'a>(
17817                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17818            ) -> Self {
17819                tuple.into()
17820            }
17821            #[inline]
17822            fn tokenize(&self) -> Self::Token<'_> {
17823                ()
17824            }
17825            #[inline]
17826            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17827                (
17828                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17829                        ret,
17830                    ),
17831                )
17832            }
17833            #[inline]
17834            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17835                <Self::ReturnTuple<
17836                    '_,
17837                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17838                    .map(|r| {
17839                        let r: tokenReturn = r.into();
17840                        r._0
17841                    })
17842            }
17843            #[inline]
17844            fn abi_decode_returns_validate(
17845                data: &[u8],
17846            ) -> alloy_sol_types::Result<Self::Return> {
17847                <Self::ReturnTuple<
17848                    '_,
17849                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17850                    .map(|r| {
17851                        let r: tokenReturn = r.into();
17852                        r._0
17853                    })
17854            }
17855        }
17856    };
17857    #[derive(serde::Serialize, serde::Deserialize)]
17858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17859    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
17860```solidity
17861function transferOwnership(address newOwner) external;
17862```*/
17863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17864    #[derive(Clone)]
17865    pub struct transferOwnershipCall {
17866        #[allow(missing_docs)]
17867        pub newOwner: alloy::sol_types::private::Address,
17868    }
17869    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
17870    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17871    #[derive(Clone)]
17872    pub struct transferOwnershipReturn {}
17873    #[allow(
17874        non_camel_case_types,
17875        non_snake_case,
17876        clippy::pub_underscore_fields,
17877        clippy::style
17878    )]
17879    const _: () = {
17880        use alloy::sol_types as alloy_sol_types;
17881        {
17882            #[doc(hidden)]
17883            #[allow(dead_code)]
17884            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17885            #[doc(hidden)]
17886            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17887            #[cfg(test)]
17888            #[allow(dead_code, unreachable_patterns)]
17889            fn _type_assertion(
17890                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17891            ) {
17892                match _t {
17893                    alloy_sol_types::private::AssertTypeEq::<
17894                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17895                    >(_) => {}
17896                }
17897            }
17898            #[automatically_derived]
17899            #[doc(hidden)]
17900            impl ::core::convert::From<transferOwnershipCall>
17901            for UnderlyingRustTuple<'_> {
17902                fn from(value: transferOwnershipCall) -> Self {
17903                    (value.newOwner,)
17904                }
17905            }
17906            #[automatically_derived]
17907            #[doc(hidden)]
17908            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17909            for transferOwnershipCall {
17910                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17911                    Self { newOwner: tuple.0 }
17912                }
17913            }
17914        }
17915        {
17916            #[doc(hidden)]
17917            #[allow(dead_code)]
17918            type UnderlyingSolTuple<'a> = ();
17919            #[doc(hidden)]
17920            type UnderlyingRustTuple<'a> = ();
17921            #[cfg(test)]
17922            #[allow(dead_code, unreachable_patterns)]
17923            fn _type_assertion(
17924                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17925            ) {
17926                match _t {
17927                    alloy_sol_types::private::AssertTypeEq::<
17928                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17929                    >(_) => {}
17930                }
17931            }
17932            #[automatically_derived]
17933            #[doc(hidden)]
17934            impl ::core::convert::From<transferOwnershipReturn>
17935            for UnderlyingRustTuple<'_> {
17936                fn from(value: transferOwnershipReturn) -> Self {
17937                    ()
17938                }
17939            }
17940            #[automatically_derived]
17941            #[doc(hidden)]
17942            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17943            for transferOwnershipReturn {
17944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17945                    Self {}
17946                }
17947            }
17948        }
17949        impl transferOwnershipReturn {
17950            fn _tokenize(
17951                &self,
17952            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17953                ()
17954            }
17955        }
17956        #[automatically_derived]
17957        impl alloy_sol_types::SolCall for transferOwnershipCall {
17958            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
17959            type Token<'a> = <Self::Parameters<
17960                'a,
17961            > as alloy_sol_types::SolType>::Token<'a>;
17962            type Return = transferOwnershipReturn;
17963            type ReturnTuple<'a> = ();
17964            type ReturnToken<'a> = <Self::ReturnTuple<
17965                'a,
17966            > as alloy_sol_types::SolType>::Token<'a>;
17967            const SIGNATURE: &'static str = "transferOwnership(address)";
17968            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
17969            #[inline]
17970            fn new<'a>(
17971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17972            ) -> Self {
17973                tuple.into()
17974            }
17975            #[inline]
17976            fn tokenize(&self) -> Self::Token<'_> {
17977                (
17978                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17979                        &self.newOwner,
17980                    ),
17981                )
17982            }
17983            #[inline]
17984            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17985                transferOwnershipReturn::_tokenize(ret)
17986            }
17987            #[inline]
17988            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17989                <Self::ReturnTuple<
17990                    '_,
17991                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17992                    .map(Into::into)
17993            }
17994            #[inline]
17995            fn abi_decode_returns_validate(
17996                data: &[u8],
17997            ) -> alloy_sol_types::Result<Self::Return> {
17998                <Self::ReturnTuple<
17999                    '_,
18000                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18001                    .map(Into::into)
18002            }
18003        }
18004    };
18005    #[derive(serde::Serialize, serde::Deserialize)]
18006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18007    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
18008```solidity
18009function undelegate(address validator, uint256 amount) external;
18010```*/
18011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18012    #[derive(Clone)]
18013    pub struct undelegateCall {
18014        #[allow(missing_docs)]
18015        pub validator: alloy::sol_types::private::Address,
18016        #[allow(missing_docs)]
18017        pub amount: alloy::sol_types::private::primitives::aliases::U256,
18018    }
18019    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
18020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18021    #[derive(Clone)]
18022    pub struct undelegateReturn {}
18023    #[allow(
18024        non_camel_case_types,
18025        non_snake_case,
18026        clippy::pub_underscore_fields,
18027        clippy::style
18028    )]
18029    const _: () = {
18030        use alloy::sol_types as alloy_sol_types;
18031        {
18032            #[doc(hidden)]
18033            #[allow(dead_code)]
18034            type UnderlyingSolTuple<'a> = (
18035                alloy::sol_types::sol_data::Address,
18036                alloy::sol_types::sol_data::Uint<256>,
18037            );
18038            #[doc(hidden)]
18039            type UnderlyingRustTuple<'a> = (
18040                alloy::sol_types::private::Address,
18041                alloy::sol_types::private::primitives::aliases::U256,
18042            );
18043            #[cfg(test)]
18044            #[allow(dead_code, unreachable_patterns)]
18045            fn _type_assertion(
18046                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18047            ) {
18048                match _t {
18049                    alloy_sol_types::private::AssertTypeEq::<
18050                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18051                    >(_) => {}
18052                }
18053            }
18054            #[automatically_derived]
18055            #[doc(hidden)]
18056            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
18057                fn from(value: undelegateCall) -> Self {
18058                    (value.validator, value.amount)
18059                }
18060            }
18061            #[automatically_derived]
18062            #[doc(hidden)]
18063            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
18064                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18065                    Self {
18066                        validator: tuple.0,
18067                        amount: tuple.1,
18068                    }
18069                }
18070            }
18071        }
18072        {
18073            #[doc(hidden)]
18074            #[allow(dead_code)]
18075            type UnderlyingSolTuple<'a> = ();
18076            #[doc(hidden)]
18077            type UnderlyingRustTuple<'a> = ();
18078            #[cfg(test)]
18079            #[allow(dead_code, unreachable_patterns)]
18080            fn _type_assertion(
18081                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18082            ) {
18083                match _t {
18084                    alloy_sol_types::private::AssertTypeEq::<
18085                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18086                    >(_) => {}
18087                }
18088            }
18089            #[automatically_derived]
18090            #[doc(hidden)]
18091            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
18092                fn from(value: undelegateReturn) -> Self {
18093                    ()
18094                }
18095            }
18096            #[automatically_derived]
18097            #[doc(hidden)]
18098            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
18099                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18100                    Self {}
18101                }
18102            }
18103        }
18104        impl undelegateReturn {
18105            fn _tokenize(
18106                &self,
18107            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18108                ()
18109            }
18110        }
18111        #[automatically_derived]
18112        impl alloy_sol_types::SolCall for undelegateCall {
18113            type Parameters<'a> = (
18114                alloy::sol_types::sol_data::Address,
18115                alloy::sol_types::sol_data::Uint<256>,
18116            );
18117            type Token<'a> = <Self::Parameters<
18118                'a,
18119            > as alloy_sol_types::SolType>::Token<'a>;
18120            type Return = undelegateReturn;
18121            type ReturnTuple<'a> = ();
18122            type ReturnToken<'a> = <Self::ReturnTuple<
18123                'a,
18124            > as alloy_sol_types::SolType>::Token<'a>;
18125            const SIGNATURE: &'static str = "undelegate(address,uint256)";
18126            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
18127            #[inline]
18128            fn new<'a>(
18129                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18130            ) -> Self {
18131                tuple.into()
18132            }
18133            #[inline]
18134            fn tokenize(&self) -> Self::Token<'_> {
18135                (
18136                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18137                        &self.validator,
18138                    ),
18139                    <alloy::sol_types::sol_data::Uint<
18140                        256,
18141                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
18142                )
18143            }
18144            #[inline]
18145            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18146                undelegateReturn::_tokenize(ret)
18147            }
18148            #[inline]
18149            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18150                <Self::ReturnTuple<
18151                    '_,
18152                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18153                    .map(Into::into)
18154            }
18155            #[inline]
18156            fn abi_decode_returns_validate(
18157                data: &[u8],
18158            ) -> alloy_sol_types::Result<Self::Return> {
18159                <Self::ReturnTuple<
18160                    '_,
18161                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18162                    .map(Into::into)
18163            }
18164        }
18165    };
18166    #[derive(serde::Serialize, serde::Deserialize)]
18167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18168    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
18169```solidity
18170function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
18171```*/
18172    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18173    #[derive(Clone)]
18174    pub struct undelegationsCall {
18175        #[allow(missing_docs)]
18176        pub validator: alloy::sol_types::private::Address,
18177        #[allow(missing_docs)]
18178        pub delegator: alloy::sol_types::private::Address,
18179    }
18180    #[derive(serde::Serialize, serde::Deserialize)]
18181    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18182    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
18183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18184    #[derive(Clone)]
18185    pub struct undelegationsReturn {
18186        #[allow(missing_docs)]
18187        pub amount: alloy::sol_types::private::primitives::aliases::U256,
18188        #[allow(missing_docs)]
18189        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
18190    }
18191    #[allow(
18192        non_camel_case_types,
18193        non_snake_case,
18194        clippy::pub_underscore_fields,
18195        clippy::style
18196    )]
18197    const _: () = {
18198        use alloy::sol_types as alloy_sol_types;
18199        {
18200            #[doc(hidden)]
18201            #[allow(dead_code)]
18202            type UnderlyingSolTuple<'a> = (
18203                alloy::sol_types::sol_data::Address,
18204                alloy::sol_types::sol_data::Address,
18205            );
18206            #[doc(hidden)]
18207            type UnderlyingRustTuple<'a> = (
18208                alloy::sol_types::private::Address,
18209                alloy::sol_types::private::Address,
18210            );
18211            #[cfg(test)]
18212            #[allow(dead_code, unreachable_patterns)]
18213            fn _type_assertion(
18214                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18215            ) {
18216                match _t {
18217                    alloy_sol_types::private::AssertTypeEq::<
18218                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18219                    >(_) => {}
18220                }
18221            }
18222            #[automatically_derived]
18223            #[doc(hidden)]
18224            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
18225                fn from(value: undelegationsCall) -> Self {
18226                    (value.validator, value.delegator)
18227                }
18228            }
18229            #[automatically_derived]
18230            #[doc(hidden)]
18231            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
18232                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18233                    Self {
18234                        validator: tuple.0,
18235                        delegator: tuple.1,
18236                    }
18237                }
18238            }
18239        }
18240        {
18241            #[doc(hidden)]
18242            #[allow(dead_code)]
18243            type UnderlyingSolTuple<'a> = (
18244                alloy::sol_types::sol_data::Uint<256>,
18245                alloy::sol_types::sol_data::Uint<256>,
18246            );
18247            #[doc(hidden)]
18248            type UnderlyingRustTuple<'a> = (
18249                alloy::sol_types::private::primitives::aliases::U256,
18250                alloy::sol_types::private::primitives::aliases::U256,
18251            );
18252            #[cfg(test)]
18253            #[allow(dead_code, unreachable_patterns)]
18254            fn _type_assertion(
18255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18256            ) {
18257                match _t {
18258                    alloy_sol_types::private::AssertTypeEq::<
18259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18260                    >(_) => {}
18261                }
18262            }
18263            #[automatically_derived]
18264            #[doc(hidden)]
18265            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
18266                fn from(value: undelegationsReturn) -> Self {
18267                    (value.amount, value.unlocksAt)
18268                }
18269            }
18270            #[automatically_derived]
18271            #[doc(hidden)]
18272            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
18273                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18274                    Self {
18275                        amount: tuple.0,
18276                        unlocksAt: tuple.1,
18277                    }
18278                }
18279            }
18280        }
18281        impl undelegationsReturn {
18282            fn _tokenize(
18283                &self,
18284            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18285                (
18286                    <alloy::sol_types::sol_data::Uint<
18287                        256,
18288                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
18289                    <alloy::sol_types::sol_data::Uint<
18290                        256,
18291                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
18292                )
18293            }
18294        }
18295        #[automatically_derived]
18296        impl alloy_sol_types::SolCall for undelegationsCall {
18297            type Parameters<'a> = (
18298                alloy::sol_types::sol_data::Address,
18299                alloy::sol_types::sol_data::Address,
18300            );
18301            type Token<'a> = <Self::Parameters<
18302                'a,
18303            > as alloy_sol_types::SolType>::Token<'a>;
18304            type Return = undelegationsReturn;
18305            type ReturnTuple<'a> = (
18306                alloy::sol_types::sol_data::Uint<256>,
18307                alloy::sol_types::sol_data::Uint<256>,
18308            );
18309            type ReturnToken<'a> = <Self::ReturnTuple<
18310                'a,
18311            > as alloy_sol_types::SolType>::Token<'a>;
18312            const SIGNATURE: &'static str = "undelegations(address,address)";
18313            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
18314            #[inline]
18315            fn new<'a>(
18316                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18317            ) -> Self {
18318                tuple.into()
18319            }
18320            #[inline]
18321            fn tokenize(&self) -> Self::Token<'_> {
18322                (
18323                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18324                        &self.validator,
18325                    ),
18326                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18327                        &self.delegator,
18328                    ),
18329                )
18330            }
18331            #[inline]
18332            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18333                undelegationsReturn::_tokenize(ret)
18334            }
18335            #[inline]
18336            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18337                <Self::ReturnTuple<
18338                    '_,
18339                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18340                    .map(Into::into)
18341            }
18342            #[inline]
18343            fn abi_decode_returns_validate(
18344                data: &[u8],
18345            ) -> alloy_sol_types::Result<Self::Return> {
18346                <Self::ReturnTuple<
18347                    '_,
18348                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18349                    .map(Into::into)
18350            }
18351        }
18352    };
18353    #[derive(serde::Serialize, serde::Deserialize)]
18354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18355    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
18356```solidity
18357function unpause() external;
18358```*/
18359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18360    #[derive(Clone)]
18361    pub struct unpauseCall;
18362    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
18363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18364    #[derive(Clone)]
18365    pub struct unpauseReturn {}
18366    #[allow(
18367        non_camel_case_types,
18368        non_snake_case,
18369        clippy::pub_underscore_fields,
18370        clippy::style
18371    )]
18372    const _: () = {
18373        use alloy::sol_types as alloy_sol_types;
18374        {
18375            #[doc(hidden)]
18376            #[allow(dead_code)]
18377            type UnderlyingSolTuple<'a> = ();
18378            #[doc(hidden)]
18379            type UnderlyingRustTuple<'a> = ();
18380            #[cfg(test)]
18381            #[allow(dead_code, unreachable_patterns)]
18382            fn _type_assertion(
18383                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18384            ) {
18385                match _t {
18386                    alloy_sol_types::private::AssertTypeEq::<
18387                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18388                    >(_) => {}
18389                }
18390            }
18391            #[automatically_derived]
18392            #[doc(hidden)]
18393            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
18394                fn from(value: unpauseCall) -> Self {
18395                    ()
18396                }
18397            }
18398            #[automatically_derived]
18399            #[doc(hidden)]
18400            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
18401                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18402                    Self
18403                }
18404            }
18405        }
18406        {
18407            #[doc(hidden)]
18408            #[allow(dead_code)]
18409            type UnderlyingSolTuple<'a> = ();
18410            #[doc(hidden)]
18411            type UnderlyingRustTuple<'a> = ();
18412            #[cfg(test)]
18413            #[allow(dead_code, unreachable_patterns)]
18414            fn _type_assertion(
18415                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18416            ) {
18417                match _t {
18418                    alloy_sol_types::private::AssertTypeEq::<
18419                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18420                    >(_) => {}
18421                }
18422            }
18423            #[automatically_derived]
18424            #[doc(hidden)]
18425            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
18426                fn from(value: unpauseReturn) -> Self {
18427                    ()
18428                }
18429            }
18430            #[automatically_derived]
18431            #[doc(hidden)]
18432            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
18433                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18434                    Self {}
18435                }
18436            }
18437        }
18438        impl unpauseReturn {
18439            fn _tokenize(
18440                &self,
18441            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18442                ()
18443            }
18444        }
18445        #[automatically_derived]
18446        impl alloy_sol_types::SolCall for unpauseCall {
18447            type Parameters<'a> = ();
18448            type Token<'a> = <Self::Parameters<
18449                'a,
18450            > as alloy_sol_types::SolType>::Token<'a>;
18451            type Return = unpauseReturn;
18452            type ReturnTuple<'a> = ();
18453            type ReturnToken<'a> = <Self::ReturnTuple<
18454                'a,
18455            > as alloy_sol_types::SolType>::Token<'a>;
18456            const SIGNATURE: &'static str = "unpause()";
18457            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
18458            #[inline]
18459            fn new<'a>(
18460                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18461            ) -> Self {
18462                tuple.into()
18463            }
18464            #[inline]
18465            fn tokenize(&self) -> Self::Token<'_> {
18466                ()
18467            }
18468            #[inline]
18469            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18470                unpauseReturn::_tokenize(ret)
18471            }
18472            #[inline]
18473            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18474                <Self::ReturnTuple<
18475                    '_,
18476                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18477                    .map(Into::into)
18478            }
18479            #[inline]
18480            fn abi_decode_returns_validate(
18481                data: &[u8],
18482            ) -> alloy_sol_types::Result<Self::Return> {
18483                <Self::ReturnTuple<
18484                    '_,
18485                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18486                    .map(Into::into)
18487            }
18488        }
18489    };
18490    #[derive(serde::Serialize, serde::Deserialize)]
18491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18492    /**Function with signature `updateCommission(uint16)` and selector `0x3b2b7ffa`.
18493```solidity
18494function updateCommission(uint16 newCommission) external;
18495```*/
18496    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18497    #[derive(Clone)]
18498    pub struct updateCommissionCall {
18499        #[allow(missing_docs)]
18500        pub newCommission: u16,
18501    }
18502    ///Container type for the return parameters of the [`updateCommission(uint16)`](updateCommissionCall) function.
18503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18504    #[derive(Clone)]
18505    pub struct updateCommissionReturn {}
18506    #[allow(
18507        non_camel_case_types,
18508        non_snake_case,
18509        clippy::pub_underscore_fields,
18510        clippy::style
18511    )]
18512    const _: () = {
18513        use alloy::sol_types as alloy_sol_types;
18514        {
18515            #[doc(hidden)]
18516            #[allow(dead_code)]
18517            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
18518            #[doc(hidden)]
18519            type UnderlyingRustTuple<'a> = (u16,);
18520            #[cfg(test)]
18521            #[allow(dead_code, unreachable_patterns)]
18522            fn _type_assertion(
18523                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18524            ) {
18525                match _t {
18526                    alloy_sol_types::private::AssertTypeEq::<
18527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18528                    >(_) => {}
18529                }
18530            }
18531            #[automatically_derived]
18532            #[doc(hidden)]
18533            impl ::core::convert::From<updateCommissionCall>
18534            for UnderlyingRustTuple<'_> {
18535                fn from(value: updateCommissionCall) -> Self {
18536                    (value.newCommission,)
18537                }
18538            }
18539            #[automatically_derived]
18540            #[doc(hidden)]
18541            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18542            for updateCommissionCall {
18543                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18544                    Self { newCommission: tuple.0 }
18545                }
18546            }
18547        }
18548        {
18549            #[doc(hidden)]
18550            #[allow(dead_code)]
18551            type UnderlyingSolTuple<'a> = ();
18552            #[doc(hidden)]
18553            type UnderlyingRustTuple<'a> = ();
18554            #[cfg(test)]
18555            #[allow(dead_code, unreachable_patterns)]
18556            fn _type_assertion(
18557                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18558            ) {
18559                match _t {
18560                    alloy_sol_types::private::AssertTypeEq::<
18561                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18562                    >(_) => {}
18563                }
18564            }
18565            #[automatically_derived]
18566            #[doc(hidden)]
18567            impl ::core::convert::From<updateCommissionReturn>
18568            for UnderlyingRustTuple<'_> {
18569                fn from(value: updateCommissionReturn) -> Self {
18570                    ()
18571                }
18572            }
18573            #[automatically_derived]
18574            #[doc(hidden)]
18575            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18576            for updateCommissionReturn {
18577                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18578                    Self {}
18579                }
18580            }
18581        }
18582        impl updateCommissionReturn {
18583            fn _tokenize(
18584                &self,
18585            ) -> <updateCommissionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18586                ()
18587            }
18588        }
18589        #[automatically_derived]
18590        impl alloy_sol_types::SolCall for updateCommissionCall {
18591            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
18592            type Token<'a> = <Self::Parameters<
18593                'a,
18594            > as alloy_sol_types::SolType>::Token<'a>;
18595            type Return = updateCommissionReturn;
18596            type ReturnTuple<'a> = ();
18597            type ReturnToken<'a> = <Self::ReturnTuple<
18598                'a,
18599            > as alloy_sol_types::SolType>::Token<'a>;
18600            const SIGNATURE: &'static str = "updateCommission(uint16)";
18601            const SELECTOR: [u8; 4] = [59u8, 43u8, 127u8, 250u8];
18602            #[inline]
18603            fn new<'a>(
18604                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18605            ) -> Self {
18606                tuple.into()
18607            }
18608            #[inline]
18609            fn tokenize(&self) -> Self::Token<'_> {
18610                (
18611                    <alloy::sol_types::sol_data::Uint<
18612                        16,
18613                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
18614                )
18615            }
18616            #[inline]
18617            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18618                updateCommissionReturn::_tokenize(ret)
18619            }
18620            #[inline]
18621            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18622                <Self::ReturnTuple<
18623                    '_,
18624                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18625                    .map(Into::into)
18626            }
18627            #[inline]
18628            fn abi_decode_returns_validate(
18629                data: &[u8],
18630            ) -> alloy_sol_types::Result<Self::Return> {
18631                <Self::ReturnTuple<
18632                    '_,
18633                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18634                    .map(Into::into)
18635            }
18636        }
18637    };
18638    #[derive(serde::Serialize, serde::Deserialize)]
18639    #[derive()]
18640    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
18641```solidity
18642function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
18643```*/
18644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18645    #[derive(Clone)]
18646    pub struct updateConsensusKeysCall {
18647        #[allow(missing_docs)]
18648        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18649        #[allow(missing_docs)]
18650        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18651        #[allow(missing_docs)]
18652        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18653    }
18654    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
18655    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18656    #[derive(Clone)]
18657    pub struct updateConsensusKeysReturn {}
18658    #[allow(
18659        non_camel_case_types,
18660        non_snake_case,
18661        clippy::pub_underscore_fields,
18662        clippy::style
18663    )]
18664    const _: () = {
18665        use alloy::sol_types as alloy_sol_types;
18666        {
18667            #[doc(hidden)]
18668            #[allow(dead_code)]
18669            type UnderlyingSolTuple<'a> = (
18670                BN254::G2Point,
18671                EdOnBN254::EdOnBN254Point,
18672                BN254::G1Point,
18673            );
18674            #[doc(hidden)]
18675            type UnderlyingRustTuple<'a> = (
18676                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18677                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18678                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18679            );
18680            #[cfg(test)]
18681            #[allow(dead_code, unreachable_patterns)]
18682            fn _type_assertion(
18683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18684            ) {
18685                match _t {
18686                    alloy_sol_types::private::AssertTypeEq::<
18687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18688                    >(_) => {}
18689                }
18690            }
18691            #[automatically_derived]
18692            #[doc(hidden)]
18693            impl ::core::convert::From<updateConsensusKeysCall>
18694            for UnderlyingRustTuple<'_> {
18695                fn from(value: updateConsensusKeysCall) -> Self {
18696                    (value._0, value._1, value._2)
18697                }
18698            }
18699            #[automatically_derived]
18700            #[doc(hidden)]
18701            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18702            for updateConsensusKeysCall {
18703                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18704                    Self {
18705                        _0: tuple.0,
18706                        _1: tuple.1,
18707                        _2: tuple.2,
18708                    }
18709                }
18710            }
18711        }
18712        {
18713            #[doc(hidden)]
18714            #[allow(dead_code)]
18715            type UnderlyingSolTuple<'a> = ();
18716            #[doc(hidden)]
18717            type UnderlyingRustTuple<'a> = ();
18718            #[cfg(test)]
18719            #[allow(dead_code, unreachable_patterns)]
18720            fn _type_assertion(
18721                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18722            ) {
18723                match _t {
18724                    alloy_sol_types::private::AssertTypeEq::<
18725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18726                    >(_) => {}
18727                }
18728            }
18729            #[automatically_derived]
18730            #[doc(hidden)]
18731            impl ::core::convert::From<updateConsensusKeysReturn>
18732            for UnderlyingRustTuple<'_> {
18733                fn from(value: updateConsensusKeysReturn) -> Self {
18734                    ()
18735                }
18736            }
18737            #[automatically_derived]
18738            #[doc(hidden)]
18739            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18740            for updateConsensusKeysReturn {
18741                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18742                    Self {}
18743                }
18744            }
18745        }
18746        impl updateConsensusKeysReturn {
18747            fn _tokenize(
18748                &self,
18749            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18750                ()
18751            }
18752        }
18753        #[automatically_derived]
18754        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
18755            type Parameters<'a> = (
18756                BN254::G2Point,
18757                EdOnBN254::EdOnBN254Point,
18758                BN254::G1Point,
18759            );
18760            type Token<'a> = <Self::Parameters<
18761                'a,
18762            > as alloy_sol_types::SolType>::Token<'a>;
18763            type Return = updateConsensusKeysReturn;
18764            type ReturnTuple<'a> = ();
18765            type ReturnToken<'a> = <Self::ReturnTuple<
18766                'a,
18767            > as alloy_sol_types::SolType>::Token<'a>;
18768            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
18769            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
18770            #[inline]
18771            fn new<'a>(
18772                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18773            ) -> Self {
18774                tuple.into()
18775            }
18776            #[inline]
18777            fn tokenize(&self) -> Self::Token<'_> {
18778                (
18779                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
18780                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18781                        &self._1,
18782                    ),
18783                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
18784                )
18785            }
18786            #[inline]
18787            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18788                updateConsensusKeysReturn::_tokenize(ret)
18789            }
18790            #[inline]
18791            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18792                <Self::ReturnTuple<
18793                    '_,
18794                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18795                    .map(Into::into)
18796            }
18797            #[inline]
18798            fn abi_decode_returns_validate(
18799                data: &[u8],
18800            ) -> alloy_sol_types::Result<Self::Return> {
18801                <Self::ReturnTuple<
18802                    '_,
18803                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18804                    .map(Into::into)
18805            }
18806        }
18807    };
18808    #[derive(serde::Serialize, serde::Deserialize)]
18809    #[derive()]
18810    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
18811```solidity
18812function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
18813```*/
18814    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18815    #[derive(Clone)]
18816    pub struct updateConsensusKeysV2Call {
18817        #[allow(missing_docs)]
18818        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18819        #[allow(missing_docs)]
18820        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18821        #[allow(missing_docs)]
18822        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18823        #[allow(missing_docs)]
18824        pub schnorrSig: alloy::sol_types::private::Bytes,
18825    }
18826    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
18827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18828    #[derive(Clone)]
18829    pub struct updateConsensusKeysV2Return {}
18830    #[allow(
18831        non_camel_case_types,
18832        non_snake_case,
18833        clippy::pub_underscore_fields,
18834        clippy::style
18835    )]
18836    const _: () = {
18837        use alloy::sol_types as alloy_sol_types;
18838        {
18839            #[doc(hidden)]
18840            #[allow(dead_code)]
18841            type UnderlyingSolTuple<'a> = (
18842                BN254::G2Point,
18843                EdOnBN254::EdOnBN254Point,
18844                BN254::G1Point,
18845                alloy::sol_types::sol_data::Bytes,
18846            );
18847            #[doc(hidden)]
18848            type UnderlyingRustTuple<'a> = (
18849                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18850                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18851                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18852                alloy::sol_types::private::Bytes,
18853            );
18854            #[cfg(test)]
18855            #[allow(dead_code, unreachable_patterns)]
18856            fn _type_assertion(
18857                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18858            ) {
18859                match _t {
18860                    alloy_sol_types::private::AssertTypeEq::<
18861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18862                    >(_) => {}
18863                }
18864            }
18865            #[automatically_derived]
18866            #[doc(hidden)]
18867            impl ::core::convert::From<updateConsensusKeysV2Call>
18868            for UnderlyingRustTuple<'_> {
18869                fn from(value: updateConsensusKeysV2Call) -> Self {
18870                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
18871                }
18872            }
18873            #[automatically_derived]
18874            #[doc(hidden)]
18875            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18876            for updateConsensusKeysV2Call {
18877                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18878                    Self {
18879                        blsVK: tuple.0,
18880                        schnorrVK: tuple.1,
18881                        blsSig: tuple.2,
18882                        schnorrSig: tuple.3,
18883                    }
18884                }
18885            }
18886        }
18887        {
18888            #[doc(hidden)]
18889            #[allow(dead_code)]
18890            type UnderlyingSolTuple<'a> = ();
18891            #[doc(hidden)]
18892            type UnderlyingRustTuple<'a> = ();
18893            #[cfg(test)]
18894            #[allow(dead_code, unreachable_patterns)]
18895            fn _type_assertion(
18896                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18897            ) {
18898                match _t {
18899                    alloy_sol_types::private::AssertTypeEq::<
18900                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18901                    >(_) => {}
18902                }
18903            }
18904            #[automatically_derived]
18905            #[doc(hidden)]
18906            impl ::core::convert::From<updateConsensusKeysV2Return>
18907            for UnderlyingRustTuple<'_> {
18908                fn from(value: updateConsensusKeysV2Return) -> Self {
18909                    ()
18910                }
18911            }
18912            #[automatically_derived]
18913            #[doc(hidden)]
18914            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18915            for updateConsensusKeysV2Return {
18916                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18917                    Self {}
18918                }
18919            }
18920        }
18921        impl updateConsensusKeysV2Return {
18922            fn _tokenize(
18923                &self,
18924            ) -> <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::ReturnToken<
18925                '_,
18926            > {
18927                ()
18928            }
18929        }
18930        #[automatically_derived]
18931        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
18932            type Parameters<'a> = (
18933                BN254::G2Point,
18934                EdOnBN254::EdOnBN254Point,
18935                BN254::G1Point,
18936                alloy::sol_types::sol_data::Bytes,
18937            );
18938            type Token<'a> = <Self::Parameters<
18939                'a,
18940            > as alloy_sol_types::SolType>::Token<'a>;
18941            type Return = updateConsensusKeysV2Return;
18942            type ReturnTuple<'a> = ();
18943            type ReturnToken<'a> = <Self::ReturnTuple<
18944                'a,
18945            > as alloy_sol_types::SolType>::Token<'a>;
18946            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
18947            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
18948            #[inline]
18949            fn new<'a>(
18950                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18951            ) -> Self {
18952                tuple.into()
18953            }
18954            #[inline]
18955            fn tokenize(&self) -> Self::Token<'_> {
18956                (
18957                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
18958                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18959                        &self.schnorrVK,
18960                    ),
18961                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
18962                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
18963                        &self.schnorrSig,
18964                    ),
18965                )
18966            }
18967            #[inline]
18968            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18969                updateConsensusKeysV2Return::_tokenize(ret)
18970            }
18971            #[inline]
18972            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18973                <Self::ReturnTuple<
18974                    '_,
18975                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18976                    .map(Into::into)
18977            }
18978            #[inline]
18979            fn abi_decode_returns_validate(
18980                data: &[u8],
18981            ) -> alloy_sol_types::Result<Self::Return> {
18982                <Self::ReturnTuple<
18983                    '_,
18984                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18985                    .map(Into::into)
18986            }
18987        }
18988    };
18989    #[derive(serde::Serialize, serde::Deserialize)]
18990    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18991    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
18992```solidity
18993function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
18994```*/
18995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18996    #[derive(Clone)]
18997    pub struct updateExitEscrowPeriodCall {
18998        #[allow(missing_docs)]
18999        pub newExitEscrowPeriod: u64,
19000    }
19001    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
19002    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19003    #[derive(Clone)]
19004    pub struct updateExitEscrowPeriodReturn {}
19005    #[allow(
19006        non_camel_case_types,
19007        non_snake_case,
19008        clippy::pub_underscore_fields,
19009        clippy::style
19010    )]
19011    const _: () = {
19012        use alloy::sol_types as alloy_sol_types;
19013        {
19014            #[doc(hidden)]
19015            #[allow(dead_code)]
19016            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
19017            #[doc(hidden)]
19018            type UnderlyingRustTuple<'a> = (u64,);
19019            #[cfg(test)]
19020            #[allow(dead_code, unreachable_patterns)]
19021            fn _type_assertion(
19022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19023            ) {
19024                match _t {
19025                    alloy_sol_types::private::AssertTypeEq::<
19026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19027                    >(_) => {}
19028                }
19029            }
19030            #[automatically_derived]
19031            #[doc(hidden)]
19032            impl ::core::convert::From<updateExitEscrowPeriodCall>
19033            for UnderlyingRustTuple<'_> {
19034                fn from(value: updateExitEscrowPeriodCall) -> Self {
19035                    (value.newExitEscrowPeriod,)
19036                }
19037            }
19038            #[automatically_derived]
19039            #[doc(hidden)]
19040            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19041            for updateExitEscrowPeriodCall {
19042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19043                    Self {
19044                        newExitEscrowPeriod: tuple.0,
19045                    }
19046                }
19047            }
19048        }
19049        {
19050            #[doc(hidden)]
19051            #[allow(dead_code)]
19052            type UnderlyingSolTuple<'a> = ();
19053            #[doc(hidden)]
19054            type UnderlyingRustTuple<'a> = ();
19055            #[cfg(test)]
19056            #[allow(dead_code, unreachable_patterns)]
19057            fn _type_assertion(
19058                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19059            ) {
19060                match _t {
19061                    alloy_sol_types::private::AssertTypeEq::<
19062                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19063                    >(_) => {}
19064                }
19065            }
19066            #[automatically_derived]
19067            #[doc(hidden)]
19068            impl ::core::convert::From<updateExitEscrowPeriodReturn>
19069            for UnderlyingRustTuple<'_> {
19070                fn from(value: updateExitEscrowPeriodReturn) -> Self {
19071                    ()
19072                }
19073            }
19074            #[automatically_derived]
19075            #[doc(hidden)]
19076            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19077            for updateExitEscrowPeriodReturn {
19078                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19079                    Self {}
19080                }
19081            }
19082        }
19083        impl updateExitEscrowPeriodReturn {
19084            fn _tokenize(
19085                &self,
19086            ) -> <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
19087                '_,
19088            > {
19089                ()
19090            }
19091        }
19092        #[automatically_derived]
19093        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
19094            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
19095            type Token<'a> = <Self::Parameters<
19096                'a,
19097            > as alloy_sol_types::SolType>::Token<'a>;
19098            type Return = updateExitEscrowPeriodReturn;
19099            type ReturnTuple<'a> = ();
19100            type ReturnToken<'a> = <Self::ReturnTuple<
19101                'a,
19102            > as alloy_sol_types::SolType>::Token<'a>;
19103            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
19104            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
19105            #[inline]
19106            fn new<'a>(
19107                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19108            ) -> Self {
19109                tuple.into()
19110            }
19111            #[inline]
19112            fn tokenize(&self) -> Self::Token<'_> {
19113                (
19114                    <alloy::sol_types::sol_data::Uint<
19115                        64,
19116                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
19117                )
19118            }
19119            #[inline]
19120            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19121                updateExitEscrowPeriodReturn::_tokenize(ret)
19122            }
19123            #[inline]
19124            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19125                <Self::ReturnTuple<
19126                    '_,
19127                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19128                    .map(Into::into)
19129            }
19130            #[inline]
19131            fn abi_decode_returns_validate(
19132                data: &[u8],
19133            ) -> alloy_sol_types::Result<Self::Return> {
19134                <Self::ReturnTuple<
19135                    '_,
19136                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19137                    .map(Into::into)
19138            }
19139        }
19140    };
19141    #[derive(serde::Serialize, serde::Deserialize)]
19142    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19143    /**Function with signature `updateMetadataUri(string)` and selector `0x870c8f26`.
19144```solidity
19145function updateMetadataUri(string memory metadataUri) external;
19146```*/
19147    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19148    #[derive(Clone)]
19149    pub struct updateMetadataUriCall {
19150        #[allow(missing_docs)]
19151        pub metadataUri: alloy::sol_types::private::String,
19152    }
19153    ///Container type for the return parameters of the [`updateMetadataUri(string)`](updateMetadataUriCall) function.
19154    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19155    #[derive(Clone)]
19156    pub struct updateMetadataUriReturn {}
19157    #[allow(
19158        non_camel_case_types,
19159        non_snake_case,
19160        clippy::pub_underscore_fields,
19161        clippy::style
19162    )]
19163    const _: () = {
19164        use alloy::sol_types as alloy_sol_types;
19165        {
19166            #[doc(hidden)]
19167            #[allow(dead_code)]
19168            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
19169            #[doc(hidden)]
19170            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
19171            #[cfg(test)]
19172            #[allow(dead_code, unreachable_patterns)]
19173            fn _type_assertion(
19174                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19175            ) {
19176                match _t {
19177                    alloy_sol_types::private::AssertTypeEq::<
19178                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19179                    >(_) => {}
19180                }
19181            }
19182            #[automatically_derived]
19183            #[doc(hidden)]
19184            impl ::core::convert::From<updateMetadataUriCall>
19185            for UnderlyingRustTuple<'_> {
19186                fn from(value: updateMetadataUriCall) -> Self {
19187                    (value.metadataUri,)
19188                }
19189            }
19190            #[automatically_derived]
19191            #[doc(hidden)]
19192            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19193            for updateMetadataUriCall {
19194                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19195                    Self { metadataUri: tuple.0 }
19196                }
19197            }
19198        }
19199        {
19200            #[doc(hidden)]
19201            #[allow(dead_code)]
19202            type UnderlyingSolTuple<'a> = ();
19203            #[doc(hidden)]
19204            type UnderlyingRustTuple<'a> = ();
19205            #[cfg(test)]
19206            #[allow(dead_code, unreachable_patterns)]
19207            fn _type_assertion(
19208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19209            ) {
19210                match _t {
19211                    alloy_sol_types::private::AssertTypeEq::<
19212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19213                    >(_) => {}
19214                }
19215            }
19216            #[automatically_derived]
19217            #[doc(hidden)]
19218            impl ::core::convert::From<updateMetadataUriReturn>
19219            for UnderlyingRustTuple<'_> {
19220                fn from(value: updateMetadataUriReturn) -> Self {
19221                    ()
19222                }
19223            }
19224            #[automatically_derived]
19225            #[doc(hidden)]
19226            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19227            for updateMetadataUriReturn {
19228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19229                    Self {}
19230                }
19231            }
19232        }
19233        impl updateMetadataUriReturn {
19234            fn _tokenize(
19235                &self,
19236            ) -> <updateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19237                ()
19238            }
19239        }
19240        #[automatically_derived]
19241        impl alloy_sol_types::SolCall for updateMetadataUriCall {
19242            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
19243            type Token<'a> = <Self::Parameters<
19244                'a,
19245            > as alloy_sol_types::SolType>::Token<'a>;
19246            type Return = updateMetadataUriReturn;
19247            type ReturnTuple<'a> = ();
19248            type ReturnToken<'a> = <Self::ReturnTuple<
19249                'a,
19250            > as alloy_sol_types::SolType>::Token<'a>;
19251            const SIGNATURE: &'static str = "updateMetadataUri(string)";
19252            const SELECTOR: [u8; 4] = [135u8, 12u8, 143u8, 38u8];
19253            #[inline]
19254            fn new<'a>(
19255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19256            ) -> Self {
19257                tuple.into()
19258            }
19259            #[inline]
19260            fn tokenize(&self) -> Self::Token<'_> {
19261                (
19262                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
19263                        &self.metadataUri,
19264                    ),
19265                )
19266            }
19267            #[inline]
19268            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19269                updateMetadataUriReturn::_tokenize(ret)
19270            }
19271            #[inline]
19272            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19273                <Self::ReturnTuple<
19274                    '_,
19275                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19276                    .map(Into::into)
19277            }
19278            #[inline]
19279            fn abi_decode_returns_validate(
19280                data: &[u8],
19281            ) -> alloy_sol_types::Result<Self::Return> {
19282                <Self::ReturnTuple<
19283                    '_,
19284                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19285                    .map(Into::into)
19286            }
19287        }
19288    };
19289    #[derive(serde::Serialize, serde::Deserialize)]
19290    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19291    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
19292```solidity
19293function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
19294```*/
19295    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19296    #[derive(Clone)]
19297    pub struct upgradeToAndCallCall {
19298        #[allow(missing_docs)]
19299        pub newImplementation: alloy::sol_types::private::Address,
19300        #[allow(missing_docs)]
19301        pub data: alloy::sol_types::private::Bytes,
19302    }
19303    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
19304    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19305    #[derive(Clone)]
19306    pub struct upgradeToAndCallReturn {}
19307    #[allow(
19308        non_camel_case_types,
19309        non_snake_case,
19310        clippy::pub_underscore_fields,
19311        clippy::style
19312    )]
19313    const _: () = {
19314        use alloy::sol_types as alloy_sol_types;
19315        {
19316            #[doc(hidden)]
19317            #[allow(dead_code)]
19318            type UnderlyingSolTuple<'a> = (
19319                alloy::sol_types::sol_data::Address,
19320                alloy::sol_types::sol_data::Bytes,
19321            );
19322            #[doc(hidden)]
19323            type UnderlyingRustTuple<'a> = (
19324                alloy::sol_types::private::Address,
19325                alloy::sol_types::private::Bytes,
19326            );
19327            #[cfg(test)]
19328            #[allow(dead_code, unreachable_patterns)]
19329            fn _type_assertion(
19330                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19331            ) {
19332                match _t {
19333                    alloy_sol_types::private::AssertTypeEq::<
19334                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19335                    >(_) => {}
19336                }
19337            }
19338            #[automatically_derived]
19339            #[doc(hidden)]
19340            impl ::core::convert::From<upgradeToAndCallCall>
19341            for UnderlyingRustTuple<'_> {
19342                fn from(value: upgradeToAndCallCall) -> Self {
19343                    (value.newImplementation, value.data)
19344                }
19345            }
19346            #[automatically_derived]
19347            #[doc(hidden)]
19348            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19349            for upgradeToAndCallCall {
19350                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19351                    Self {
19352                        newImplementation: tuple.0,
19353                        data: tuple.1,
19354                    }
19355                }
19356            }
19357        }
19358        {
19359            #[doc(hidden)]
19360            #[allow(dead_code)]
19361            type UnderlyingSolTuple<'a> = ();
19362            #[doc(hidden)]
19363            type UnderlyingRustTuple<'a> = ();
19364            #[cfg(test)]
19365            #[allow(dead_code, unreachable_patterns)]
19366            fn _type_assertion(
19367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19368            ) {
19369                match _t {
19370                    alloy_sol_types::private::AssertTypeEq::<
19371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19372                    >(_) => {}
19373                }
19374            }
19375            #[automatically_derived]
19376            #[doc(hidden)]
19377            impl ::core::convert::From<upgradeToAndCallReturn>
19378            for UnderlyingRustTuple<'_> {
19379                fn from(value: upgradeToAndCallReturn) -> Self {
19380                    ()
19381                }
19382            }
19383            #[automatically_derived]
19384            #[doc(hidden)]
19385            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19386            for upgradeToAndCallReturn {
19387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19388                    Self {}
19389                }
19390            }
19391        }
19392        impl upgradeToAndCallReturn {
19393            fn _tokenize(
19394                &self,
19395            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19396                ()
19397            }
19398        }
19399        #[automatically_derived]
19400        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
19401            type Parameters<'a> = (
19402                alloy::sol_types::sol_data::Address,
19403                alloy::sol_types::sol_data::Bytes,
19404            );
19405            type Token<'a> = <Self::Parameters<
19406                'a,
19407            > as alloy_sol_types::SolType>::Token<'a>;
19408            type Return = upgradeToAndCallReturn;
19409            type ReturnTuple<'a> = ();
19410            type ReturnToken<'a> = <Self::ReturnTuple<
19411                'a,
19412            > as alloy_sol_types::SolType>::Token<'a>;
19413            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
19414            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
19415            #[inline]
19416            fn new<'a>(
19417                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19418            ) -> Self {
19419                tuple.into()
19420            }
19421            #[inline]
19422            fn tokenize(&self) -> Self::Token<'_> {
19423                (
19424                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19425                        &self.newImplementation,
19426                    ),
19427                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
19428                        &self.data,
19429                    ),
19430                )
19431            }
19432            #[inline]
19433            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19434                upgradeToAndCallReturn::_tokenize(ret)
19435            }
19436            #[inline]
19437            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19438                <Self::ReturnTuple<
19439                    '_,
19440                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19441                    .map(Into::into)
19442            }
19443            #[inline]
19444            fn abi_decode_returns_validate(
19445                data: &[u8],
19446            ) -> alloy_sol_types::Result<Self::Return> {
19447                <Self::ReturnTuple<
19448                    '_,
19449                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19450                    .map(Into::into)
19451            }
19452        }
19453    };
19454    #[derive(serde::Serialize, serde::Deserialize)]
19455    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19456    /**Function with signature `validateMetadataUri(string)` and selector `0xe3f237e6`.
19457```solidity
19458function validateMetadataUri(string memory metadataUri) external pure;
19459```*/
19460    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19461    #[derive(Clone)]
19462    pub struct validateMetadataUriCall {
19463        #[allow(missing_docs)]
19464        pub metadataUri: alloy::sol_types::private::String,
19465    }
19466    ///Container type for the return parameters of the [`validateMetadataUri(string)`](validateMetadataUriCall) function.
19467    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19468    #[derive(Clone)]
19469    pub struct validateMetadataUriReturn {}
19470    #[allow(
19471        non_camel_case_types,
19472        non_snake_case,
19473        clippy::pub_underscore_fields,
19474        clippy::style
19475    )]
19476    const _: () = {
19477        use alloy::sol_types as alloy_sol_types;
19478        {
19479            #[doc(hidden)]
19480            #[allow(dead_code)]
19481            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
19482            #[doc(hidden)]
19483            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
19484            #[cfg(test)]
19485            #[allow(dead_code, unreachable_patterns)]
19486            fn _type_assertion(
19487                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19488            ) {
19489                match _t {
19490                    alloy_sol_types::private::AssertTypeEq::<
19491                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19492                    >(_) => {}
19493                }
19494            }
19495            #[automatically_derived]
19496            #[doc(hidden)]
19497            impl ::core::convert::From<validateMetadataUriCall>
19498            for UnderlyingRustTuple<'_> {
19499                fn from(value: validateMetadataUriCall) -> Self {
19500                    (value.metadataUri,)
19501                }
19502            }
19503            #[automatically_derived]
19504            #[doc(hidden)]
19505            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19506            for validateMetadataUriCall {
19507                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19508                    Self { metadataUri: tuple.0 }
19509                }
19510            }
19511        }
19512        {
19513            #[doc(hidden)]
19514            #[allow(dead_code)]
19515            type UnderlyingSolTuple<'a> = ();
19516            #[doc(hidden)]
19517            type UnderlyingRustTuple<'a> = ();
19518            #[cfg(test)]
19519            #[allow(dead_code, unreachable_patterns)]
19520            fn _type_assertion(
19521                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19522            ) {
19523                match _t {
19524                    alloy_sol_types::private::AssertTypeEq::<
19525                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19526                    >(_) => {}
19527                }
19528            }
19529            #[automatically_derived]
19530            #[doc(hidden)]
19531            impl ::core::convert::From<validateMetadataUriReturn>
19532            for UnderlyingRustTuple<'_> {
19533                fn from(value: validateMetadataUriReturn) -> Self {
19534                    ()
19535                }
19536            }
19537            #[automatically_derived]
19538            #[doc(hidden)]
19539            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19540            for validateMetadataUriReturn {
19541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19542                    Self {}
19543                }
19544            }
19545        }
19546        impl validateMetadataUriReturn {
19547            fn _tokenize(
19548                &self,
19549            ) -> <validateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19550                ()
19551            }
19552        }
19553        #[automatically_derived]
19554        impl alloy_sol_types::SolCall for validateMetadataUriCall {
19555            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
19556            type Token<'a> = <Self::Parameters<
19557                'a,
19558            > as alloy_sol_types::SolType>::Token<'a>;
19559            type Return = validateMetadataUriReturn;
19560            type ReturnTuple<'a> = ();
19561            type ReturnToken<'a> = <Self::ReturnTuple<
19562                'a,
19563            > as alloy_sol_types::SolType>::Token<'a>;
19564            const SIGNATURE: &'static str = "validateMetadataUri(string)";
19565            const SELECTOR: [u8; 4] = [227u8, 242u8, 55u8, 230u8];
19566            #[inline]
19567            fn new<'a>(
19568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19569            ) -> Self {
19570                tuple.into()
19571            }
19572            #[inline]
19573            fn tokenize(&self) -> Self::Token<'_> {
19574                (
19575                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
19576                        &self.metadataUri,
19577                    ),
19578                )
19579            }
19580            #[inline]
19581            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19582                validateMetadataUriReturn::_tokenize(ret)
19583            }
19584            #[inline]
19585            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19586                <Self::ReturnTuple<
19587                    '_,
19588                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19589                    .map(Into::into)
19590            }
19591            #[inline]
19592            fn abi_decode_returns_validate(
19593                data: &[u8],
19594            ) -> alloy_sol_types::Result<Self::Return> {
19595                <Self::ReturnTuple<
19596                    '_,
19597                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19598                    .map(Into::into)
19599            }
19600        }
19601    };
19602    #[derive(serde::Serialize, serde::Deserialize)]
19603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19604    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
19605```solidity
19606function validatorExits(address validator) external view returns (uint256 unlocksAt);
19607```*/
19608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19609    #[derive(Clone)]
19610    pub struct validatorExitsCall {
19611        #[allow(missing_docs)]
19612        pub validator: alloy::sol_types::private::Address,
19613    }
19614    #[derive(serde::Serialize, serde::Deserialize)]
19615    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19616    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
19617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19618    #[derive(Clone)]
19619    pub struct validatorExitsReturn {
19620        #[allow(missing_docs)]
19621        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
19622    }
19623    #[allow(
19624        non_camel_case_types,
19625        non_snake_case,
19626        clippy::pub_underscore_fields,
19627        clippy::style
19628    )]
19629    const _: () = {
19630        use alloy::sol_types as alloy_sol_types;
19631        {
19632            #[doc(hidden)]
19633            #[allow(dead_code)]
19634            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19635            #[doc(hidden)]
19636            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19637            #[cfg(test)]
19638            #[allow(dead_code, unreachable_patterns)]
19639            fn _type_assertion(
19640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19641            ) {
19642                match _t {
19643                    alloy_sol_types::private::AssertTypeEq::<
19644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19645                    >(_) => {}
19646                }
19647            }
19648            #[automatically_derived]
19649            #[doc(hidden)]
19650            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
19651                fn from(value: validatorExitsCall) -> Self {
19652                    (value.validator,)
19653                }
19654            }
19655            #[automatically_derived]
19656            #[doc(hidden)]
19657            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
19658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19659                    Self { validator: tuple.0 }
19660                }
19661            }
19662        }
19663        {
19664            #[doc(hidden)]
19665            #[allow(dead_code)]
19666            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19667            #[doc(hidden)]
19668            type UnderlyingRustTuple<'a> = (
19669                alloy::sol_types::private::primitives::aliases::U256,
19670            );
19671            #[cfg(test)]
19672            #[allow(dead_code, unreachable_patterns)]
19673            fn _type_assertion(
19674                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19675            ) {
19676                match _t {
19677                    alloy_sol_types::private::AssertTypeEq::<
19678                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19679                    >(_) => {}
19680                }
19681            }
19682            #[automatically_derived]
19683            #[doc(hidden)]
19684            impl ::core::convert::From<validatorExitsReturn>
19685            for UnderlyingRustTuple<'_> {
19686                fn from(value: validatorExitsReturn) -> Self {
19687                    (value.unlocksAt,)
19688                }
19689            }
19690            #[automatically_derived]
19691            #[doc(hidden)]
19692            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19693            for validatorExitsReturn {
19694                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19695                    Self { unlocksAt: tuple.0 }
19696                }
19697            }
19698        }
19699        #[automatically_derived]
19700        impl alloy_sol_types::SolCall for validatorExitsCall {
19701            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
19702            type Token<'a> = <Self::Parameters<
19703                'a,
19704            > as alloy_sol_types::SolType>::Token<'a>;
19705            type Return = alloy::sol_types::private::primitives::aliases::U256;
19706            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19707            type ReturnToken<'a> = <Self::ReturnTuple<
19708                'a,
19709            > as alloy_sol_types::SolType>::Token<'a>;
19710            const SIGNATURE: &'static str = "validatorExits(address)";
19711            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
19712            #[inline]
19713            fn new<'a>(
19714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19715            ) -> Self {
19716                tuple.into()
19717            }
19718            #[inline]
19719            fn tokenize(&self) -> Self::Token<'_> {
19720                (
19721                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19722                        &self.validator,
19723                    ),
19724                )
19725            }
19726            #[inline]
19727            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19728                (
19729                    <alloy::sol_types::sol_data::Uint<
19730                        256,
19731                    > as alloy_sol_types::SolType>::tokenize(ret),
19732                )
19733            }
19734            #[inline]
19735            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19736                <Self::ReturnTuple<
19737                    '_,
19738                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19739                    .map(|r| {
19740                        let r: validatorExitsReturn = r.into();
19741                        r.unlocksAt
19742                    })
19743            }
19744            #[inline]
19745            fn abi_decode_returns_validate(
19746                data: &[u8],
19747            ) -> alloy_sol_types::Result<Self::Return> {
19748                <Self::ReturnTuple<
19749                    '_,
19750                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19751                    .map(|r| {
19752                        let r: validatorExitsReturn = r.into();
19753                        r.unlocksAt
19754                    })
19755            }
19756        }
19757    };
19758    #[derive(serde::Serialize, serde::Deserialize)]
19759    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19760    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
19761```solidity
19762function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
19763```*/
19764    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19765    #[derive(Clone)]
19766    pub struct validatorsCall {
19767        #[allow(missing_docs)]
19768        pub account: alloy::sol_types::private::Address,
19769    }
19770    #[derive(serde::Serialize, serde::Deserialize)]
19771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19772    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
19773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19774    #[derive(Clone)]
19775    pub struct validatorsReturn {
19776        #[allow(missing_docs)]
19777        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
19778        #[allow(missing_docs)]
19779        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
19780    }
19781    #[allow(
19782        non_camel_case_types,
19783        non_snake_case,
19784        clippy::pub_underscore_fields,
19785        clippy::style
19786    )]
19787    const _: () = {
19788        use alloy::sol_types as alloy_sol_types;
19789        {
19790            #[doc(hidden)]
19791            #[allow(dead_code)]
19792            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19793            #[doc(hidden)]
19794            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19795            #[cfg(test)]
19796            #[allow(dead_code, unreachable_patterns)]
19797            fn _type_assertion(
19798                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19799            ) {
19800                match _t {
19801                    alloy_sol_types::private::AssertTypeEq::<
19802                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19803                    >(_) => {}
19804                }
19805            }
19806            #[automatically_derived]
19807            #[doc(hidden)]
19808            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
19809                fn from(value: validatorsCall) -> Self {
19810                    (value.account,)
19811                }
19812            }
19813            #[automatically_derived]
19814            #[doc(hidden)]
19815            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
19816                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19817                    Self { account: tuple.0 }
19818                }
19819            }
19820        }
19821        {
19822            #[doc(hidden)]
19823            #[allow(dead_code)]
19824            type UnderlyingSolTuple<'a> = (
19825                alloy::sol_types::sol_data::Uint<256>,
19826                StakeTable::ValidatorStatus,
19827            );
19828            #[doc(hidden)]
19829            type UnderlyingRustTuple<'a> = (
19830                alloy::sol_types::private::primitives::aliases::U256,
19831                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
19832            );
19833            #[cfg(test)]
19834            #[allow(dead_code, unreachable_patterns)]
19835            fn _type_assertion(
19836                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19837            ) {
19838                match _t {
19839                    alloy_sol_types::private::AssertTypeEq::<
19840                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19841                    >(_) => {}
19842                }
19843            }
19844            #[automatically_derived]
19845            #[doc(hidden)]
19846            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
19847                fn from(value: validatorsReturn) -> Self {
19848                    (value.delegatedAmount, value.status)
19849                }
19850            }
19851            #[automatically_derived]
19852            #[doc(hidden)]
19853            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
19854                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19855                    Self {
19856                        delegatedAmount: tuple.0,
19857                        status: tuple.1,
19858                    }
19859                }
19860            }
19861        }
19862        impl validatorsReturn {
19863            fn _tokenize(
19864                &self,
19865            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19866                (
19867                    <alloy::sol_types::sol_data::Uint<
19868                        256,
19869                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
19870                    <StakeTable::ValidatorStatus as alloy_sol_types::SolType>::tokenize(
19871                        &self.status,
19872                    ),
19873                )
19874            }
19875        }
19876        #[automatically_derived]
19877        impl alloy_sol_types::SolCall for validatorsCall {
19878            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
19879            type Token<'a> = <Self::Parameters<
19880                'a,
19881            > as alloy_sol_types::SolType>::Token<'a>;
19882            type Return = validatorsReturn;
19883            type ReturnTuple<'a> = (
19884                alloy::sol_types::sol_data::Uint<256>,
19885                StakeTable::ValidatorStatus,
19886            );
19887            type ReturnToken<'a> = <Self::ReturnTuple<
19888                'a,
19889            > as alloy_sol_types::SolType>::Token<'a>;
19890            const SIGNATURE: &'static str = "validators(address)";
19891            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
19892            #[inline]
19893            fn new<'a>(
19894                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19895            ) -> Self {
19896                tuple.into()
19897            }
19898            #[inline]
19899            fn tokenize(&self) -> Self::Token<'_> {
19900                (
19901                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19902                        &self.account,
19903                    ),
19904                )
19905            }
19906            #[inline]
19907            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19908                validatorsReturn::_tokenize(ret)
19909            }
19910            #[inline]
19911            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19912                <Self::ReturnTuple<
19913                    '_,
19914                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19915                    .map(Into::into)
19916            }
19917            #[inline]
19918            fn abi_decode_returns_validate(
19919                data: &[u8],
19920            ) -> alloy_sol_types::Result<Self::Return> {
19921                <Self::ReturnTuple<
19922                    '_,
19923                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19924                    .map(Into::into)
19925            }
19926        }
19927    };
19928    ///Container for all the [`StakeTableV2`](self) function calls.
19929    #[derive(Clone)]
19930    #[derive(serde::Serialize, serde::Deserialize)]
19931    #[derive()]
19932    pub enum StakeTableV2Calls {
19933        #[allow(missing_docs)]
19934        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
19935        #[allow(missing_docs)]
19936        MAX_COMMISSION_BPS(MAX_COMMISSION_BPSCall),
19937        #[allow(missing_docs)]
19938        MAX_EXIT_ESCROW_PERIOD(MAX_EXIT_ESCROW_PERIODCall),
19939        #[allow(missing_docs)]
19940        MAX_METADATA_URI_LENGTH(MAX_METADATA_URI_LENGTHCall),
19941        #[allow(missing_docs)]
19942        MIN_EXIT_ESCROW_PERIOD(MIN_EXIT_ESCROW_PERIODCall),
19943        #[allow(missing_docs)]
19944        PAUSER_ROLE(PAUSER_ROLECall),
19945        #[allow(missing_docs)]
19946        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
19947        #[allow(missing_docs)]
19948        _hashBlsKey(_hashBlsKeyCall),
19949        #[allow(missing_docs)]
19950        activeStake(activeStakeCall),
19951        #[allow(missing_docs)]
19952        blsKeys(blsKeysCall),
19953        #[allow(missing_docs)]
19954        claimValidatorExit(claimValidatorExitCall),
19955        #[allow(missing_docs)]
19956        claimWithdrawal(claimWithdrawalCall),
19957        #[allow(missing_docs)]
19958        commissionTracking(commissionTrackingCall),
19959        #[allow(missing_docs)]
19960        delegate(delegateCall),
19961        #[allow(missing_docs)]
19962        delegations(delegationsCall),
19963        #[allow(missing_docs)]
19964        deregisterValidator(deregisterValidatorCall),
19965        #[allow(missing_docs)]
19966        exitEscrowPeriod(exitEscrowPeriodCall),
19967        #[allow(missing_docs)]
19968        getRoleAdmin(getRoleAdminCall),
19969        #[allow(missing_docs)]
19970        getUndelegation(getUndelegationCall),
19971        #[allow(missing_docs)]
19972        getVersion(getVersionCall),
19973        #[allow(missing_docs)]
19974        grantRole(grantRoleCall),
19975        #[allow(missing_docs)]
19976        hasRole(hasRoleCall),
19977        #[allow(missing_docs)]
19978        initialize(initializeCall),
19979        #[allow(missing_docs)]
19980        initializeV2(initializeV2Call),
19981        #[allow(missing_docs)]
19982        initializedAtBlock(initializedAtBlockCall),
19983        #[allow(missing_docs)]
19984        lightClient(lightClientCall),
19985        #[allow(missing_docs)]
19986        maxCommissionIncrease(maxCommissionIncreaseCall),
19987        #[allow(missing_docs)]
19988        minCommissionIncreaseInterval(minCommissionIncreaseIntervalCall),
19989        #[allow(missing_docs)]
19990        minDelegateAmount(minDelegateAmountCall),
19991        #[allow(missing_docs)]
19992        owner(ownerCall),
19993        #[allow(missing_docs)]
19994        pause(pauseCall),
19995        #[allow(missing_docs)]
19996        paused(pausedCall),
19997        #[allow(missing_docs)]
19998        proxiableUUID(proxiableUUIDCall),
19999        #[allow(missing_docs)]
20000        registerValidator(registerValidatorCall),
20001        #[allow(missing_docs)]
20002        registerValidatorV2(registerValidatorV2Call),
20003        #[allow(missing_docs)]
20004        renounceOwnership(renounceOwnershipCall),
20005        #[allow(missing_docs)]
20006        renounceRole(renounceRoleCall),
20007        #[allow(missing_docs)]
20008        revokeRole(revokeRoleCall),
20009        #[allow(missing_docs)]
20010        schnorrKeys(schnorrKeysCall),
20011        #[allow(missing_docs)]
20012        setMaxCommissionIncrease(setMaxCommissionIncreaseCall),
20013        #[allow(missing_docs)]
20014        setMinCommissionUpdateInterval(setMinCommissionUpdateIntervalCall),
20015        #[allow(missing_docs)]
20016        setMinDelegateAmount(setMinDelegateAmountCall),
20017        #[allow(missing_docs)]
20018        supportsInterface(supportsInterfaceCall),
20019        #[allow(missing_docs)]
20020        token(tokenCall),
20021        #[allow(missing_docs)]
20022        transferOwnership(transferOwnershipCall),
20023        #[allow(missing_docs)]
20024        undelegate(undelegateCall),
20025        #[allow(missing_docs)]
20026        undelegations(undelegationsCall),
20027        #[allow(missing_docs)]
20028        unpause(unpauseCall),
20029        #[allow(missing_docs)]
20030        updateCommission(updateCommissionCall),
20031        #[allow(missing_docs)]
20032        updateConsensusKeys(updateConsensusKeysCall),
20033        #[allow(missing_docs)]
20034        updateConsensusKeysV2(updateConsensusKeysV2Call),
20035        #[allow(missing_docs)]
20036        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
20037        #[allow(missing_docs)]
20038        updateMetadataUri(updateMetadataUriCall),
20039        #[allow(missing_docs)]
20040        upgradeToAndCall(upgradeToAndCallCall),
20041        #[allow(missing_docs)]
20042        validateMetadataUri(validateMetadataUriCall),
20043        #[allow(missing_docs)]
20044        validatorExits(validatorExitsCall),
20045        #[allow(missing_docs)]
20046        validators(validatorsCall),
20047    }
20048    impl StakeTableV2Calls {
20049        /// All the selectors of this enum.
20050        ///
20051        /// Note that the selectors might not be in the same order as the variants.
20052        /// No guarantees are made about the order of the selectors.
20053        ///
20054        /// Prefer using `SolInterface` methods instead.
20055        pub const SELECTORS: &'static [[u8; 4usize]] = &[
20056            [1u8, 255u8, 201u8, 167u8],
20057            [2u8, 110u8, 64u8, 43u8],
20058            [13u8, 142u8, 110u8, 44u8],
20059            [19u8, 185u8, 5u8, 122u8],
20060            [26u8, 32u8, 205u8, 99u8],
20061            [33u8, 64u8, 254u8, 205u8],
20062            [36u8, 138u8, 156u8, 163u8],
20063            [43u8, 158u8, 92u8, 138u8],
20064            [45u8, 201u8, 186u8, 198u8],
20065            [47u8, 47u8, 241u8, 93u8],
20066            [47u8, 226u8, 135u8, 89u8],
20067            [54u8, 86u8, 138u8, 190u8],
20068            [57u8, 75u8, 52u8, 143u8],
20069            [59u8, 43u8, 127u8, 250u8],
20070            [62u8, 115u8, 46u8, 186u8],
20071            [62u8, 157u8, 249u8, 181u8],
20072            [63u8, 59u8, 179u8, 102u8],
20073            [63u8, 75u8, 168u8, 58u8],
20074            [77u8, 153u8, 221u8, 22u8],
20075            [79u8, 30u8, 242u8, 134u8],
20076            [82u8, 120u8, 11u8, 110u8],
20077            [82u8, 209u8, 144u8, 45u8],
20078            [85u8, 68u8, 194u8, 241u8],
20079            [92u8, 151u8, 90u8, 187u8],
20080            [95u8, 135u8, 84u8, 166u8],
20081            [106u8, 145u8, 28u8, 207u8],
20082            [106u8, 210u8, 142u8, 159u8],
20083            [113u8, 80u8, 24u8, 166u8],
20084            [114u8, 233u8, 201u8, 52u8],
20085            [132u8, 86u8, 203u8, 89u8],
20086            [135u8, 12u8, 143u8, 38u8],
20087            [141u8, 165u8, 203u8, 91u8],
20088            [145u8, 209u8, 72u8, 84u8],
20089            [155u8, 48u8, 165u8, 230u8],
20090            [158u8, 154u8, 143u8, 49u8],
20091            [159u8, 251u8, 107u8, 67u8],
20092            [162u8, 23u8, 253u8, 223u8],
20093            [162u8, 215u8, 141u8, 213u8],
20094            [163u8, 6u8, 106u8, 171u8],
20095            [172u8, 92u8, 42u8, 208u8],
20096            [173u8, 60u8, 177u8, 204u8],
20097            [179u8, 230u8, 235u8, 213u8],
20098            [181u8, 112u8, 14u8, 104u8],
20099            [181u8, 236u8, 179u8, 68u8],
20100            [187u8, 96u8, 191u8, 176u8],
20101            [189u8, 73u8, 195u8, 95u8],
20102            [190u8, 32u8, 48u8, 148u8],
20103            [198u8, 72u8, 20u8, 221u8],
20104            [213u8, 71u8, 116u8, 31u8],
20105            [217u8, 204u8, 125u8, 38u8],
20106            [227u8, 242u8, 55u8, 230u8],
20107            [228u8, 209u8, 251u8, 148u8],
20108            [230u8, 41u8, 119u8, 248u8],
20109            [230u8, 58u8, 177u8, 233u8],
20110            [242u8, 253u8, 227u8, 139u8],
20111            [250u8, 82u8, 199u8, 216u8],
20112            [252u8, 12u8, 84u8, 106u8],
20113        ];
20114        /// The names of the variants in the same order as `SELECTORS`.
20115        pub const VARIANT_NAMES: &'static [&'static str] = &[
20116            ::core::stringify!(supportsInterface),
20117            ::core::stringify!(delegate),
20118            ::core::stringify!(getVersion),
20119            ::core::stringify!(registerValidator),
20120            ::core::stringify!(updateExitEscrowPeriod),
20121            ::core::stringify!(claimValidatorExit),
20122            ::core::stringify!(getRoleAdmin),
20123            ::core::stringify!(registerValidatorV2),
20124            ::core::stringify!(setMaxCommissionIncrease),
20125            ::core::stringify!(grantRole),
20126            ::core::stringify!(MAX_METADATA_URI_LENGTH),
20127            ::core::stringify!(renounceRole),
20128            ::core::stringify!(setMinCommissionUpdateInterval),
20129            ::core::stringify!(updateCommission),
20130            ::core::stringify!(setMinDelegateAmount),
20131            ::core::stringify!(initializedAtBlock),
20132            ::core::stringify!(maxCommissionIncrease),
20133            ::core::stringify!(unpause),
20134            ::core::stringify!(undelegate),
20135            ::core::stringify!(upgradeToAndCall),
20136            ::core::stringify!(initializeV2),
20137            ::core::stringify!(proxiableUUID),
20138            ::core::stringify!(updateConsensusKeys),
20139            ::core::stringify!(paused),
20140            ::core::stringify!(schnorrKeys),
20141            ::core::stringify!(deregisterValidator),
20142            ::core::stringify!(MIN_EXIT_ESCROW_PERIOD),
20143            ::core::stringify!(renounceOwnership),
20144            ::core::stringify!(minDelegateAmount),
20145            ::core::stringify!(pause),
20146            ::core::stringify!(updateMetadataUri),
20147            ::core::stringify!(owner),
20148            ::core::stringify!(hasRole),
20149            ::core::stringify!(_hashBlsKey),
20150            ::core::stringify!(exitEscrowPeriod),
20151            ::core::stringify!(commissionTracking),
20152            ::core::stringify!(DEFAULT_ADMIN_ROLE),
20153            ::core::stringify!(undelegations),
20154            ::core::stringify!(claimWithdrawal),
20155            ::core::stringify!(updateConsensusKeysV2),
20156            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
20157            ::core::stringify!(blsKeys),
20158            ::core::stringify!(lightClient),
20159            ::core::stringify!(validatorExits),
20160            ::core::stringify!(getUndelegation),
20161            ::core::stringify!(activeStake),
20162            ::core::stringify!(initialize),
20163            ::core::stringify!(delegations),
20164            ::core::stringify!(revokeRole),
20165            ::core::stringify!(minCommissionIncreaseInterval),
20166            ::core::stringify!(validateMetadataUri),
20167            ::core::stringify!(MAX_EXIT_ESCROW_PERIOD),
20168            ::core::stringify!(MAX_COMMISSION_BPS),
20169            ::core::stringify!(PAUSER_ROLE),
20170            ::core::stringify!(transferOwnership),
20171            ::core::stringify!(validators),
20172            ::core::stringify!(token),
20173        ];
20174        /// The signatures in the same order as `SELECTORS`.
20175        pub const SIGNATURES: &'static [&'static str] = &[
20176            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
20177            <delegateCall as alloy_sol_types::SolCall>::SIGNATURE,
20178            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
20179            <registerValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
20180            <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
20181            <claimValidatorExitCall as alloy_sol_types::SolCall>::SIGNATURE,
20182            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
20183            <registerValidatorV2Call as alloy_sol_types::SolCall>::SIGNATURE,
20184            <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
20185            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
20186            <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
20187            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
20188            <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
20189            <updateCommissionCall as alloy_sol_types::SolCall>::SIGNATURE,
20190            <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
20191            <initializedAtBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
20192            <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
20193            <unpauseCall as alloy_sol_types::SolCall>::SIGNATURE,
20194            <undelegateCall as alloy_sol_types::SolCall>::SIGNATURE,
20195            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
20196            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
20197            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
20198            <updateConsensusKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
20199            <pausedCall as alloy_sol_types::SolCall>::SIGNATURE,
20200            <schnorrKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
20201            <deregisterValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
20202            <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
20203            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
20204            <minDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
20205            <pauseCall as alloy_sol_types::SolCall>::SIGNATURE,
20206            <updateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
20207            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
20208            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
20209            <_hashBlsKeyCall as alloy_sol_types::SolCall>::SIGNATURE,
20210            <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
20211            <commissionTrackingCall as alloy_sol_types::SolCall>::SIGNATURE,
20212            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
20213            <undelegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
20214            <claimWithdrawalCall as alloy_sol_types::SolCall>::SIGNATURE,
20215            <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SIGNATURE,
20216            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
20217            <blsKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
20218            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
20219            <validatorExitsCall as alloy_sol_types::SolCall>::SIGNATURE,
20220            <getUndelegationCall as alloy_sol_types::SolCall>::SIGNATURE,
20221            <activeStakeCall as alloy_sol_types::SolCall>::SIGNATURE,
20222            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
20223            <delegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
20224            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
20225            <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
20226            <validateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
20227            <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
20228            <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SIGNATURE,
20229            <PAUSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
20230            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
20231            <validatorsCall as alloy_sol_types::SolCall>::SIGNATURE,
20232            <tokenCall as alloy_sol_types::SolCall>::SIGNATURE,
20233        ];
20234        /// Returns the signature for the given selector, if known.
20235        #[inline]
20236        pub fn signature_by_selector(
20237            selector: [u8; 4usize],
20238        ) -> ::core::option::Option<&'static str> {
20239            match Self::SELECTORS.binary_search(&selector) {
20240                ::core::result::Result::Ok(idx) => {
20241                    ::core::option::Option::Some(Self::SIGNATURES[idx])
20242                }
20243                ::core::result::Result::Err(_) => ::core::option::Option::None,
20244            }
20245        }
20246        /// Returns the enum variant name for the given selector, if known.
20247        #[inline]
20248        pub fn name_by_selector(
20249            selector: [u8; 4usize],
20250        ) -> ::core::option::Option<&'static str> {
20251            let sig = Self::signature_by_selector(selector)?;
20252            sig.split_once('(').map(|(name, _)| name)
20253        }
20254    }
20255    #[automatically_derived]
20256    impl alloy_sol_types::SolInterface for StakeTableV2Calls {
20257        const NAME: &'static str = "StakeTableV2Calls";
20258        const MIN_DATA_LENGTH: usize = 0usize;
20259        const COUNT: usize = 57usize;
20260        #[inline]
20261        fn selector(&self) -> [u8; 4] {
20262            match self {
20263                Self::DEFAULT_ADMIN_ROLE(_) => {
20264                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
20265                }
20266                Self::MAX_COMMISSION_BPS(_) => {
20267                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SELECTOR
20268                }
20269                Self::MAX_EXIT_ESCROW_PERIOD(_) => {
20270                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
20271                }
20272                Self::MAX_METADATA_URI_LENGTH(_) => {
20273                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
20274                }
20275                Self::MIN_EXIT_ESCROW_PERIOD(_) => {
20276                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
20277                }
20278                Self::PAUSER_ROLE(_) => {
20279                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
20280                }
20281                Self::UPGRADE_INTERFACE_VERSION(_) => {
20282                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
20283                }
20284                Self::_hashBlsKey(_) => {
20285                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
20286                }
20287                Self::activeStake(_) => {
20288                    <activeStakeCall as alloy_sol_types::SolCall>::SELECTOR
20289                }
20290                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
20291                Self::claimValidatorExit(_) => {
20292                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
20293                }
20294                Self::claimWithdrawal(_) => {
20295                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
20296                }
20297                Self::commissionTracking(_) => {
20298                    <commissionTrackingCall as alloy_sol_types::SolCall>::SELECTOR
20299                }
20300                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
20301                Self::delegations(_) => {
20302                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
20303                }
20304                Self::deregisterValidator(_) => {
20305                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
20306                }
20307                Self::exitEscrowPeriod(_) => {
20308                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
20309                }
20310                Self::getRoleAdmin(_) => {
20311                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
20312                }
20313                Self::getUndelegation(_) => {
20314                    <getUndelegationCall as alloy_sol_types::SolCall>::SELECTOR
20315                }
20316                Self::getVersion(_) => {
20317                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
20318                }
20319                Self::grantRole(_) => {
20320                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
20321                }
20322                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
20323                Self::initialize(_) => {
20324                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
20325                }
20326                Self::initializeV2(_) => {
20327                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
20328                }
20329                Self::initializedAtBlock(_) => {
20330                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
20331                }
20332                Self::lightClient(_) => {
20333                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
20334                }
20335                Self::maxCommissionIncrease(_) => {
20336                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
20337                }
20338                Self::minCommissionIncreaseInterval(_) => {
20339                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SELECTOR
20340                }
20341                Self::minDelegateAmount(_) => {
20342                    <minDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
20343                }
20344                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
20345                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
20346                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
20347                Self::proxiableUUID(_) => {
20348                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
20349                }
20350                Self::registerValidator(_) => {
20351                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
20352                }
20353                Self::registerValidatorV2(_) => {
20354                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
20355                }
20356                Self::renounceOwnership(_) => {
20357                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
20358                }
20359                Self::renounceRole(_) => {
20360                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
20361                }
20362                Self::revokeRole(_) => {
20363                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
20364                }
20365                Self::schnorrKeys(_) => {
20366                    <schnorrKeysCall as alloy_sol_types::SolCall>::SELECTOR
20367                }
20368                Self::setMaxCommissionIncrease(_) => {
20369                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
20370                }
20371                Self::setMinCommissionUpdateInterval(_) => {
20372                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SELECTOR
20373                }
20374                Self::setMinDelegateAmount(_) => {
20375                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
20376                }
20377                Self::supportsInterface(_) => {
20378                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
20379                }
20380                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
20381                Self::transferOwnership(_) => {
20382                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
20383                }
20384                Self::undelegate(_) => {
20385                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
20386                }
20387                Self::undelegations(_) => {
20388                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
20389                }
20390                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
20391                Self::updateCommission(_) => {
20392                    <updateCommissionCall as alloy_sol_types::SolCall>::SELECTOR
20393                }
20394                Self::updateConsensusKeys(_) => {
20395                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
20396                }
20397                Self::updateConsensusKeysV2(_) => {
20398                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
20399                }
20400                Self::updateExitEscrowPeriod(_) => {
20401                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
20402                }
20403                Self::updateMetadataUri(_) => {
20404                    <updateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
20405                }
20406                Self::upgradeToAndCall(_) => {
20407                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
20408                }
20409                Self::validateMetadataUri(_) => {
20410                    <validateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
20411                }
20412                Self::validatorExits(_) => {
20413                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
20414                }
20415                Self::validators(_) => {
20416                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
20417                }
20418            }
20419        }
20420        #[inline]
20421        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
20422            Self::SELECTORS.get(i).copied()
20423        }
20424        #[inline]
20425        fn valid_selector(selector: [u8; 4]) -> bool {
20426            Self::SELECTORS.binary_search(&selector).is_ok()
20427        }
20428        #[inline]
20429        #[allow(non_snake_case)]
20430        fn abi_decode_raw(
20431            selector: [u8; 4],
20432            data: &[u8],
20433        ) -> alloy_sol_types::Result<Self> {
20434            static DECODE_SHIMS: &[fn(
20435                &[u8],
20436            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
20437                {
20438                    fn supportsInterface(
20439                        data: &[u8],
20440                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20441                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
20442                                data,
20443                            )
20444                            .map(StakeTableV2Calls::supportsInterface)
20445                    }
20446                    supportsInterface
20447                },
20448                {
20449                    fn delegate(
20450                        data: &[u8],
20451                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20452                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20453                            .map(StakeTableV2Calls::delegate)
20454                    }
20455                    delegate
20456                },
20457                {
20458                    fn getVersion(
20459                        data: &[u8],
20460                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20461                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
20462                                data,
20463                            )
20464                            .map(StakeTableV2Calls::getVersion)
20465                    }
20466                    getVersion
20467                },
20468                {
20469                    fn registerValidator(
20470                        data: &[u8],
20471                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20472                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
20473                                data,
20474                            )
20475                            .map(StakeTableV2Calls::registerValidator)
20476                    }
20477                    registerValidator
20478                },
20479                {
20480                    fn updateExitEscrowPeriod(
20481                        data: &[u8],
20482                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20483                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
20484                                data,
20485                            )
20486                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
20487                    }
20488                    updateExitEscrowPeriod
20489                },
20490                {
20491                    fn claimValidatorExit(
20492                        data: &[u8],
20493                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20494                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
20495                                data,
20496                            )
20497                            .map(StakeTableV2Calls::claimValidatorExit)
20498                    }
20499                    claimValidatorExit
20500                },
20501                {
20502                    fn getRoleAdmin(
20503                        data: &[u8],
20504                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20505                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
20506                                data,
20507                            )
20508                            .map(StakeTableV2Calls::getRoleAdmin)
20509                    }
20510                    getRoleAdmin
20511                },
20512                {
20513                    fn registerValidatorV2(
20514                        data: &[u8],
20515                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20516                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
20517                                data,
20518                            )
20519                            .map(StakeTableV2Calls::registerValidatorV2)
20520                    }
20521                    registerValidatorV2
20522                },
20523                {
20524                    fn setMaxCommissionIncrease(
20525                        data: &[u8],
20526                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20527                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
20528                                data,
20529                            )
20530                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
20531                    }
20532                    setMaxCommissionIncrease
20533                },
20534                {
20535                    fn grantRole(
20536                        data: &[u8],
20537                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20538                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20539                            .map(StakeTableV2Calls::grantRole)
20540                    }
20541                    grantRole
20542                },
20543                {
20544                    fn MAX_METADATA_URI_LENGTH(
20545                        data: &[u8],
20546                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20547                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
20548                                data,
20549                            )
20550                            .map(StakeTableV2Calls::MAX_METADATA_URI_LENGTH)
20551                    }
20552                    MAX_METADATA_URI_LENGTH
20553                },
20554                {
20555                    fn renounceRole(
20556                        data: &[u8],
20557                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20558                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
20559                                data,
20560                            )
20561                            .map(StakeTableV2Calls::renounceRole)
20562                    }
20563                    renounceRole
20564                },
20565                {
20566                    fn setMinCommissionUpdateInterval(
20567                        data: &[u8],
20568                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20569                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
20570                                data,
20571                            )
20572                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
20573                    }
20574                    setMinCommissionUpdateInterval
20575                },
20576                {
20577                    fn updateCommission(
20578                        data: &[u8],
20579                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20580                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
20581                                data,
20582                            )
20583                            .map(StakeTableV2Calls::updateCommission)
20584                    }
20585                    updateCommission
20586                },
20587                {
20588                    fn setMinDelegateAmount(
20589                        data: &[u8],
20590                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20591                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
20592                                data,
20593                            )
20594                            .map(StakeTableV2Calls::setMinDelegateAmount)
20595                    }
20596                    setMinDelegateAmount
20597                },
20598                {
20599                    fn initializedAtBlock(
20600                        data: &[u8],
20601                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20602                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
20603                                data,
20604                            )
20605                            .map(StakeTableV2Calls::initializedAtBlock)
20606                    }
20607                    initializedAtBlock
20608                },
20609                {
20610                    fn maxCommissionIncrease(
20611                        data: &[u8],
20612                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20613                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
20614                                data,
20615                            )
20616                            .map(StakeTableV2Calls::maxCommissionIncrease)
20617                    }
20618                    maxCommissionIncrease
20619                },
20620                {
20621                    fn unpause(
20622                        data: &[u8],
20623                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20624                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20625                            .map(StakeTableV2Calls::unpause)
20626                    }
20627                    unpause
20628                },
20629                {
20630                    fn undelegate(
20631                        data: &[u8],
20632                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20633                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
20634                                data,
20635                            )
20636                            .map(StakeTableV2Calls::undelegate)
20637                    }
20638                    undelegate
20639                },
20640                {
20641                    fn upgradeToAndCall(
20642                        data: &[u8],
20643                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20644                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
20645                                data,
20646                            )
20647                            .map(StakeTableV2Calls::upgradeToAndCall)
20648                    }
20649                    upgradeToAndCall
20650                },
20651                {
20652                    fn initializeV2(
20653                        data: &[u8],
20654                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20655                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
20656                                data,
20657                            )
20658                            .map(StakeTableV2Calls::initializeV2)
20659                    }
20660                    initializeV2
20661                },
20662                {
20663                    fn proxiableUUID(
20664                        data: &[u8],
20665                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20666                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
20667                                data,
20668                            )
20669                            .map(StakeTableV2Calls::proxiableUUID)
20670                    }
20671                    proxiableUUID
20672                },
20673                {
20674                    fn updateConsensusKeys(
20675                        data: &[u8],
20676                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20677                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
20678                                data,
20679                            )
20680                            .map(StakeTableV2Calls::updateConsensusKeys)
20681                    }
20682                    updateConsensusKeys
20683                },
20684                {
20685                    fn paused(
20686                        data: &[u8],
20687                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20688                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20689                            .map(StakeTableV2Calls::paused)
20690                    }
20691                    paused
20692                },
20693                {
20694                    fn schnorrKeys(
20695                        data: &[u8],
20696                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20697                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
20698                                data,
20699                            )
20700                            .map(StakeTableV2Calls::schnorrKeys)
20701                    }
20702                    schnorrKeys
20703                },
20704                {
20705                    fn deregisterValidator(
20706                        data: &[u8],
20707                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20708                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
20709                                data,
20710                            )
20711                            .map(StakeTableV2Calls::deregisterValidator)
20712                    }
20713                    deregisterValidator
20714                },
20715                {
20716                    fn MIN_EXIT_ESCROW_PERIOD(
20717                        data: &[u8],
20718                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20719                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
20720                                data,
20721                            )
20722                            .map(StakeTableV2Calls::MIN_EXIT_ESCROW_PERIOD)
20723                    }
20724                    MIN_EXIT_ESCROW_PERIOD
20725                },
20726                {
20727                    fn renounceOwnership(
20728                        data: &[u8],
20729                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20730                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
20731                                data,
20732                            )
20733                            .map(StakeTableV2Calls::renounceOwnership)
20734                    }
20735                    renounceOwnership
20736                },
20737                {
20738                    fn minDelegateAmount(
20739                        data: &[u8],
20740                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20741                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
20742                                data,
20743                            )
20744                            .map(StakeTableV2Calls::minDelegateAmount)
20745                    }
20746                    minDelegateAmount
20747                },
20748                {
20749                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
20750                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20751                            .map(StakeTableV2Calls::pause)
20752                    }
20753                    pause
20754                },
20755                {
20756                    fn updateMetadataUri(
20757                        data: &[u8],
20758                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20759                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
20760                                data,
20761                            )
20762                            .map(StakeTableV2Calls::updateMetadataUri)
20763                    }
20764                    updateMetadataUri
20765                },
20766                {
20767                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
20768                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20769                            .map(StakeTableV2Calls::owner)
20770                    }
20771                    owner
20772                },
20773                {
20774                    fn hasRole(
20775                        data: &[u8],
20776                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20777                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20778                            .map(StakeTableV2Calls::hasRole)
20779                    }
20780                    hasRole
20781                },
20782                {
20783                    fn _hashBlsKey(
20784                        data: &[u8],
20785                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20786                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
20787                                data,
20788                            )
20789                            .map(StakeTableV2Calls::_hashBlsKey)
20790                    }
20791                    _hashBlsKey
20792                },
20793                {
20794                    fn exitEscrowPeriod(
20795                        data: &[u8],
20796                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20797                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
20798                                data,
20799                            )
20800                            .map(StakeTableV2Calls::exitEscrowPeriod)
20801                    }
20802                    exitEscrowPeriod
20803                },
20804                {
20805                    fn commissionTracking(
20806                        data: &[u8],
20807                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20808                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw(
20809                                data,
20810                            )
20811                            .map(StakeTableV2Calls::commissionTracking)
20812                    }
20813                    commissionTracking
20814                },
20815                {
20816                    fn DEFAULT_ADMIN_ROLE(
20817                        data: &[u8],
20818                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20819                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
20820                                data,
20821                            )
20822                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
20823                    }
20824                    DEFAULT_ADMIN_ROLE
20825                },
20826                {
20827                    fn undelegations(
20828                        data: &[u8],
20829                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20830                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
20831                                data,
20832                            )
20833                            .map(StakeTableV2Calls::undelegations)
20834                    }
20835                    undelegations
20836                },
20837                {
20838                    fn claimWithdrawal(
20839                        data: &[u8],
20840                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20841                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
20842                                data,
20843                            )
20844                            .map(StakeTableV2Calls::claimWithdrawal)
20845                    }
20846                    claimWithdrawal
20847                },
20848                {
20849                    fn updateConsensusKeysV2(
20850                        data: &[u8],
20851                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20852                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
20853                                data,
20854                            )
20855                            .map(StakeTableV2Calls::updateConsensusKeysV2)
20856                    }
20857                    updateConsensusKeysV2
20858                },
20859                {
20860                    fn UPGRADE_INTERFACE_VERSION(
20861                        data: &[u8],
20862                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20863                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
20864                                data,
20865                            )
20866                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
20867                    }
20868                    UPGRADE_INTERFACE_VERSION
20869                },
20870                {
20871                    fn blsKeys(
20872                        data: &[u8],
20873                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20874                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20875                            .map(StakeTableV2Calls::blsKeys)
20876                    }
20877                    blsKeys
20878                },
20879                {
20880                    fn lightClient(
20881                        data: &[u8],
20882                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20883                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
20884                                data,
20885                            )
20886                            .map(StakeTableV2Calls::lightClient)
20887                    }
20888                    lightClient
20889                },
20890                {
20891                    fn validatorExits(
20892                        data: &[u8],
20893                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20894                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
20895                                data,
20896                            )
20897                            .map(StakeTableV2Calls::validatorExits)
20898                    }
20899                    validatorExits
20900                },
20901                {
20902                    fn getUndelegation(
20903                        data: &[u8],
20904                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20905                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
20906                                data,
20907                            )
20908                            .map(StakeTableV2Calls::getUndelegation)
20909                    }
20910                    getUndelegation
20911                },
20912                {
20913                    fn activeStake(
20914                        data: &[u8],
20915                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20916                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
20917                                data,
20918                            )
20919                            .map(StakeTableV2Calls::activeStake)
20920                    }
20921                    activeStake
20922                },
20923                {
20924                    fn initialize(
20925                        data: &[u8],
20926                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20927                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
20928                                data,
20929                            )
20930                            .map(StakeTableV2Calls::initialize)
20931                    }
20932                    initialize
20933                },
20934                {
20935                    fn delegations(
20936                        data: &[u8],
20937                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20938                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
20939                                data,
20940                            )
20941                            .map(StakeTableV2Calls::delegations)
20942                    }
20943                    delegations
20944                },
20945                {
20946                    fn revokeRole(
20947                        data: &[u8],
20948                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20949                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
20950                                data,
20951                            )
20952                            .map(StakeTableV2Calls::revokeRole)
20953                    }
20954                    revokeRole
20955                },
20956                {
20957                    fn minCommissionIncreaseInterval(
20958                        data: &[u8],
20959                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20960                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
20961                                data,
20962                            )
20963                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
20964                    }
20965                    minCommissionIncreaseInterval
20966                },
20967                {
20968                    fn validateMetadataUri(
20969                        data: &[u8],
20970                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20971                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
20972                                data,
20973                            )
20974                            .map(StakeTableV2Calls::validateMetadataUri)
20975                    }
20976                    validateMetadataUri
20977                },
20978                {
20979                    fn MAX_EXIT_ESCROW_PERIOD(
20980                        data: &[u8],
20981                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20982                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
20983                                data,
20984                            )
20985                            .map(StakeTableV2Calls::MAX_EXIT_ESCROW_PERIOD)
20986                    }
20987                    MAX_EXIT_ESCROW_PERIOD
20988                },
20989                {
20990                    fn MAX_COMMISSION_BPS(
20991                        data: &[u8],
20992                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20993                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw(
20994                                data,
20995                            )
20996                            .map(StakeTableV2Calls::MAX_COMMISSION_BPS)
20997                    }
20998                    MAX_COMMISSION_BPS
20999                },
21000                {
21001                    fn PAUSER_ROLE(
21002                        data: &[u8],
21003                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21004                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
21005                                data,
21006                            )
21007                            .map(StakeTableV2Calls::PAUSER_ROLE)
21008                    }
21009                    PAUSER_ROLE
21010                },
21011                {
21012                    fn transferOwnership(
21013                        data: &[u8],
21014                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21015                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
21016                                data,
21017                            )
21018                            .map(StakeTableV2Calls::transferOwnership)
21019                    }
21020                    transferOwnership
21021                },
21022                {
21023                    fn validators(
21024                        data: &[u8],
21025                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21026                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
21027                                data,
21028                            )
21029                            .map(StakeTableV2Calls::validators)
21030                    }
21031                    validators
21032                },
21033                {
21034                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21035                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
21036                            .map(StakeTableV2Calls::token)
21037                    }
21038                    token
21039                },
21040            ];
21041            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
21042                return Err(
21043                    alloy_sol_types::Error::unknown_selector(
21044                        <Self as alloy_sol_types::SolInterface>::NAME,
21045                        selector,
21046                    ),
21047                );
21048            };
21049            DECODE_SHIMS[idx](data)
21050        }
21051        #[inline]
21052        #[allow(non_snake_case)]
21053        fn abi_decode_raw_validate(
21054            selector: [u8; 4],
21055            data: &[u8],
21056        ) -> alloy_sol_types::Result<Self> {
21057            static DECODE_VALIDATE_SHIMS: &[fn(
21058                &[u8],
21059            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
21060                {
21061                    fn supportsInterface(
21062                        data: &[u8],
21063                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21064                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21065                                data,
21066                            )
21067                            .map(StakeTableV2Calls::supportsInterface)
21068                    }
21069                    supportsInterface
21070                },
21071                {
21072                    fn delegate(
21073                        data: &[u8],
21074                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21075                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21076                                data,
21077                            )
21078                            .map(StakeTableV2Calls::delegate)
21079                    }
21080                    delegate
21081                },
21082                {
21083                    fn getVersion(
21084                        data: &[u8],
21085                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21086                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21087                                data,
21088                            )
21089                            .map(StakeTableV2Calls::getVersion)
21090                    }
21091                    getVersion
21092                },
21093                {
21094                    fn registerValidator(
21095                        data: &[u8],
21096                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21097                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21098                                data,
21099                            )
21100                            .map(StakeTableV2Calls::registerValidator)
21101                    }
21102                    registerValidator
21103                },
21104                {
21105                    fn updateExitEscrowPeriod(
21106                        data: &[u8],
21107                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21108                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21109                                data,
21110                            )
21111                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
21112                    }
21113                    updateExitEscrowPeriod
21114                },
21115                {
21116                    fn claimValidatorExit(
21117                        data: &[u8],
21118                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21119                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21120                                data,
21121                            )
21122                            .map(StakeTableV2Calls::claimValidatorExit)
21123                    }
21124                    claimValidatorExit
21125                },
21126                {
21127                    fn getRoleAdmin(
21128                        data: &[u8],
21129                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21130                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21131                                data,
21132                            )
21133                            .map(StakeTableV2Calls::getRoleAdmin)
21134                    }
21135                    getRoleAdmin
21136                },
21137                {
21138                    fn registerValidatorV2(
21139                        data: &[u8],
21140                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21141                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21142                                data,
21143                            )
21144                            .map(StakeTableV2Calls::registerValidatorV2)
21145                    }
21146                    registerValidatorV2
21147                },
21148                {
21149                    fn setMaxCommissionIncrease(
21150                        data: &[u8],
21151                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21152                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21153                                data,
21154                            )
21155                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
21156                    }
21157                    setMaxCommissionIncrease
21158                },
21159                {
21160                    fn grantRole(
21161                        data: &[u8],
21162                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21163                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21164                                data,
21165                            )
21166                            .map(StakeTableV2Calls::grantRole)
21167                    }
21168                    grantRole
21169                },
21170                {
21171                    fn MAX_METADATA_URI_LENGTH(
21172                        data: &[u8],
21173                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21174                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21175                                data,
21176                            )
21177                            .map(StakeTableV2Calls::MAX_METADATA_URI_LENGTH)
21178                    }
21179                    MAX_METADATA_URI_LENGTH
21180                },
21181                {
21182                    fn renounceRole(
21183                        data: &[u8],
21184                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21185                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21186                                data,
21187                            )
21188                            .map(StakeTableV2Calls::renounceRole)
21189                    }
21190                    renounceRole
21191                },
21192                {
21193                    fn setMinCommissionUpdateInterval(
21194                        data: &[u8],
21195                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21196                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21197                                data,
21198                            )
21199                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
21200                    }
21201                    setMinCommissionUpdateInterval
21202                },
21203                {
21204                    fn updateCommission(
21205                        data: &[u8],
21206                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21207                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21208                                data,
21209                            )
21210                            .map(StakeTableV2Calls::updateCommission)
21211                    }
21212                    updateCommission
21213                },
21214                {
21215                    fn setMinDelegateAmount(
21216                        data: &[u8],
21217                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21218                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21219                                data,
21220                            )
21221                            .map(StakeTableV2Calls::setMinDelegateAmount)
21222                    }
21223                    setMinDelegateAmount
21224                },
21225                {
21226                    fn initializedAtBlock(
21227                        data: &[u8],
21228                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21229                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21230                                data,
21231                            )
21232                            .map(StakeTableV2Calls::initializedAtBlock)
21233                    }
21234                    initializedAtBlock
21235                },
21236                {
21237                    fn maxCommissionIncrease(
21238                        data: &[u8],
21239                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21240                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21241                                data,
21242                            )
21243                            .map(StakeTableV2Calls::maxCommissionIncrease)
21244                    }
21245                    maxCommissionIncrease
21246                },
21247                {
21248                    fn unpause(
21249                        data: &[u8],
21250                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21251                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21252                                data,
21253                            )
21254                            .map(StakeTableV2Calls::unpause)
21255                    }
21256                    unpause
21257                },
21258                {
21259                    fn undelegate(
21260                        data: &[u8],
21261                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21262                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21263                                data,
21264                            )
21265                            .map(StakeTableV2Calls::undelegate)
21266                    }
21267                    undelegate
21268                },
21269                {
21270                    fn upgradeToAndCall(
21271                        data: &[u8],
21272                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21273                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21274                                data,
21275                            )
21276                            .map(StakeTableV2Calls::upgradeToAndCall)
21277                    }
21278                    upgradeToAndCall
21279                },
21280                {
21281                    fn initializeV2(
21282                        data: &[u8],
21283                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21284                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21285                                data,
21286                            )
21287                            .map(StakeTableV2Calls::initializeV2)
21288                    }
21289                    initializeV2
21290                },
21291                {
21292                    fn proxiableUUID(
21293                        data: &[u8],
21294                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21295                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21296                                data,
21297                            )
21298                            .map(StakeTableV2Calls::proxiableUUID)
21299                    }
21300                    proxiableUUID
21301                },
21302                {
21303                    fn updateConsensusKeys(
21304                        data: &[u8],
21305                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21306                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21307                                data,
21308                            )
21309                            .map(StakeTableV2Calls::updateConsensusKeys)
21310                    }
21311                    updateConsensusKeys
21312                },
21313                {
21314                    fn paused(
21315                        data: &[u8],
21316                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21317                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21318                                data,
21319                            )
21320                            .map(StakeTableV2Calls::paused)
21321                    }
21322                    paused
21323                },
21324                {
21325                    fn schnorrKeys(
21326                        data: &[u8],
21327                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21328                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21329                                data,
21330                            )
21331                            .map(StakeTableV2Calls::schnorrKeys)
21332                    }
21333                    schnorrKeys
21334                },
21335                {
21336                    fn deregisterValidator(
21337                        data: &[u8],
21338                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21339                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21340                                data,
21341                            )
21342                            .map(StakeTableV2Calls::deregisterValidator)
21343                    }
21344                    deregisterValidator
21345                },
21346                {
21347                    fn MIN_EXIT_ESCROW_PERIOD(
21348                        data: &[u8],
21349                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21350                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21351                                data,
21352                            )
21353                            .map(StakeTableV2Calls::MIN_EXIT_ESCROW_PERIOD)
21354                    }
21355                    MIN_EXIT_ESCROW_PERIOD
21356                },
21357                {
21358                    fn renounceOwnership(
21359                        data: &[u8],
21360                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21361                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21362                                data,
21363                            )
21364                            .map(StakeTableV2Calls::renounceOwnership)
21365                    }
21366                    renounceOwnership
21367                },
21368                {
21369                    fn minDelegateAmount(
21370                        data: &[u8],
21371                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21372                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21373                                data,
21374                            )
21375                            .map(StakeTableV2Calls::minDelegateAmount)
21376                    }
21377                    minDelegateAmount
21378                },
21379                {
21380                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21381                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21382                                data,
21383                            )
21384                            .map(StakeTableV2Calls::pause)
21385                    }
21386                    pause
21387                },
21388                {
21389                    fn updateMetadataUri(
21390                        data: &[u8],
21391                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21392                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21393                                data,
21394                            )
21395                            .map(StakeTableV2Calls::updateMetadataUri)
21396                    }
21397                    updateMetadataUri
21398                },
21399                {
21400                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21401                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21402                                data,
21403                            )
21404                            .map(StakeTableV2Calls::owner)
21405                    }
21406                    owner
21407                },
21408                {
21409                    fn hasRole(
21410                        data: &[u8],
21411                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21412                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21413                                data,
21414                            )
21415                            .map(StakeTableV2Calls::hasRole)
21416                    }
21417                    hasRole
21418                },
21419                {
21420                    fn _hashBlsKey(
21421                        data: &[u8],
21422                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21423                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21424                                data,
21425                            )
21426                            .map(StakeTableV2Calls::_hashBlsKey)
21427                    }
21428                    _hashBlsKey
21429                },
21430                {
21431                    fn exitEscrowPeriod(
21432                        data: &[u8],
21433                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21434                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21435                                data,
21436                            )
21437                            .map(StakeTableV2Calls::exitEscrowPeriod)
21438                    }
21439                    exitEscrowPeriod
21440                },
21441                {
21442                    fn commissionTracking(
21443                        data: &[u8],
21444                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21445                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21446                                data,
21447                            )
21448                            .map(StakeTableV2Calls::commissionTracking)
21449                    }
21450                    commissionTracking
21451                },
21452                {
21453                    fn DEFAULT_ADMIN_ROLE(
21454                        data: &[u8],
21455                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21456                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21457                                data,
21458                            )
21459                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
21460                    }
21461                    DEFAULT_ADMIN_ROLE
21462                },
21463                {
21464                    fn undelegations(
21465                        data: &[u8],
21466                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21467                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21468                                data,
21469                            )
21470                            .map(StakeTableV2Calls::undelegations)
21471                    }
21472                    undelegations
21473                },
21474                {
21475                    fn claimWithdrawal(
21476                        data: &[u8],
21477                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21478                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21479                                data,
21480                            )
21481                            .map(StakeTableV2Calls::claimWithdrawal)
21482                    }
21483                    claimWithdrawal
21484                },
21485                {
21486                    fn updateConsensusKeysV2(
21487                        data: &[u8],
21488                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21489                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21490                                data,
21491                            )
21492                            .map(StakeTableV2Calls::updateConsensusKeysV2)
21493                    }
21494                    updateConsensusKeysV2
21495                },
21496                {
21497                    fn UPGRADE_INTERFACE_VERSION(
21498                        data: &[u8],
21499                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21500                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21501                                data,
21502                            )
21503                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
21504                    }
21505                    UPGRADE_INTERFACE_VERSION
21506                },
21507                {
21508                    fn blsKeys(
21509                        data: &[u8],
21510                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21511                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21512                                data,
21513                            )
21514                            .map(StakeTableV2Calls::blsKeys)
21515                    }
21516                    blsKeys
21517                },
21518                {
21519                    fn lightClient(
21520                        data: &[u8],
21521                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21522                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21523                                data,
21524                            )
21525                            .map(StakeTableV2Calls::lightClient)
21526                    }
21527                    lightClient
21528                },
21529                {
21530                    fn validatorExits(
21531                        data: &[u8],
21532                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21533                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21534                                data,
21535                            )
21536                            .map(StakeTableV2Calls::validatorExits)
21537                    }
21538                    validatorExits
21539                },
21540                {
21541                    fn getUndelegation(
21542                        data: &[u8],
21543                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21544                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21545                                data,
21546                            )
21547                            .map(StakeTableV2Calls::getUndelegation)
21548                    }
21549                    getUndelegation
21550                },
21551                {
21552                    fn activeStake(
21553                        data: &[u8],
21554                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21555                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21556                                data,
21557                            )
21558                            .map(StakeTableV2Calls::activeStake)
21559                    }
21560                    activeStake
21561                },
21562                {
21563                    fn initialize(
21564                        data: &[u8],
21565                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21566                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21567                                data,
21568                            )
21569                            .map(StakeTableV2Calls::initialize)
21570                    }
21571                    initialize
21572                },
21573                {
21574                    fn delegations(
21575                        data: &[u8],
21576                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21577                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21578                                data,
21579                            )
21580                            .map(StakeTableV2Calls::delegations)
21581                    }
21582                    delegations
21583                },
21584                {
21585                    fn revokeRole(
21586                        data: &[u8],
21587                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21588                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21589                                data,
21590                            )
21591                            .map(StakeTableV2Calls::revokeRole)
21592                    }
21593                    revokeRole
21594                },
21595                {
21596                    fn minCommissionIncreaseInterval(
21597                        data: &[u8],
21598                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21599                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21600                                data,
21601                            )
21602                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
21603                    }
21604                    minCommissionIncreaseInterval
21605                },
21606                {
21607                    fn validateMetadataUri(
21608                        data: &[u8],
21609                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21610                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21611                                data,
21612                            )
21613                            .map(StakeTableV2Calls::validateMetadataUri)
21614                    }
21615                    validateMetadataUri
21616                },
21617                {
21618                    fn MAX_EXIT_ESCROW_PERIOD(
21619                        data: &[u8],
21620                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21621                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21622                                data,
21623                            )
21624                            .map(StakeTableV2Calls::MAX_EXIT_ESCROW_PERIOD)
21625                    }
21626                    MAX_EXIT_ESCROW_PERIOD
21627                },
21628                {
21629                    fn MAX_COMMISSION_BPS(
21630                        data: &[u8],
21631                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21632                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21633                                data,
21634                            )
21635                            .map(StakeTableV2Calls::MAX_COMMISSION_BPS)
21636                    }
21637                    MAX_COMMISSION_BPS
21638                },
21639                {
21640                    fn PAUSER_ROLE(
21641                        data: &[u8],
21642                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21643                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21644                                data,
21645                            )
21646                            .map(StakeTableV2Calls::PAUSER_ROLE)
21647                    }
21648                    PAUSER_ROLE
21649                },
21650                {
21651                    fn transferOwnership(
21652                        data: &[u8],
21653                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21654                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21655                                data,
21656                            )
21657                            .map(StakeTableV2Calls::transferOwnership)
21658                    }
21659                    transferOwnership
21660                },
21661                {
21662                    fn validators(
21663                        data: &[u8],
21664                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21665                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21666                                data,
21667                            )
21668                            .map(StakeTableV2Calls::validators)
21669                    }
21670                    validators
21671                },
21672                {
21673                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21674                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21675                                data,
21676                            )
21677                            .map(StakeTableV2Calls::token)
21678                    }
21679                    token
21680                },
21681            ];
21682            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
21683                return Err(
21684                    alloy_sol_types::Error::unknown_selector(
21685                        <Self as alloy_sol_types::SolInterface>::NAME,
21686                        selector,
21687                    ),
21688                );
21689            };
21690            DECODE_VALIDATE_SHIMS[idx](data)
21691        }
21692        #[inline]
21693        fn abi_encoded_size(&self) -> usize {
21694            match self {
21695                Self::DEFAULT_ADMIN_ROLE(inner) => {
21696                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
21697                        inner,
21698                    )
21699                }
21700                Self::MAX_COMMISSION_BPS(inner) => {
21701                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encoded_size(
21702                        inner,
21703                    )
21704                }
21705                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
21706                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
21707                        inner,
21708                    )
21709                }
21710                Self::MAX_METADATA_URI_LENGTH(inner) => {
21711                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
21712                        inner,
21713                    )
21714                }
21715                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
21716                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
21717                        inner,
21718                    )
21719                }
21720                Self::PAUSER_ROLE(inner) => {
21721                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
21722                        inner,
21723                    )
21724                }
21725                Self::UPGRADE_INTERFACE_VERSION(inner) => {
21726                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
21727                        inner,
21728                    )
21729                }
21730                Self::_hashBlsKey(inner) => {
21731                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
21732                        inner,
21733                    )
21734                }
21735                Self::activeStake(inner) => {
21736                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
21737                        inner,
21738                    )
21739                }
21740                Self::blsKeys(inner) => {
21741                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21742                }
21743                Self::claimValidatorExit(inner) => {
21744                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
21745                        inner,
21746                    )
21747                }
21748                Self::claimWithdrawal(inner) => {
21749                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
21750                        inner,
21751                    )
21752                }
21753                Self::commissionTracking(inner) => {
21754                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encoded_size(
21755                        inner,
21756                    )
21757                }
21758                Self::delegate(inner) => {
21759                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21760                }
21761                Self::delegations(inner) => {
21762                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
21763                        inner,
21764                    )
21765                }
21766                Self::deregisterValidator(inner) => {
21767                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
21768                        inner,
21769                    )
21770                }
21771                Self::exitEscrowPeriod(inner) => {
21772                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
21773                        inner,
21774                    )
21775                }
21776                Self::getRoleAdmin(inner) => {
21777                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
21778                        inner,
21779                    )
21780                }
21781                Self::getUndelegation(inner) => {
21782                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encoded_size(
21783                        inner,
21784                    )
21785                }
21786                Self::getVersion(inner) => {
21787                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21788                }
21789                Self::grantRole(inner) => {
21790                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21791                }
21792                Self::hasRole(inner) => {
21793                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21794                }
21795                Self::initialize(inner) => {
21796                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21797                }
21798                Self::initializeV2(inner) => {
21799                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
21800                        inner,
21801                    )
21802                }
21803                Self::initializedAtBlock(inner) => {
21804                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
21805                        inner,
21806                    )
21807                }
21808                Self::lightClient(inner) => {
21809                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
21810                        inner,
21811                    )
21812                }
21813                Self::maxCommissionIncrease(inner) => {
21814                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
21815                        inner,
21816                    )
21817                }
21818                Self::minCommissionIncreaseInterval(inner) => {
21819                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
21820                        inner,
21821                    )
21822                }
21823                Self::minDelegateAmount(inner) => {
21824                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
21825                        inner,
21826                    )
21827                }
21828                Self::owner(inner) => {
21829                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21830                }
21831                Self::pause(inner) => {
21832                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21833                }
21834                Self::paused(inner) => {
21835                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21836                }
21837                Self::proxiableUUID(inner) => {
21838                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
21839                        inner,
21840                    )
21841                }
21842                Self::registerValidator(inner) => {
21843                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
21844                        inner,
21845                    )
21846                }
21847                Self::registerValidatorV2(inner) => {
21848                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
21849                        inner,
21850                    )
21851                }
21852                Self::renounceOwnership(inner) => {
21853                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
21854                        inner,
21855                    )
21856                }
21857                Self::renounceRole(inner) => {
21858                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
21859                        inner,
21860                    )
21861                }
21862                Self::revokeRole(inner) => {
21863                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21864                }
21865                Self::schnorrKeys(inner) => {
21866                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
21867                        inner,
21868                    )
21869                }
21870                Self::setMaxCommissionIncrease(inner) => {
21871                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
21872                        inner,
21873                    )
21874                }
21875                Self::setMinCommissionUpdateInterval(inner) => {
21876                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
21877                        inner,
21878                    )
21879                }
21880                Self::setMinDelegateAmount(inner) => {
21881                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
21882                        inner,
21883                    )
21884                }
21885                Self::supportsInterface(inner) => {
21886                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
21887                        inner,
21888                    )
21889                }
21890                Self::token(inner) => {
21891                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21892                }
21893                Self::transferOwnership(inner) => {
21894                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
21895                        inner,
21896                    )
21897                }
21898                Self::undelegate(inner) => {
21899                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21900                }
21901                Self::undelegations(inner) => {
21902                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
21903                        inner,
21904                    )
21905                }
21906                Self::unpause(inner) => {
21907                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21908                }
21909                Self::updateCommission(inner) => {
21910                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
21911                        inner,
21912                    )
21913                }
21914                Self::updateConsensusKeys(inner) => {
21915                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
21916                        inner,
21917                    )
21918                }
21919                Self::updateConsensusKeysV2(inner) => {
21920                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
21921                        inner,
21922                    )
21923                }
21924                Self::updateExitEscrowPeriod(inner) => {
21925                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
21926                        inner,
21927                    )
21928                }
21929                Self::updateMetadataUri(inner) => {
21930                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
21931                        inner,
21932                    )
21933                }
21934                Self::upgradeToAndCall(inner) => {
21935                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
21936                        inner,
21937                    )
21938                }
21939                Self::validateMetadataUri(inner) => {
21940                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
21941                        inner,
21942                    )
21943                }
21944                Self::validatorExits(inner) => {
21945                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
21946                        inner,
21947                    )
21948                }
21949                Self::validators(inner) => {
21950                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21951                }
21952            }
21953        }
21954        #[inline]
21955        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
21956            match self {
21957                Self::DEFAULT_ADMIN_ROLE(inner) => {
21958                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
21959                        inner,
21960                        out,
21961                    )
21962                }
21963                Self::MAX_COMMISSION_BPS(inner) => {
21964                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encode_raw(
21965                        inner,
21966                        out,
21967                    )
21968                }
21969                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
21970                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
21971                        inner,
21972                        out,
21973                    )
21974                }
21975                Self::MAX_METADATA_URI_LENGTH(inner) => {
21976                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
21977                        inner,
21978                        out,
21979                    )
21980                }
21981                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
21982                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
21983                        inner,
21984                        out,
21985                    )
21986                }
21987                Self::PAUSER_ROLE(inner) => {
21988                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
21989                        inner,
21990                        out,
21991                    )
21992                }
21993                Self::UPGRADE_INTERFACE_VERSION(inner) => {
21994                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
21995                        inner,
21996                        out,
21997                    )
21998                }
21999                Self::_hashBlsKey(inner) => {
22000                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
22001                        inner,
22002                        out,
22003                    )
22004                }
22005                Self::activeStake(inner) => {
22006                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
22007                        inner,
22008                        out,
22009                    )
22010                }
22011                Self::blsKeys(inner) => {
22012                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22013                }
22014                Self::claimValidatorExit(inner) => {
22015                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
22016                        inner,
22017                        out,
22018                    )
22019                }
22020                Self::claimWithdrawal(inner) => {
22021                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22022                        inner,
22023                        out,
22024                    )
22025                }
22026                Self::commissionTracking(inner) => {
22027                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encode_raw(
22028                        inner,
22029                        out,
22030                    )
22031                }
22032                Self::delegate(inner) => {
22033                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
22034                        inner,
22035                        out,
22036                    )
22037                }
22038                Self::delegations(inner) => {
22039                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22040                        inner,
22041                        out,
22042                    )
22043                }
22044                Self::deregisterValidator(inner) => {
22045                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
22046                        inner,
22047                        out,
22048                    )
22049                }
22050                Self::exitEscrowPeriod(inner) => {
22051                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
22052                        inner,
22053                        out,
22054                    )
22055                }
22056                Self::getRoleAdmin(inner) => {
22057                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
22058                        inner,
22059                        out,
22060                    )
22061                }
22062                Self::getUndelegation(inner) => {
22063                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
22064                        inner,
22065                        out,
22066                    )
22067                }
22068                Self::getVersion(inner) => {
22069                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
22070                        inner,
22071                        out,
22072                    )
22073                }
22074                Self::grantRole(inner) => {
22075                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22076                        inner,
22077                        out,
22078                    )
22079                }
22080                Self::hasRole(inner) => {
22081                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22082                }
22083                Self::initialize(inner) => {
22084                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
22085                        inner,
22086                        out,
22087                    )
22088                }
22089                Self::initializeV2(inner) => {
22090                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22091                        inner,
22092                        out,
22093                    )
22094                }
22095                Self::initializedAtBlock(inner) => {
22096                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
22097                        inner,
22098                        out,
22099                    )
22100                }
22101                Self::lightClient(inner) => {
22102                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
22103                        inner,
22104                        out,
22105                    )
22106                }
22107                Self::maxCommissionIncrease(inner) => {
22108                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
22109                        inner,
22110                        out,
22111                    )
22112                }
22113                Self::minCommissionIncreaseInterval(inner) => {
22114                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22115                        inner,
22116                        out,
22117                    )
22118                }
22119                Self::minDelegateAmount(inner) => {
22120                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
22121                        inner,
22122                        out,
22123                    )
22124                }
22125                Self::owner(inner) => {
22126                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22127                }
22128                Self::pause(inner) => {
22129                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22130                }
22131                Self::paused(inner) => {
22132                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22133                }
22134                Self::proxiableUUID(inner) => {
22135                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
22136                        inner,
22137                        out,
22138                    )
22139                }
22140                Self::registerValidator(inner) => {
22141                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
22142                        inner,
22143                        out,
22144                    )
22145                }
22146                Self::registerValidatorV2(inner) => {
22147                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22148                        inner,
22149                        out,
22150                    )
22151                }
22152                Self::renounceOwnership(inner) => {
22153                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
22154                        inner,
22155                        out,
22156                    )
22157                }
22158                Self::renounceRole(inner) => {
22159                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22160                        inner,
22161                        out,
22162                    )
22163                }
22164                Self::revokeRole(inner) => {
22165                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22166                        inner,
22167                        out,
22168                    )
22169                }
22170                Self::schnorrKeys(inner) => {
22171                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
22172                        inner,
22173                        out,
22174                    )
22175                }
22176                Self::setMaxCommissionIncrease(inner) => {
22177                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
22178                        inner,
22179                        out,
22180                    )
22181                }
22182                Self::setMinCommissionUpdateInterval(inner) => {
22183                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22184                        inner,
22185                        out,
22186                    )
22187                }
22188                Self::setMinDelegateAmount(inner) => {
22189                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
22190                        inner,
22191                        out,
22192                    )
22193                }
22194                Self::supportsInterface(inner) => {
22195                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
22196                        inner,
22197                        out,
22198                    )
22199                }
22200                Self::token(inner) => {
22201                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22202                }
22203                Self::transferOwnership(inner) => {
22204                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
22205                        inner,
22206                        out,
22207                    )
22208                }
22209                Self::undelegate(inner) => {
22210                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
22211                        inner,
22212                        out,
22213                    )
22214                }
22215                Self::undelegations(inner) => {
22216                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22217                        inner,
22218                        out,
22219                    )
22220                }
22221                Self::unpause(inner) => {
22222                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22223                }
22224                Self::updateCommission(inner) => {
22225                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
22226                        inner,
22227                        out,
22228                    )
22229                }
22230                Self::updateConsensusKeys(inner) => {
22231                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
22232                        inner,
22233                        out,
22234                    )
22235                }
22236                Self::updateConsensusKeysV2(inner) => {
22237                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22238                        inner,
22239                        out,
22240                    )
22241                }
22242                Self::updateExitEscrowPeriod(inner) => {
22243                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
22244                        inner,
22245                        out,
22246                    )
22247                }
22248                Self::updateMetadataUri(inner) => {
22249                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
22250                        inner,
22251                        out,
22252                    )
22253                }
22254                Self::upgradeToAndCall(inner) => {
22255                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
22256                        inner,
22257                        out,
22258                    )
22259                }
22260                Self::validateMetadataUri(inner) => {
22261                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
22262                        inner,
22263                        out,
22264                    )
22265                }
22266                Self::validatorExits(inner) => {
22267                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22268                        inner,
22269                        out,
22270                    )
22271                }
22272                Self::validators(inner) => {
22273                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22274                        inner,
22275                        out,
22276                    )
22277                }
22278            }
22279        }
22280    }
22281    ///Container for all the [`StakeTableV2`](self) custom errors.
22282    #[derive(Clone)]
22283    #[derive(serde::Serialize, serde::Deserialize)]
22284    #[derive(Debug, PartialEq, Eq, Hash)]
22285    pub enum StakeTableV2Errors {
22286        #[allow(missing_docs)]
22287        AccessControlBadConfirmation(AccessControlBadConfirmation),
22288        #[allow(missing_docs)]
22289        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
22290        #[allow(missing_docs)]
22291        AddressEmptyCode(AddressEmptyCode),
22292        #[allow(missing_docs)]
22293        BLSSigVerificationFailed(BLSSigVerificationFailed),
22294        #[allow(missing_docs)]
22295        BN254PairingProdFailed(BN254PairingProdFailed),
22296        #[allow(missing_docs)]
22297        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
22298        #[allow(missing_docs)]
22299        CommissionAlreadyInitialized(CommissionAlreadyInitialized),
22300        #[allow(missing_docs)]
22301        CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax),
22302        #[allow(missing_docs)]
22303        CommissionUnchanged(CommissionUnchanged),
22304        #[allow(missing_docs)]
22305        CommissionUpdateTooSoon(CommissionUpdateTooSoon),
22306        #[allow(missing_docs)]
22307        DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced),
22308        #[allow(missing_docs)]
22309        DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked),
22310        #[allow(missing_docs)]
22311        DelegateAmountTooSmall(DelegateAmountTooSmall),
22312        #[allow(missing_docs)]
22313        DeprecatedFunction(DeprecatedFunction),
22314        #[allow(missing_docs)]
22315        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
22316        #[allow(missing_docs)]
22317        ERC1967NonPayable(ERC1967NonPayable),
22318        #[allow(missing_docs)]
22319        EnforcedPause(EnforcedPause),
22320        #[allow(missing_docs)]
22321        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
22322        #[allow(missing_docs)]
22323        ExpectedPause(ExpectedPause),
22324        #[allow(missing_docs)]
22325        FailedInnerCall(FailedInnerCall),
22326        #[allow(missing_docs)]
22327        InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance),
22328        #[allow(missing_docs)]
22329        InsufficientAllowance(InsufficientAllowance),
22330        #[allow(missing_docs)]
22331        InsufficientBalance(InsufficientBalance),
22332        #[allow(missing_docs)]
22333        InvalidCommission(InvalidCommission),
22334        #[allow(missing_docs)]
22335        InvalidG1(InvalidG1),
22336        #[allow(missing_docs)]
22337        InvalidInitialization(InvalidInitialization),
22338        #[allow(missing_docs)]
22339        InvalidMetadataUriLength(InvalidMetadataUriLength),
22340        #[allow(missing_docs)]
22341        InvalidRateLimitParameters(InvalidRateLimitParameters),
22342        #[allow(missing_docs)]
22343        InvalidSchnorrSig(InvalidSchnorrSig),
22344        #[allow(missing_docs)]
22345        InvalidSchnorrVK(InvalidSchnorrVK),
22346        #[allow(missing_docs)]
22347        MinDelegateAmountTooSmall(MinDelegateAmountTooSmall),
22348        #[allow(missing_docs)]
22349        NoUndelegationFound(NoUndelegationFound),
22350        #[allow(missing_docs)]
22351        NotInitializing(NotInitializing),
22352        #[allow(missing_docs)]
22353        NothingToWithdraw(NothingToWithdraw),
22354        #[allow(missing_docs)]
22355        OwnableInvalidOwner(OwnableInvalidOwner),
22356        #[allow(missing_docs)]
22357        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
22358        #[allow(missing_docs)]
22359        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
22360        #[allow(missing_docs)]
22361        PowPrecompileFailed(PowPrecompileFailed),
22362        #[allow(missing_docs)]
22363        PrematureWithdrawal(PrematureWithdrawal),
22364        #[allow(missing_docs)]
22365        SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed),
22366        #[allow(missing_docs)]
22367        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
22368        #[allow(missing_docs)]
22369        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
22370        #[allow(missing_docs)]
22371        UndelegationAlreadyExists(UndelegationAlreadyExists),
22372        #[allow(missing_docs)]
22373        ValidatorAlreadyExited(ValidatorAlreadyExited),
22374        #[allow(missing_docs)]
22375        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
22376        #[allow(missing_docs)]
22377        ValidatorInactive(ValidatorInactive),
22378        #[allow(missing_docs)]
22379        ValidatorNotExited(ValidatorNotExited),
22380        #[allow(missing_docs)]
22381        ZeroAddress(ZeroAddress),
22382        #[allow(missing_docs)]
22383        ZeroAmount(ZeroAmount),
22384    }
22385    impl StakeTableV2Errors {
22386        /// All the selectors of this enum.
22387        ///
22388        /// Note that the selectors might not be in the same order as the variants.
22389        /// No guarantees are made about the order of the selectors.
22390        ///
22391        /// Prefer using `SolInterface` methods instead.
22392        pub const SELECTORS: &'static [[u8; 4usize]] = &[
22393            [1u8, 181u8, 20u8, 174u8],
22394            [6u8, 207u8, 67u8, 143u8],
22395            [12u8, 237u8, 62u8, 80u8],
22396            [17u8, 140u8, 218u8, 167u8],
22397            [20u8, 37u8, 234u8, 66u8],
22398            [22u8, 235u8, 148u8, 203u8],
22399            [30u8, 79u8, 189u8, 247u8],
22400            [31u8, 42u8, 32u8, 5u8],
22401            [35u8, 159u8, 245u8, 127u8],
22402            [37u8, 173u8, 72u8, 202u8],
22403            [42u8, 27u8, 45u8, 216u8],
22404            [47u8, 171u8, 146u8, 202u8],
22405            [50u8, 116u8, 250u8, 100u8],
22406            [66u8, 71u8, 6u8, 135u8],
22407            [76u8, 156u8, 140u8, 227u8],
22408            [80u8, 129u8, 78u8, 16u8],
22409            [80u8, 138u8, 121u8, 63u8],
22410            [90u8, 119u8, 67u8, 87u8],
22411            [102u8, 151u8, 178u8, 50u8],
22412            [103u8, 78u8, 142u8, 243u8],
22413            [123u8, 38u8, 158u8, 146u8],
22414            [125u8, 41u8, 135u8, 49u8],
22415            [139u8, 120u8, 99u8, 29u8],
22416            [141u8, 252u8, 32u8, 43u8],
22417            [144u8, 184u8, 103u8, 138u8],
22418            [146u8, 102u8, 83u8, 81u8],
22419            [153u8, 115u8, 247u8, 216u8],
22420            [153u8, 150u8, 179u8, 21u8],
22421            [158u8, 120u8, 209u8, 76u8],
22422            [170u8, 29u8, 73u8, 164u8],
22423            [174u8, 73u8, 59u8, 3u8],
22424            [176u8, 181u8, 251u8, 153u8],
22425            [179u8, 152u8, 151u8, 159u8],
22426            [181u8, 36u8, 253u8, 106u8],
22427            [181u8, 126u8, 33u8, 223u8],
22428            [194u8, 6u8, 51u8, 79u8],
22429            [194u8, 11u8, 172u8, 148u8],
22430            [194u8, 215u8, 248u8, 19u8],
22431            [208u8, 208u8, 79u8, 96u8],
22432            [212u8, 35u8, 164u8, 241u8],
22433            [215u8, 230u8, 188u8, 248u8],
22434            [217u8, 46u8, 35u8, 61u8],
22435            [217u8, 60u8, 6u8, 101u8],
22436            [220u8, 129u8, 219u8, 133u8],
22437            [224u8, 124u8, 141u8, 186u8],
22438            [226u8, 81u8, 125u8, 63u8],
22439            [234u8, 180u8, 169u8, 99u8],
22440            [242u8, 83u8, 20u8, 166u8],
22441            [249u8, 46u8, 232u8, 169u8],
22442        ];
22443        /// The names of the variants in the same order as `SELECTORS`.
22444        pub const VARIANT_NAMES: &'static [&'static str] = &[
22445            ::core::stringify!(BlsKeyAlreadyUsed),
22446            ::core::stringify!(InvalidSchnorrVK),
22447            ::core::stringify!(BLSSigVerificationFailed),
22448            ::core::stringify!(OwnableUnauthorizedAccount),
22449            ::core::stringify!(FailedInnerCall),
22450            ::core::stringify!(CommissionUpdateTooSoon),
22451            ::core::stringify!(OwnableInvalidOwner),
22452            ::core::stringify!(ZeroAmount),
22453            ::core::stringify!(InvalidMetadataUriLength),
22454            ::core::stringify!(CommissionIncreaseExceedsMax),
22455            ::core::stringify!(InsufficientAllowance),
22456            ::core::stringify!(OwnershipCannotBeRenounced),
22457            ::core::stringify!(PowPrecompileFailed),
22458            ::core::stringify!(InvalidSchnorrSig),
22459            ::core::stringify!(ERC1967InvalidImplementation),
22460            ::core::stringify!(CommissionAlreadyInitialized),
22461            ::core::stringify!(ValidatorInactive),
22462            ::core::stringify!(PrematureWithdrawal),
22463            ::core::stringify!(AccessControlBadConfirmation),
22464            ::core::stringify!(InvalidRateLimitParameters),
22465            ::core::stringify!(InitialActiveStakeExceedsBalance),
22466            ::core::stringify!(DelegateAmountTooSmall),
22467            ::core::stringify!(DefaultAdminCannotBeRenounced),
22468            ::core::stringify!(ExpectedPause),
22469            ::core::stringify!(MinDelegateAmountTooSmall),
22470            ::core::stringify!(InsufficientBalance),
22471            ::core::stringify!(ValidatorAlreadyRegistered),
22472            ::core::stringify!(AddressEmptyCode),
22473            ::core::stringify!(InvalidG1),
22474            ::core::stringify!(UUPSUnsupportedProxiableUUID),
22475            ::core::stringify!(SchnorrKeyAlreadyUsed),
22476            ::core::stringify!(DefaultAdminCannotBeRevoked),
22477            ::core::stringify!(ERC1967NonPayable),
22478            ::core::stringify!(NoUndelegationFound),
22479            ::core::stringify!(ExitEscrowPeriodInvalid),
22480            ::core::stringify!(BN254PairingProdFailed),
22481            ::core::stringify!(CommissionUnchanged),
22482            ::core::stringify!(DeprecatedFunction),
22483            ::core::stringify!(NothingToWithdraw),
22484            ::core::stringify!(UndelegationAlreadyExists),
22485            ::core::stringify!(NotInitializing),
22486            ::core::stringify!(ZeroAddress),
22487            ::core::stringify!(EnforcedPause),
22488            ::core::stringify!(InvalidCommission),
22489            ::core::stringify!(UUPSUnauthorizedCallContext),
22490            ::core::stringify!(AccessControlUnauthorizedAccount),
22491            ::core::stringify!(ValidatorAlreadyExited),
22492            ::core::stringify!(ValidatorNotExited),
22493            ::core::stringify!(InvalidInitialization),
22494        ];
22495        /// The signatures in the same order as `SELECTORS`.
22496        pub const SIGNATURES: &'static [&'static str] = &[
22497            <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
22498            <InvalidSchnorrVK as alloy_sol_types::SolError>::SIGNATURE,
22499            <BLSSigVerificationFailed as alloy_sol_types::SolError>::SIGNATURE,
22500            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
22501            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
22502            <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SIGNATURE,
22503            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
22504            <ZeroAmount as alloy_sol_types::SolError>::SIGNATURE,
22505            <InvalidMetadataUriLength as alloy_sol_types::SolError>::SIGNATURE,
22506            <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SIGNATURE,
22507            <InsufficientAllowance as alloy_sol_types::SolError>::SIGNATURE,
22508            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
22509            <PowPrecompileFailed as alloy_sol_types::SolError>::SIGNATURE,
22510            <InvalidSchnorrSig as alloy_sol_types::SolError>::SIGNATURE,
22511            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
22512            <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SIGNATURE,
22513            <ValidatorInactive as alloy_sol_types::SolError>::SIGNATURE,
22514            <PrematureWithdrawal as alloy_sol_types::SolError>::SIGNATURE,
22515            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
22516            <InvalidRateLimitParameters as alloy_sol_types::SolError>::SIGNATURE,
22517            <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SIGNATURE,
22518            <DelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
22519            <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
22520            <ExpectedPause as alloy_sol_types::SolError>::SIGNATURE,
22521            <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
22522            <InsufficientBalance as alloy_sol_types::SolError>::SIGNATURE,
22523            <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SIGNATURE,
22524            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
22525            <InvalidG1 as alloy_sol_types::SolError>::SIGNATURE,
22526            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
22527            <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
22528            <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SIGNATURE,
22529            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
22530            <NoUndelegationFound as alloy_sol_types::SolError>::SIGNATURE,
22531            <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SIGNATURE,
22532            <BN254PairingProdFailed as alloy_sol_types::SolError>::SIGNATURE,
22533            <CommissionUnchanged as alloy_sol_types::SolError>::SIGNATURE,
22534            <DeprecatedFunction as alloy_sol_types::SolError>::SIGNATURE,
22535            <NothingToWithdraw as alloy_sol_types::SolError>::SIGNATURE,
22536            <UndelegationAlreadyExists as alloy_sol_types::SolError>::SIGNATURE,
22537            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
22538            <ZeroAddress as alloy_sol_types::SolError>::SIGNATURE,
22539            <EnforcedPause as alloy_sol_types::SolError>::SIGNATURE,
22540            <InvalidCommission as alloy_sol_types::SolError>::SIGNATURE,
22541            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
22542            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
22543            <ValidatorAlreadyExited as alloy_sol_types::SolError>::SIGNATURE,
22544            <ValidatorNotExited as alloy_sol_types::SolError>::SIGNATURE,
22545            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
22546        ];
22547        /// Returns the signature for the given selector, if known.
22548        #[inline]
22549        pub fn signature_by_selector(
22550            selector: [u8; 4usize],
22551        ) -> ::core::option::Option<&'static str> {
22552            match Self::SELECTORS.binary_search(&selector) {
22553                ::core::result::Result::Ok(idx) => {
22554                    ::core::option::Option::Some(Self::SIGNATURES[idx])
22555                }
22556                ::core::result::Result::Err(_) => ::core::option::Option::None,
22557            }
22558        }
22559        /// Returns the enum variant name for the given selector, if known.
22560        #[inline]
22561        pub fn name_by_selector(
22562            selector: [u8; 4usize],
22563        ) -> ::core::option::Option<&'static str> {
22564            let sig = Self::signature_by_selector(selector)?;
22565            sig.split_once('(').map(|(name, _)| name)
22566        }
22567    }
22568    #[automatically_derived]
22569    impl alloy_sol_types::SolInterface for StakeTableV2Errors {
22570        const NAME: &'static str = "StakeTableV2Errors";
22571        const MIN_DATA_LENGTH: usize = 0usize;
22572        const COUNT: usize = 49usize;
22573        #[inline]
22574        fn selector(&self) -> [u8; 4] {
22575            match self {
22576                Self::AccessControlBadConfirmation(_) => {
22577                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
22578                }
22579                Self::AccessControlUnauthorizedAccount(_) => {
22580                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
22581                }
22582                Self::AddressEmptyCode(_) => {
22583                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
22584                }
22585                Self::BLSSigVerificationFailed(_) => {
22586                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
22587                }
22588                Self::BN254PairingProdFailed(_) => {
22589                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
22590                }
22591                Self::BlsKeyAlreadyUsed(_) => {
22592                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
22593                }
22594                Self::CommissionAlreadyInitialized(_) => {
22595                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SELECTOR
22596                }
22597                Self::CommissionIncreaseExceedsMax(_) => {
22598                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SELECTOR
22599                }
22600                Self::CommissionUnchanged(_) => {
22601                    <CommissionUnchanged as alloy_sol_types::SolError>::SELECTOR
22602                }
22603                Self::CommissionUpdateTooSoon(_) => {
22604                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SELECTOR
22605                }
22606                Self::DefaultAdminCannotBeRenounced(_) => {
22607                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
22608                }
22609                Self::DefaultAdminCannotBeRevoked(_) => {
22610                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SELECTOR
22611                }
22612                Self::DelegateAmountTooSmall(_) => {
22613                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
22614                }
22615                Self::DeprecatedFunction(_) => {
22616                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
22617                }
22618                Self::ERC1967InvalidImplementation(_) => {
22619                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
22620                }
22621                Self::ERC1967NonPayable(_) => {
22622                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
22623                }
22624                Self::EnforcedPause(_) => {
22625                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
22626                }
22627                Self::ExitEscrowPeriodInvalid(_) => {
22628                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
22629                }
22630                Self::ExpectedPause(_) => {
22631                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
22632                }
22633                Self::FailedInnerCall(_) => {
22634                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
22635                }
22636                Self::InitialActiveStakeExceedsBalance(_) => {
22637                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SELECTOR
22638                }
22639                Self::InsufficientAllowance(_) => {
22640                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
22641                }
22642                Self::InsufficientBalance(_) => {
22643                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
22644                }
22645                Self::InvalidCommission(_) => {
22646                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
22647                }
22648                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
22649                Self::InvalidInitialization(_) => {
22650                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
22651                }
22652                Self::InvalidMetadataUriLength(_) => {
22653                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::SELECTOR
22654                }
22655                Self::InvalidRateLimitParameters(_) => {
22656                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::SELECTOR
22657                }
22658                Self::InvalidSchnorrSig(_) => {
22659                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
22660                }
22661                Self::InvalidSchnorrVK(_) => {
22662                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
22663                }
22664                Self::MinDelegateAmountTooSmall(_) => {
22665                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
22666                }
22667                Self::NoUndelegationFound(_) => {
22668                    <NoUndelegationFound as alloy_sol_types::SolError>::SELECTOR
22669                }
22670                Self::NotInitializing(_) => {
22671                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
22672                }
22673                Self::NothingToWithdraw(_) => {
22674                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
22675                }
22676                Self::OwnableInvalidOwner(_) => {
22677                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
22678                }
22679                Self::OwnableUnauthorizedAccount(_) => {
22680                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
22681                }
22682                Self::OwnershipCannotBeRenounced(_) => {
22683                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
22684                }
22685                Self::PowPrecompileFailed(_) => {
22686                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
22687                }
22688                Self::PrematureWithdrawal(_) => {
22689                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
22690                }
22691                Self::SchnorrKeyAlreadyUsed(_) => {
22692                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
22693                }
22694                Self::UUPSUnauthorizedCallContext(_) => {
22695                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
22696                }
22697                Self::UUPSUnsupportedProxiableUUID(_) => {
22698                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
22699                }
22700                Self::UndelegationAlreadyExists(_) => {
22701                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
22702                }
22703                Self::ValidatorAlreadyExited(_) => {
22704                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
22705                }
22706                Self::ValidatorAlreadyRegistered(_) => {
22707                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
22708                }
22709                Self::ValidatorInactive(_) => {
22710                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
22711                }
22712                Self::ValidatorNotExited(_) => {
22713                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
22714                }
22715                Self::ZeroAddress(_) => {
22716                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
22717                }
22718                Self::ZeroAmount(_) => {
22719                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
22720                }
22721            }
22722        }
22723        #[inline]
22724        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
22725            Self::SELECTORS.get(i).copied()
22726        }
22727        #[inline]
22728        fn valid_selector(selector: [u8; 4]) -> bool {
22729            Self::SELECTORS.binary_search(&selector).is_ok()
22730        }
22731        #[inline]
22732        #[allow(non_snake_case)]
22733        fn abi_decode_raw(
22734            selector: [u8; 4],
22735            data: &[u8],
22736        ) -> alloy_sol_types::Result<Self> {
22737            static DECODE_SHIMS: &[fn(
22738                &[u8],
22739            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
22740                {
22741                    fn BlsKeyAlreadyUsed(
22742                        data: &[u8],
22743                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22744                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
22745                                data,
22746                            )
22747                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
22748                    }
22749                    BlsKeyAlreadyUsed
22750                },
22751                {
22752                    fn InvalidSchnorrVK(
22753                        data: &[u8],
22754                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22755                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
22756                                data,
22757                            )
22758                            .map(StakeTableV2Errors::InvalidSchnorrVK)
22759                    }
22760                    InvalidSchnorrVK
22761                },
22762                {
22763                    fn BLSSigVerificationFailed(
22764                        data: &[u8],
22765                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22766                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
22767                                data,
22768                            )
22769                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
22770                    }
22771                    BLSSigVerificationFailed
22772                },
22773                {
22774                    fn OwnableUnauthorizedAccount(
22775                        data: &[u8],
22776                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22777                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
22778                                data,
22779                            )
22780                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
22781                    }
22782                    OwnableUnauthorizedAccount
22783                },
22784                {
22785                    fn FailedInnerCall(
22786                        data: &[u8],
22787                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22788                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
22789                                data,
22790                            )
22791                            .map(StakeTableV2Errors::FailedInnerCall)
22792                    }
22793                    FailedInnerCall
22794                },
22795                {
22796                    fn CommissionUpdateTooSoon(
22797                        data: &[u8],
22798                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22799                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw(
22800                                data,
22801                            )
22802                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
22803                    }
22804                    CommissionUpdateTooSoon
22805                },
22806                {
22807                    fn OwnableInvalidOwner(
22808                        data: &[u8],
22809                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22810                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
22811                                data,
22812                            )
22813                            .map(StakeTableV2Errors::OwnableInvalidOwner)
22814                    }
22815                    OwnableInvalidOwner
22816                },
22817                {
22818                    fn ZeroAmount(
22819                        data: &[u8],
22820                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22821                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
22822                            .map(StakeTableV2Errors::ZeroAmount)
22823                    }
22824                    ZeroAmount
22825                },
22826                {
22827                    fn InvalidMetadataUriLength(
22828                        data: &[u8],
22829                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22830                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw(
22831                                data,
22832                            )
22833                            .map(StakeTableV2Errors::InvalidMetadataUriLength)
22834                    }
22835                    InvalidMetadataUriLength
22836                },
22837                {
22838                    fn CommissionIncreaseExceedsMax(
22839                        data: &[u8],
22840                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22841                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw(
22842                                data,
22843                            )
22844                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
22845                    }
22846                    CommissionIncreaseExceedsMax
22847                },
22848                {
22849                    fn InsufficientAllowance(
22850                        data: &[u8],
22851                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22852                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
22853                                data,
22854                            )
22855                            .map(StakeTableV2Errors::InsufficientAllowance)
22856                    }
22857                    InsufficientAllowance
22858                },
22859                {
22860                    fn OwnershipCannotBeRenounced(
22861                        data: &[u8],
22862                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22863                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
22864                                data,
22865                            )
22866                            .map(StakeTableV2Errors::OwnershipCannotBeRenounced)
22867                    }
22868                    OwnershipCannotBeRenounced
22869                },
22870                {
22871                    fn PowPrecompileFailed(
22872                        data: &[u8],
22873                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22874                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
22875                                data,
22876                            )
22877                            .map(StakeTableV2Errors::PowPrecompileFailed)
22878                    }
22879                    PowPrecompileFailed
22880                },
22881                {
22882                    fn InvalidSchnorrSig(
22883                        data: &[u8],
22884                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22885                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw(
22886                                data,
22887                            )
22888                            .map(StakeTableV2Errors::InvalidSchnorrSig)
22889                    }
22890                    InvalidSchnorrSig
22891                },
22892                {
22893                    fn ERC1967InvalidImplementation(
22894                        data: &[u8],
22895                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22896                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
22897                                data,
22898                            )
22899                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
22900                    }
22901                    ERC1967InvalidImplementation
22902                },
22903                {
22904                    fn CommissionAlreadyInitialized(
22905                        data: &[u8],
22906                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22907                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw(
22908                                data,
22909                            )
22910                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
22911                    }
22912                    CommissionAlreadyInitialized
22913                },
22914                {
22915                    fn ValidatorInactive(
22916                        data: &[u8],
22917                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22918                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
22919                                data,
22920                            )
22921                            .map(StakeTableV2Errors::ValidatorInactive)
22922                    }
22923                    ValidatorInactive
22924                },
22925                {
22926                    fn PrematureWithdrawal(
22927                        data: &[u8],
22928                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22929                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
22930                                data,
22931                            )
22932                            .map(StakeTableV2Errors::PrematureWithdrawal)
22933                    }
22934                    PrematureWithdrawal
22935                },
22936                {
22937                    fn AccessControlBadConfirmation(
22938                        data: &[u8],
22939                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22940                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
22941                                data,
22942                            )
22943                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
22944                    }
22945                    AccessControlBadConfirmation
22946                },
22947                {
22948                    fn InvalidRateLimitParameters(
22949                        data: &[u8],
22950                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22951                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw(
22952                                data,
22953                            )
22954                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
22955                    }
22956                    InvalidRateLimitParameters
22957                },
22958                {
22959                    fn InitialActiveStakeExceedsBalance(
22960                        data: &[u8],
22961                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22962                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw(
22963                                data,
22964                            )
22965                            .map(StakeTableV2Errors::InitialActiveStakeExceedsBalance)
22966                    }
22967                    InitialActiveStakeExceedsBalance
22968                },
22969                {
22970                    fn DelegateAmountTooSmall(
22971                        data: &[u8],
22972                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22973                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
22974                                data,
22975                            )
22976                            .map(StakeTableV2Errors::DelegateAmountTooSmall)
22977                    }
22978                    DelegateAmountTooSmall
22979                },
22980                {
22981                    fn DefaultAdminCannotBeRenounced(
22982                        data: &[u8],
22983                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22984                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
22985                                data,
22986                            )
22987                            .map(StakeTableV2Errors::DefaultAdminCannotBeRenounced)
22988                    }
22989                    DefaultAdminCannotBeRenounced
22990                },
22991                {
22992                    fn ExpectedPause(
22993                        data: &[u8],
22994                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22995                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
22996                                data,
22997                            )
22998                            .map(StakeTableV2Errors::ExpectedPause)
22999                    }
23000                    ExpectedPause
23001                },
23002                {
23003                    fn MinDelegateAmountTooSmall(
23004                        data: &[u8],
23005                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23006                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
23007                                data,
23008                            )
23009                            .map(StakeTableV2Errors::MinDelegateAmountTooSmall)
23010                    }
23011                    MinDelegateAmountTooSmall
23012                },
23013                {
23014                    fn InsufficientBalance(
23015                        data: &[u8],
23016                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23017                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
23018                                data,
23019                            )
23020                            .map(StakeTableV2Errors::InsufficientBalance)
23021                    }
23022                    InsufficientBalance
23023                },
23024                {
23025                    fn ValidatorAlreadyRegistered(
23026                        data: &[u8],
23027                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23028                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
23029                                data,
23030                            )
23031                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
23032                    }
23033                    ValidatorAlreadyRegistered
23034                },
23035                {
23036                    fn AddressEmptyCode(
23037                        data: &[u8],
23038                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23039                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
23040                                data,
23041                            )
23042                            .map(StakeTableV2Errors::AddressEmptyCode)
23043                    }
23044                    AddressEmptyCode
23045                },
23046                {
23047                    fn InvalidG1(
23048                        data: &[u8],
23049                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23050                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
23051                            .map(StakeTableV2Errors::InvalidG1)
23052                    }
23053                    InvalidG1
23054                },
23055                {
23056                    fn UUPSUnsupportedProxiableUUID(
23057                        data: &[u8],
23058                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23059                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
23060                                data,
23061                            )
23062                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
23063                    }
23064                    UUPSUnsupportedProxiableUUID
23065                },
23066                {
23067                    fn SchnorrKeyAlreadyUsed(
23068                        data: &[u8],
23069                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23070                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
23071                                data,
23072                            )
23073                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
23074                    }
23075                    SchnorrKeyAlreadyUsed
23076                },
23077                {
23078                    fn DefaultAdminCannotBeRevoked(
23079                        data: &[u8],
23080                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23081                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw(
23082                                data,
23083                            )
23084                            .map(StakeTableV2Errors::DefaultAdminCannotBeRevoked)
23085                    }
23086                    DefaultAdminCannotBeRevoked
23087                },
23088                {
23089                    fn ERC1967NonPayable(
23090                        data: &[u8],
23091                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23092                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
23093                                data,
23094                            )
23095                            .map(StakeTableV2Errors::ERC1967NonPayable)
23096                    }
23097                    ERC1967NonPayable
23098                },
23099                {
23100                    fn NoUndelegationFound(
23101                        data: &[u8],
23102                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23103                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw(
23104                                data,
23105                            )
23106                            .map(StakeTableV2Errors::NoUndelegationFound)
23107                    }
23108                    NoUndelegationFound
23109                },
23110                {
23111                    fn ExitEscrowPeriodInvalid(
23112                        data: &[u8],
23113                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23114                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
23115                                data,
23116                            )
23117                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
23118                    }
23119                    ExitEscrowPeriodInvalid
23120                },
23121                {
23122                    fn BN254PairingProdFailed(
23123                        data: &[u8],
23124                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23125                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
23126                                data,
23127                            )
23128                            .map(StakeTableV2Errors::BN254PairingProdFailed)
23129                    }
23130                    BN254PairingProdFailed
23131                },
23132                {
23133                    fn CommissionUnchanged(
23134                        data: &[u8],
23135                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23136                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw(
23137                                data,
23138                            )
23139                            .map(StakeTableV2Errors::CommissionUnchanged)
23140                    }
23141                    CommissionUnchanged
23142                },
23143                {
23144                    fn DeprecatedFunction(
23145                        data: &[u8],
23146                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23147                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw(
23148                                data,
23149                            )
23150                            .map(StakeTableV2Errors::DeprecatedFunction)
23151                    }
23152                    DeprecatedFunction
23153                },
23154                {
23155                    fn NothingToWithdraw(
23156                        data: &[u8],
23157                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23158                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
23159                                data,
23160                            )
23161                            .map(StakeTableV2Errors::NothingToWithdraw)
23162                    }
23163                    NothingToWithdraw
23164                },
23165                {
23166                    fn UndelegationAlreadyExists(
23167                        data: &[u8],
23168                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23169                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
23170                                data,
23171                            )
23172                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
23173                    }
23174                    UndelegationAlreadyExists
23175                },
23176                {
23177                    fn NotInitializing(
23178                        data: &[u8],
23179                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23180                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
23181                                data,
23182                            )
23183                            .map(StakeTableV2Errors::NotInitializing)
23184                    }
23185                    NotInitializing
23186                },
23187                {
23188                    fn ZeroAddress(
23189                        data: &[u8],
23190                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23191                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
23192                            .map(StakeTableV2Errors::ZeroAddress)
23193                    }
23194                    ZeroAddress
23195                },
23196                {
23197                    fn EnforcedPause(
23198                        data: &[u8],
23199                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23200                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
23201                                data,
23202                            )
23203                            .map(StakeTableV2Errors::EnforcedPause)
23204                    }
23205                    EnforcedPause
23206                },
23207                {
23208                    fn InvalidCommission(
23209                        data: &[u8],
23210                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23211                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
23212                                data,
23213                            )
23214                            .map(StakeTableV2Errors::InvalidCommission)
23215                    }
23216                    InvalidCommission
23217                },
23218                {
23219                    fn UUPSUnauthorizedCallContext(
23220                        data: &[u8],
23221                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23222                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
23223                                data,
23224                            )
23225                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
23226                    }
23227                    UUPSUnauthorizedCallContext
23228                },
23229                {
23230                    fn AccessControlUnauthorizedAccount(
23231                        data: &[u8],
23232                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23233                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
23234                                data,
23235                            )
23236                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
23237                    }
23238                    AccessControlUnauthorizedAccount
23239                },
23240                {
23241                    fn ValidatorAlreadyExited(
23242                        data: &[u8],
23243                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23244                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
23245                                data,
23246                            )
23247                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
23248                    }
23249                    ValidatorAlreadyExited
23250                },
23251                {
23252                    fn ValidatorNotExited(
23253                        data: &[u8],
23254                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23255                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
23256                                data,
23257                            )
23258                            .map(StakeTableV2Errors::ValidatorNotExited)
23259                    }
23260                    ValidatorNotExited
23261                },
23262                {
23263                    fn InvalidInitialization(
23264                        data: &[u8],
23265                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23266                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
23267                                data,
23268                            )
23269                            .map(StakeTableV2Errors::InvalidInitialization)
23270                    }
23271                    InvalidInitialization
23272                },
23273            ];
23274            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
23275                return Err(
23276                    alloy_sol_types::Error::unknown_selector(
23277                        <Self as alloy_sol_types::SolInterface>::NAME,
23278                        selector,
23279                    ),
23280                );
23281            };
23282            DECODE_SHIMS[idx](data)
23283        }
23284        #[inline]
23285        #[allow(non_snake_case)]
23286        fn abi_decode_raw_validate(
23287            selector: [u8; 4],
23288            data: &[u8],
23289        ) -> alloy_sol_types::Result<Self> {
23290            static DECODE_VALIDATE_SHIMS: &[fn(
23291                &[u8],
23292            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
23293                {
23294                    fn BlsKeyAlreadyUsed(
23295                        data: &[u8],
23296                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23297                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23298                                data,
23299                            )
23300                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
23301                    }
23302                    BlsKeyAlreadyUsed
23303                },
23304                {
23305                    fn InvalidSchnorrVK(
23306                        data: &[u8],
23307                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23308                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
23309                                data,
23310                            )
23311                            .map(StakeTableV2Errors::InvalidSchnorrVK)
23312                    }
23313                    InvalidSchnorrVK
23314                },
23315                {
23316                    fn BLSSigVerificationFailed(
23317                        data: &[u8],
23318                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23319                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23320                                data,
23321                            )
23322                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
23323                    }
23324                    BLSSigVerificationFailed
23325                },
23326                {
23327                    fn OwnableUnauthorizedAccount(
23328                        data: &[u8],
23329                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23330                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
23331                                data,
23332                            )
23333                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
23334                    }
23335                    OwnableUnauthorizedAccount
23336                },
23337                {
23338                    fn FailedInnerCall(
23339                        data: &[u8],
23340                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23341                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
23342                                data,
23343                            )
23344                            .map(StakeTableV2Errors::FailedInnerCall)
23345                    }
23346                    FailedInnerCall
23347                },
23348                {
23349                    fn CommissionUpdateTooSoon(
23350                        data: &[u8],
23351                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23352                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw_validate(
23353                                data,
23354                            )
23355                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
23356                    }
23357                    CommissionUpdateTooSoon
23358                },
23359                {
23360                    fn OwnableInvalidOwner(
23361                        data: &[u8],
23362                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23363                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
23364                                data,
23365                            )
23366                            .map(StakeTableV2Errors::OwnableInvalidOwner)
23367                    }
23368                    OwnableInvalidOwner
23369                },
23370                {
23371                    fn ZeroAmount(
23372                        data: &[u8],
23373                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23374                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
23375                                data,
23376                            )
23377                            .map(StakeTableV2Errors::ZeroAmount)
23378                    }
23379                    ZeroAmount
23380                },
23381                {
23382                    fn InvalidMetadataUriLength(
23383                        data: &[u8],
23384                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23385                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
23386                                data,
23387                            )
23388                            .map(StakeTableV2Errors::InvalidMetadataUriLength)
23389                    }
23390                    InvalidMetadataUriLength
23391                },
23392                {
23393                    fn CommissionIncreaseExceedsMax(
23394                        data: &[u8],
23395                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23396                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw_validate(
23397                                data,
23398                            )
23399                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
23400                    }
23401                    CommissionIncreaseExceedsMax
23402                },
23403                {
23404                    fn InsufficientAllowance(
23405                        data: &[u8],
23406                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23407                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
23408                                data,
23409                            )
23410                            .map(StakeTableV2Errors::InsufficientAllowance)
23411                    }
23412                    InsufficientAllowance
23413                },
23414                {
23415                    fn OwnershipCannotBeRenounced(
23416                        data: &[u8],
23417                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23418                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
23419                                data,
23420                            )
23421                            .map(StakeTableV2Errors::OwnershipCannotBeRenounced)
23422                    }
23423                    OwnershipCannotBeRenounced
23424                },
23425                {
23426                    fn PowPrecompileFailed(
23427                        data: &[u8],
23428                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23429                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23430                                data,
23431                            )
23432                            .map(StakeTableV2Errors::PowPrecompileFailed)
23433                    }
23434                    PowPrecompileFailed
23435                },
23436                {
23437                    fn InvalidSchnorrSig(
23438                        data: &[u8],
23439                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23440                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw_validate(
23441                                data,
23442                            )
23443                            .map(StakeTableV2Errors::InvalidSchnorrSig)
23444                    }
23445                    InvalidSchnorrSig
23446                },
23447                {
23448                    fn ERC1967InvalidImplementation(
23449                        data: &[u8],
23450                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23451                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
23452                                data,
23453                            )
23454                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
23455                    }
23456                    ERC1967InvalidImplementation
23457                },
23458                {
23459                    fn CommissionAlreadyInitialized(
23460                        data: &[u8],
23461                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23462                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw_validate(
23463                                data,
23464                            )
23465                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
23466                    }
23467                    CommissionAlreadyInitialized
23468                },
23469                {
23470                    fn ValidatorInactive(
23471                        data: &[u8],
23472                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23473                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
23474                                data,
23475                            )
23476                            .map(StakeTableV2Errors::ValidatorInactive)
23477                    }
23478                    ValidatorInactive
23479                },
23480                {
23481                    fn PrematureWithdrawal(
23482                        data: &[u8],
23483                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23484                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
23485                                data,
23486                            )
23487                            .map(StakeTableV2Errors::PrematureWithdrawal)
23488                    }
23489                    PrematureWithdrawal
23490                },
23491                {
23492                    fn AccessControlBadConfirmation(
23493                        data: &[u8],
23494                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23495                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
23496                                data,
23497                            )
23498                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
23499                    }
23500                    AccessControlBadConfirmation
23501                },
23502                {
23503                    fn InvalidRateLimitParameters(
23504                        data: &[u8],
23505                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23506                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw_validate(
23507                                data,
23508                            )
23509                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
23510                    }
23511                    InvalidRateLimitParameters
23512                },
23513                {
23514                    fn InitialActiveStakeExceedsBalance(
23515                        data: &[u8],
23516                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23517                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
23518                                data,
23519                            )
23520                            .map(StakeTableV2Errors::InitialActiveStakeExceedsBalance)
23521                    }
23522                    InitialActiveStakeExceedsBalance
23523                },
23524                {
23525                    fn DelegateAmountTooSmall(
23526                        data: &[u8],
23527                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23528                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
23529                                data,
23530                            )
23531                            .map(StakeTableV2Errors::DelegateAmountTooSmall)
23532                    }
23533                    DelegateAmountTooSmall
23534                },
23535                {
23536                    fn DefaultAdminCannotBeRenounced(
23537                        data: &[u8],
23538                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23539                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
23540                                data,
23541                            )
23542                            .map(StakeTableV2Errors::DefaultAdminCannotBeRenounced)
23543                    }
23544                    DefaultAdminCannotBeRenounced
23545                },
23546                {
23547                    fn ExpectedPause(
23548                        data: &[u8],
23549                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23550                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
23551                                data,
23552                            )
23553                            .map(StakeTableV2Errors::ExpectedPause)
23554                    }
23555                    ExpectedPause
23556                },
23557                {
23558                    fn MinDelegateAmountTooSmall(
23559                        data: &[u8],
23560                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23561                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
23562                                data,
23563                            )
23564                            .map(StakeTableV2Errors::MinDelegateAmountTooSmall)
23565                    }
23566                    MinDelegateAmountTooSmall
23567                },
23568                {
23569                    fn InsufficientBalance(
23570                        data: &[u8],
23571                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23572                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
23573                                data,
23574                            )
23575                            .map(StakeTableV2Errors::InsufficientBalance)
23576                    }
23577                    InsufficientBalance
23578                },
23579                {
23580                    fn ValidatorAlreadyRegistered(
23581                        data: &[u8],
23582                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23583                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
23584                                data,
23585                            )
23586                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
23587                    }
23588                    ValidatorAlreadyRegistered
23589                },
23590                {
23591                    fn AddressEmptyCode(
23592                        data: &[u8],
23593                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23594                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
23595                                data,
23596                            )
23597                            .map(StakeTableV2Errors::AddressEmptyCode)
23598                    }
23599                    AddressEmptyCode
23600                },
23601                {
23602                    fn InvalidG1(
23603                        data: &[u8],
23604                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23605                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
23606                                data,
23607                            )
23608                            .map(StakeTableV2Errors::InvalidG1)
23609                    }
23610                    InvalidG1
23611                },
23612                {
23613                    fn UUPSUnsupportedProxiableUUID(
23614                        data: &[u8],
23615                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23616                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
23617                                data,
23618                            )
23619                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
23620                    }
23621                    UUPSUnsupportedProxiableUUID
23622                },
23623                {
23624                    fn SchnorrKeyAlreadyUsed(
23625                        data: &[u8],
23626                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23627                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23628                                data,
23629                            )
23630                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
23631                    }
23632                    SchnorrKeyAlreadyUsed
23633                },
23634                {
23635                    fn DefaultAdminCannotBeRevoked(
23636                        data: &[u8],
23637                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23638                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw_validate(
23639                                data,
23640                            )
23641                            .map(StakeTableV2Errors::DefaultAdminCannotBeRevoked)
23642                    }
23643                    DefaultAdminCannotBeRevoked
23644                },
23645                {
23646                    fn ERC1967NonPayable(
23647                        data: &[u8],
23648                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23649                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
23650                                data,
23651                            )
23652                            .map(StakeTableV2Errors::ERC1967NonPayable)
23653                    }
23654                    ERC1967NonPayable
23655                },
23656                {
23657                    fn NoUndelegationFound(
23658                        data: &[u8],
23659                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23660                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw_validate(
23661                                data,
23662                            )
23663                            .map(StakeTableV2Errors::NoUndelegationFound)
23664                    }
23665                    NoUndelegationFound
23666                },
23667                {
23668                    fn ExitEscrowPeriodInvalid(
23669                        data: &[u8],
23670                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23671                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
23672                                data,
23673                            )
23674                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
23675                    }
23676                    ExitEscrowPeriodInvalid
23677                },
23678                {
23679                    fn BN254PairingProdFailed(
23680                        data: &[u8],
23681                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23682                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23683                                data,
23684                            )
23685                            .map(StakeTableV2Errors::BN254PairingProdFailed)
23686                    }
23687                    BN254PairingProdFailed
23688                },
23689                {
23690                    fn CommissionUnchanged(
23691                        data: &[u8],
23692                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23693                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw_validate(
23694                                data,
23695                            )
23696                            .map(StakeTableV2Errors::CommissionUnchanged)
23697                    }
23698                    CommissionUnchanged
23699                },
23700                {
23701                    fn DeprecatedFunction(
23702                        data: &[u8],
23703                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23704                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw_validate(
23705                                data,
23706                            )
23707                            .map(StakeTableV2Errors::DeprecatedFunction)
23708                    }
23709                    DeprecatedFunction
23710                },
23711                {
23712                    fn NothingToWithdraw(
23713                        data: &[u8],
23714                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23715                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
23716                                data,
23717                            )
23718                            .map(StakeTableV2Errors::NothingToWithdraw)
23719                    }
23720                    NothingToWithdraw
23721                },
23722                {
23723                    fn UndelegationAlreadyExists(
23724                        data: &[u8],
23725                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23726                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
23727                                data,
23728                            )
23729                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
23730                    }
23731                    UndelegationAlreadyExists
23732                },
23733                {
23734                    fn NotInitializing(
23735                        data: &[u8],
23736                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23737                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
23738                                data,
23739                            )
23740                            .map(StakeTableV2Errors::NotInitializing)
23741                    }
23742                    NotInitializing
23743                },
23744                {
23745                    fn ZeroAddress(
23746                        data: &[u8],
23747                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23748                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
23749                                data,
23750                            )
23751                            .map(StakeTableV2Errors::ZeroAddress)
23752                    }
23753                    ZeroAddress
23754                },
23755                {
23756                    fn EnforcedPause(
23757                        data: &[u8],
23758                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23759                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
23760                                data,
23761                            )
23762                            .map(StakeTableV2Errors::EnforcedPause)
23763                    }
23764                    EnforcedPause
23765                },
23766                {
23767                    fn InvalidCommission(
23768                        data: &[u8],
23769                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23770                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
23771                                data,
23772                            )
23773                            .map(StakeTableV2Errors::InvalidCommission)
23774                    }
23775                    InvalidCommission
23776                },
23777                {
23778                    fn UUPSUnauthorizedCallContext(
23779                        data: &[u8],
23780                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23781                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
23782                                data,
23783                            )
23784                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
23785                    }
23786                    UUPSUnauthorizedCallContext
23787                },
23788                {
23789                    fn AccessControlUnauthorizedAccount(
23790                        data: &[u8],
23791                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23792                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
23793                                data,
23794                            )
23795                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
23796                    }
23797                    AccessControlUnauthorizedAccount
23798                },
23799                {
23800                    fn ValidatorAlreadyExited(
23801                        data: &[u8],
23802                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23803                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
23804                                data,
23805                            )
23806                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
23807                    }
23808                    ValidatorAlreadyExited
23809                },
23810                {
23811                    fn ValidatorNotExited(
23812                        data: &[u8],
23813                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23814                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
23815                                data,
23816                            )
23817                            .map(StakeTableV2Errors::ValidatorNotExited)
23818                    }
23819                    ValidatorNotExited
23820                },
23821                {
23822                    fn InvalidInitialization(
23823                        data: &[u8],
23824                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23825                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
23826                                data,
23827                            )
23828                            .map(StakeTableV2Errors::InvalidInitialization)
23829                    }
23830                    InvalidInitialization
23831                },
23832            ];
23833            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
23834                return Err(
23835                    alloy_sol_types::Error::unknown_selector(
23836                        <Self as alloy_sol_types::SolInterface>::NAME,
23837                        selector,
23838                    ),
23839                );
23840            };
23841            DECODE_VALIDATE_SHIMS[idx](data)
23842        }
23843        #[inline]
23844        fn abi_encoded_size(&self) -> usize {
23845            match self {
23846                Self::AccessControlBadConfirmation(inner) => {
23847                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
23848                        inner,
23849                    )
23850                }
23851                Self::AccessControlUnauthorizedAccount(inner) => {
23852                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
23853                        inner,
23854                    )
23855                }
23856                Self::AddressEmptyCode(inner) => {
23857                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
23858                        inner,
23859                    )
23860                }
23861                Self::BLSSigVerificationFailed(inner) => {
23862                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
23863                        inner,
23864                    )
23865                }
23866                Self::BN254PairingProdFailed(inner) => {
23867                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
23868                        inner,
23869                    )
23870                }
23871                Self::BlsKeyAlreadyUsed(inner) => {
23872                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
23873                        inner,
23874                    )
23875                }
23876                Self::CommissionAlreadyInitialized(inner) => {
23877                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encoded_size(
23878                        inner,
23879                    )
23880                }
23881                Self::CommissionIncreaseExceedsMax(inner) => {
23882                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encoded_size(
23883                        inner,
23884                    )
23885                }
23886                Self::CommissionUnchanged(inner) => {
23887                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encoded_size(
23888                        inner,
23889                    )
23890                }
23891                Self::CommissionUpdateTooSoon(inner) => {
23892                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encoded_size(
23893                        inner,
23894                    )
23895                }
23896                Self::DefaultAdminCannotBeRenounced(inner) => {
23897                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
23898                        inner,
23899                    )
23900                }
23901                Self::DefaultAdminCannotBeRevoked(inner) => {
23902                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encoded_size(
23903                        inner,
23904                    )
23905                }
23906                Self::DelegateAmountTooSmall(inner) => {
23907                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
23908                        inner,
23909                    )
23910                }
23911                Self::DeprecatedFunction(inner) => {
23912                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
23913                        inner,
23914                    )
23915                }
23916                Self::ERC1967InvalidImplementation(inner) => {
23917                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
23918                        inner,
23919                    )
23920                }
23921                Self::ERC1967NonPayable(inner) => {
23922                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
23923                        inner,
23924                    )
23925                }
23926                Self::EnforcedPause(inner) => {
23927                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
23928                }
23929                Self::ExitEscrowPeriodInvalid(inner) => {
23930                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
23931                        inner,
23932                    )
23933                }
23934                Self::ExpectedPause(inner) => {
23935                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
23936                }
23937                Self::FailedInnerCall(inner) => {
23938                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
23939                        inner,
23940                    )
23941                }
23942                Self::InitialActiveStakeExceedsBalance(inner) => {
23943                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encoded_size(
23944                        inner,
23945                    )
23946                }
23947                Self::InsufficientAllowance(inner) => {
23948                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
23949                        inner,
23950                    )
23951                }
23952                Self::InsufficientBalance(inner) => {
23953                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
23954                        inner,
23955                    )
23956                }
23957                Self::InvalidCommission(inner) => {
23958                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
23959                        inner,
23960                    )
23961                }
23962                Self::InvalidG1(inner) => {
23963                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
23964                }
23965                Self::InvalidInitialization(inner) => {
23966                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
23967                        inner,
23968                    )
23969                }
23970                Self::InvalidMetadataUriLength(inner) => {
23971                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encoded_size(
23972                        inner,
23973                    )
23974                }
23975                Self::InvalidRateLimitParameters(inner) => {
23976                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encoded_size(
23977                        inner,
23978                    )
23979                }
23980                Self::InvalidSchnorrSig(inner) => {
23981                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
23982                        inner,
23983                    )
23984                }
23985                Self::InvalidSchnorrVK(inner) => {
23986                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
23987                        inner,
23988                    )
23989                }
23990                Self::MinDelegateAmountTooSmall(inner) => {
23991                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
23992                        inner,
23993                    )
23994                }
23995                Self::NoUndelegationFound(inner) => {
23996                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encoded_size(
23997                        inner,
23998                    )
23999                }
24000                Self::NotInitializing(inner) => {
24001                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
24002                        inner,
24003                    )
24004                }
24005                Self::NothingToWithdraw(inner) => {
24006                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
24007                        inner,
24008                    )
24009                }
24010                Self::OwnableInvalidOwner(inner) => {
24011                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
24012                        inner,
24013                    )
24014                }
24015                Self::OwnableUnauthorizedAccount(inner) => {
24016                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
24017                        inner,
24018                    )
24019                }
24020                Self::OwnershipCannotBeRenounced(inner) => {
24021                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
24022                        inner,
24023                    )
24024                }
24025                Self::PowPrecompileFailed(inner) => {
24026                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
24027                        inner,
24028                    )
24029                }
24030                Self::PrematureWithdrawal(inner) => {
24031                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
24032                        inner,
24033                    )
24034                }
24035                Self::SchnorrKeyAlreadyUsed(inner) => {
24036                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
24037                        inner,
24038                    )
24039                }
24040                Self::UUPSUnauthorizedCallContext(inner) => {
24041                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
24042                        inner,
24043                    )
24044                }
24045                Self::UUPSUnsupportedProxiableUUID(inner) => {
24046                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
24047                        inner,
24048                    )
24049                }
24050                Self::UndelegationAlreadyExists(inner) => {
24051                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
24052                        inner,
24053                    )
24054                }
24055                Self::ValidatorAlreadyExited(inner) => {
24056                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
24057                        inner,
24058                    )
24059                }
24060                Self::ValidatorAlreadyRegistered(inner) => {
24061                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
24062                        inner,
24063                    )
24064                }
24065                Self::ValidatorInactive(inner) => {
24066                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
24067                        inner,
24068                    )
24069                }
24070                Self::ValidatorNotExited(inner) => {
24071                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
24072                        inner,
24073                    )
24074                }
24075                Self::ZeroAddress(inner) => {
24076                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
24077                }
24078                Self::ZeroAmount(inner) => {
24079                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
24080                }
24081            }
24082        }
24083        #[inline]
24084        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
24085            match self {
24086                Self::AccessControlBadConfirmation(inner) => {
24087                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
24088                        inner,
24089                        out,
24090                    )
24091                }
24092                Self::AccessControlUnauthorizedAccount(inner) => {
24093                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
24094                        inner,
24095                        out,
24096                    )
24097                }
24098                Self::AddressEmptyCode(inner) => {
24099                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
24100                        inner,
24101                        out,
24102                    )
24103                }
24104                Self::BLSSigVerificationFailed(inner) => {
24105                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
24106                        inner,
24107                        out,
24108                    )
24109                }
24110                Self::BN254PairingProdFailed(inner) => {
24111                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
24112                        inner,
24113                        out,
24114                    )
24115                }
24116                Self::BlsKeyAlreadyUsed(inner) => {
24117                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
24118                        inner,
24119                        out,
24120                    )
24121                }
24122                Self::CommissionAlreadyInitialized(inner) => {
24123                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encode_raw(
24124                        inner,
24125                        out,
24126                    )
24127                }
24128                Self::CommissionIncreaseExceedsMax(inner) => {
24129                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encode_raw(
24130                        inner,
24131                        out,
24132                    )
24133                }
24134                Self::CommissionUnchanged(inner) => {
24135                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encode_raw(
24136                        inner,
24137                        out,
24138                    )
24139                }
24140                Self::CommissionUpdateTooSoon(inner) => {
24141                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encode_raw(
24142                        inner,
24143                        out,
24144                    )
24145                }
24146                Self::DefaultAdminCannotBeRenounced(inner) => {
24147                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
24148                        inner,
24149                        out,
24150                    )
24151                }
24152                Self::DefaultAdminCannotBeRevoked(inner) => {
24153                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encode_raw(
24154                        inner,
24155                        out,
24156                    )
24157                }
24158                Self::DelegateAmountTooSmall(inner) => {
24159                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
24160                        inner,
24161                        out,
24162                    )
24163                }
24164                Self::DeprecatedFunction(inner) => {
24165                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
24166                        inner,
24167                        out,
24168                    )
24169                }
24170                Self::ERC1967InvalidImplementation(inner) => {
24171                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
24172                        inner,
24173                        out,
24174                    )
24175                }
24176                Self::ERC1967NonPayable(inner) => {
24177                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
24178                        inner,
24179                        out,
24180                    )
24181                }
24182                Self::EnforcedPause(inner) => {
24183                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
24184                        inner,
24185                        out,
24186                    )
24187                }
24188                Self::ExitEscrowPeriodInvalid(inner) => {
24189                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
24190                        inner,
24191                        out,
24192                    )
24193                }
24194                Self::ExpectedPause(inner) => {
24195                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
24196                        inner,
24197                        out,
24198                    )
24199                }
24200                Self::FailedInnerCall(inner) => {
24201                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
24202                        inner,
24203                        out,
24204                    )
24205                }
24206                Self::InitialActiveStakeExceedsBalance(inner) => {
24207                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encode_raw(
24208                        inner,
24209                        out,
24210                    )
24211                }
24212                Self::InsufficientAllowance(inner) => {
24213                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
24214                        inner,
24215                        out,
24216                    )
24217                }
24218                Self::InsufficientBalance(inner) => {
24219                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
24220                        inner,
24221                        out,
24222                    )
24223                }
24224                Self::InvalidCommission(inner) => {
24225                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
24226                        inner,
24227                        out,
24228                    )
24229                }
24230                Self::InvalidG1(inner) => {
24231                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
24232                }
24233                Self::InvalidInitialization(inner) => {
24234                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
24235                        inner,
24236                        out,
24237                    )
24238                }
24239                Self::InvalidMetadataUriLength(inner) => {
24240                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encode_raw(
24241                        inner,
24242                        out,
24243                    )
24244                }
24245                Self::InvalidRateLimitParameters(inner) => {
24246                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encode_raw(
24247                        inner,
24248                        out,
24249                    )
24250                }
24251                Self::InvalidSchnorrSig(inner) => {
24252                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
24253                        inner,
24254                        out,
24255                    )
24256                }
24257                Self::InvalidSchnorrVK(inner) => {
24258                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
24259                        inner,
24260                        out,
24261                    )
24262                }
24263                Self::MinDelegateAmountTooSmall(inner) => {
24264                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
24265                        inner,
24266                        out,
24267                    )
24268                }
24269                Self::NoUndelegationFound(inner) => {
24270                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encode_raw(
24271                        inner,
24272                        out,
24273                    )
24274                }
24275                Self::NotInitializing(inner) => {
24276                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
24277                        inner,
24278                        out,
24279                    )
24280                }
24281                Self::NothingToWithdraw(inner) => {
24282                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
24283                        inner,
24284                        out,
24285                    )
24286                }
24287                Self::OwnableInvalidOwner(inner) => {
24288                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
24289                        inner,
24290                        out,
24291                    )
24292                }
24293                Self::OwnableUnauthorizedAccount(inner) => {
24294                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
24295                        inner,
24296                        out,
24297                    )
24298                }
24299                Self::OwnershipCannotBeRenounced(inner) => {
24300                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
24301                        inner,
24302                        out,
24303                    )
24304                }
24305                Self::PowPrecompileFailed(inner) => {
24306                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
24307                        inner,
24308                        out,
24309                    )
24310                }
24311                Self::PrematureWithdrawal(inner) => {
24312                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
24313                        inner,
24314                        out,
24315                    )
24316                }
24317                Self::SchnorrKeyAlreadyUsed(inner) => {
24318                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
24319                        inner,
24320                        out,
24321                    )
24322                }
24323                Self::UUPSUnauthorizedCallContext(inner) => {
24324                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
24325                        inner,
24326                        out,
24327                    )
24328                }
24329                Self::UUPSUnsupportedProxiableUUID(inner) => {
24330                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
24331                        inner,
24332                        out,
24333                    )
24334                }
24335                Self::UndelegationAlreadyExists(inner) => {
24336                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
24337                        inner,
24338                        out,
24339                    )
24340                }
24341                Self::ValidatorAlreadyExited(inner) => {
24342                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
24343                        inner,
24344                        out,
24345                    )
24346                }
24347                Self::ValidatorAlreadyRegistered(inner) => {
24348                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
24349                        inner,
24350                        out,
24351                    )
24352                }
24353                Self::ValidatorInactive(inner) => {
24354                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
24355                        inner,
24356                        out,
24357                    )
24358                }
24359                Self::ValidatorNotExited(inner) => {
24360                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
24361                        inner,
24362                        out,
24363                    )
24364                }
24365                Self::ZeroAddress(inner) => {
24366                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
24367                        inner,
24368                        out,
24369                    )
24370                }
24371                Self::ZeroAmount(inner) => {
24372                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
24373                }
24374            }
24375        }
24376    }
24377    ///Container for all the [`StakeTableV2`](self) events.
24378    #[derive(Clone)]
24379    #[derive(serde::Serialize, serde::Deserialize)]
24380    #[derive()]
24381    pub enum StakeTableV2Events {
24382        #[allow(missing_docs)]
24383        CommissionUpdated(CommissionUpdated),
24384        #[allow(missing_docs)]
24385        ConsensusKeysUpdated(ConsensusKeysUpdated),
24386        #[allow(missing_docs)]
24387        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
24388        #[allow(missing_docs)]
24389        Delegated(Delegated),
24390        #[allow(missing_docs)]
24391        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
24392        #[allow(missing_docs)]
24393        Initialized(Initialized),
24394        #[allow(missing_docs)]
24395        MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated),
24396        #[allow(missing_docs)]
24397        MetadataUriUpdated(MetadataUriUpdated),
24398        #[allow(missing_docs)]
24399        MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated),
24400        #[allow(missing_docs)]
24401        MinDelegateAmountUpdated(MinDelegateAmountUpdated),
24402        #[allow(missing_docs)]
24403        OwnershipTransferred(OwnershipTransferred),
24404        #[allow(missing_docs)]
24405        Paused(Paused),
24406        #[allow(missing_docs)]
24407        RoleAdminChanged(RoleAdminChanged),
24408        #[allow(missing_docs)]
24409        RoleGranted(RoleGranted),
24410        #[allow(missing_docs)]
24411        RoleRevoked(RoleRevoked),
24412        #[allow(missing_docs)]
24413        Undelegated(Undelegated),
24414        #[allow(missing_docs)]
24415        UndelegatedV2(UndelegatedV2),
24416        #[allow(missing_docs)]
24417        Unpaused(Unpaused),
24418        #[allow(missing_docs)]
24419        Upgraded(Upgraded),
24420        #[allow(missing_docs)]
24421        ValidatorExit(ValidatorExit),
24422        #[allow(missing_docs)]
24423        ValidatorExitClaimed(ValidatorExitClaimed),
24424        #[allow(missing_docs)]
24425        ValidatorExitV2(ValidatorExitV2),
24426        #[allow(missing_docs)]
24427        ValidatorRegistered(ValidatorRegistered),
24428        #[allow(missing_docs)]
24429        ValidatorRegisteredV2(ValidatorRegisteredV2),
24430        #[allow(missing_docs)]
24431        Withdrawal(Withdrawal),
24432        #[allow(missing_docs)]
24433        WithdrawalClaimed(WithdrawalClaimed),
24434    }
24435    impl StakeTableV2Events {
24436        /// All the selectors of this enum.
24437        ///
24438        /// Note that the selectors might not be in the same order as the variants.
24439        /// No guarantees are made about the order of the selectors.
24440        ///
24441        /// Prefer using `SolInterface` methods instead.
24442        pub const SELECTORS: &'static [[u8; 32usize]] = &[
24443            [
24444                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
24445                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
24446                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
24447            ],
24448            [
24449                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
24450                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
24451                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
24452            ],
24453            [
24454                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
24455                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
24456                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
24457            ],
24458            [
24459                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
24460                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
24461                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
24462            ],
24463            [
24464                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
24465                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
24466                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
24467            ],
24468            [
24469                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
24470                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
24471                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
24472            ],
24473            [
24474                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
24475                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
24476                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
24477            ],
24478            [
24479                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
24480                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
24481                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
24482            ],
24483            [
24484                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
24485                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
24486                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
24487            ],
24488            [
24489                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
24490                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
24491                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
24492            ],
24493            [
24494                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
24495                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
24496                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
24497            ],
24498            [
24499                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
24500                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
24501                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
24502            ],
24503            [
24504                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
24505                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
24506                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
24507            ],
24508            [
24509                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
24510                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
24511                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
24512            ],
24513            [
24514                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
24515                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
24516                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
24517            ],
24518            [
24519                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
24520                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
24521                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
24522            ],
24523            [
24524                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
24525                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
24526                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
24527            ],
24528            [
24529                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
24530                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
24531                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
24532            ],
24533            [
24534                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
24535                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
24536                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
24537            ],
24538            [
24539                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
24540                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
24541                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
24542            ],
24543            [
24544                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
24545                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
24546                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
24547            ],
24548            [
24549                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
24550                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
24551                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
24552            ],
24553            [
24554                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
24555                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
24556                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
24557            ],
24558            [
24559                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
24560                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
24561                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
24562            ],
24563            [
24564                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
24565                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
24566                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
24567            ],
24568            [
24569                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
24570                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
24571                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
24572            ],
24573        ];
24574        /// The names of the variants in the same order as `SELECTORS`.
24575        pub const VARIANT_NAMES: &'static [&'static str] = &[
24576            ::core::stringify!(MinDelegateAmountUpdated),
24577            ::core::stringify!(MetadataUriUpdated),
24578            ::core::stringify!(ValidatorRegisteredV2),
24579            ::core::stringify!(RoleGranted),
24580            ::core::stringify!(Undelegated),
24581            ::core::stringify!(ValidatorExitV2),
24582            ::core::stringify!(MinCommissionUpdateIntervalUpdated),
24583            ::core::stringify!(Unpaused),
24584            ::core::stringify!(Paused),
24585            ::core::stringify!(UndelegatedV2),
24586            ::core::stringify!(ExitEscrowPeriodUpdated),
24587            ::core::stringify!(Withdrawal),
24588            ::core::stringify!(ConsensusKeysUpdated),
24589            ::core::stringify!(ValidatorExitClaimed),
24590            ::core::stringify!(OwnershipTransferred),
24591            ::core::stringify!(WithdrawalClaimed),
24592            ::core::stringify!(Upgraded),
24593            ::core::stringify!(RoleAdminChanged),
24594            ::core::stringify!(CommissionUpdated),
24595            ::core::stringify!(MaxCommissionIncreaseUpdated),
24596            ::core::stringify!(Initialized),
24597            ::core::stringify!(ConsensusKeysUpdatedV2),
24598            ::core::stringify!(Delegated),
24599            ::core::stringify!(RoleRevoked),
24600            ::core::stringify!(ValidatorRegistered),
24601            ::core::stringify!(ValidatorExit),
24602        ];
24603        /// The signatures in the same order as `SELECTORS`.
24604        pub const SIGNATURES: &'static [&'static str] = &[
24605            <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24606            <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24607            <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE,
24608            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
24609            <Undelegated as alloy_sol_types::SolEvent>::SIGNATURE,
24610            <ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE,
24611            <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24612            <Unpaused as alloy_sol_types::SolEvent>::SIGNATURE,
24613            <Paused as alloy_sol_types::SolEvent>::SIGNATURE,
24614            <UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
24615            <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24616            <Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE,
24617            <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24618            <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
24619            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
24620            <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
24621            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
24622            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
24623            <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24624            <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24625            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
24626            <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
24627            <Delegated as alloy_sol_types::SolEvent>::SIGNATURE,
24628            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
24629            <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE,
24630            <ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE,
24631        ];
24632        /// Returns the signature for the given selector, if known.
24633        #[inline]
24634        pub fn signature_by_selector(
24635            selector: [u8; 32usize],
24636        ) -> ::core::option::Option<&'static str> {
24637            match Self::SELECTORS.binary_search(&selector) {
24638                ::core::result::Result::Ok(idx) => {
24639                    ::core::option::Option::Some(Self::SIGNATURES[idx])
24640                }
24641                ::core::result::Result::Err(_) => ::core::option::Option::None,
24642            }
24643        }
24644        /// Returns the enum variant name for the given selector, if known.
24645        #[inline]
24646        pub fn name_by_selector(
24647            selector: [u8; 32usize],
24648        ) -> ::core::option::Option<&'static str> {
24649            let sig = Self::signature_by_selector(selector)?;
24650            sig.split_once('(').map(|(name, _)| name)
24651        }
24652    }
24653    #[automatically_derived]
24654    impl alloy_sol_types::SolEventInterface for StakeTableV2Events {
24655        const NAME: &'static str = "StakeTableV2Events";
24656        const COUNT: usize = 26usize;
24657        fn decode_raw_log(
24658            topics: &[alloy_sol_types::Word],
24659            data: &[u8],
24660        ) -> alloy_sol_types::Result<Self> {
24661            match topics.first().copied() {
24662                Some(
24663                    <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24664                ) => {
24665                    <CommissionUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24666                            topics,
24667                            data,
24668                        )
24669                        .map(Self::CommissionUpdated)
24670                }
24671                Some(
24672                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24673                ) => {
24674                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24675                            topics,
24676                            data,
24677                        )
24678                        .map(Self::ConsensusKeysUpdated)
24679                }
24680                Some(
24681                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24682                ) => {
24683                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24684                            topics,
24685                            data,
24686                        )
24687                        .map(Self::ConsensusKeysUpdatedV2)
24688                }
24689                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24690                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
24691                            topics,
24692                            data,
24693                        )
24694                        .map(Self::Delegated)
24695                }
24696                Some(
24697                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24698                ) => {
24699                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24700                            topics,
24701                            data,
24702                        )
24703                        .map(Self::ExitEscrowPeriodUpdated)
24704                }
24705                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24706                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
24707                            topics,
24708                            data,
24709                        )
24710                        .map(Self::Initialized)
24711                }
24712                Some(
24713                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24714                ) => {
24715                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24716                            topics,
24717                            data,
24718                        )
24719                        .map(Self::MaxCommissionIncreaseUpdated)
24720                }
24721                Some(
24722                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24723                ) => {
24724                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24725                            topics,
24726                            data,
24727                        )
24728                        .map(Self::MetadataUriUpdated)
24729                }
24730                Some(
24731                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24732                ) => {
24733                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24734                            topics,
24735                            data,
24736                        )
24737                        .map(Self::MinCommissionUpdateIntervalUpdated)
24738                }
24739                Some(
24740                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24741                ) => {
24742                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24743                            topics,
24744                            data,
24745                        )
24746                        .map(Self::MinDelegateAmountUpdated)
24747                }
24748                Some(
24749                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24750                ) => {
24751                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
24752                            topics,
24753                            data,
24754                        )
24755                        .map(Self::OwnershipTransferred)
24756                }
24757                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24758                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
24759                        .map(Self::Paused)
24760                }
24761                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24762                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
24763                            topics,
24764                            data,
24765                        )
24766                        .map(Self::RoleAdminChanged)
24767                }
24768                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24769                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
24770                            topics,
24771                            data,
24772                        )
24773                        .map(Self::RoleGranted)
24774                }
24775                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24776                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
24777                            topics,
24778                            data,
24779                        )
24780                        .map(Self::RoleRevoked)
24781                }
24782                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24783                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
24784                            topics,
24785                            data,
24786                        )
24787                        .map(Self::Undelegated)
24788                }
24789                Some(<UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24790                    <UndelegatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24791                            topics,
24792                            data,
24793                        )
24794                        .map(Self::UndelegatedV2)
24795                }
24796                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24797                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
24798                        .map(Self::Unpaused)
24799                }
24800                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24801                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
24802                        .map(Self::Upgraded)
24803                }
24804                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24805                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
24806                            topics,
24807                            data,
24808                        )
24809                        .map(Self::ValidatorExit)
24810                }
24811                Some(
24812                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24813                ) => {
24814                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
24815                            topics,
24816                            data,
24817                        )
24818                        .map(Self::ValidatorExitClaimed)
24819                }
24820                Some(<ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24821                    <ValidatorExitV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24822                            topics,
24823                            data,
24824                        )
24825                        .map(Self::ValidatorExitV2)
24826                }
24827                Some(
24828                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24829                ) => {
24830                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
24831                            topics,
24832                            data,
24833                        )
24834                        .map(Self::ValidatorRegistered)
24835                }
24836                Some(
24837                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24838                ) => {
24839                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24840                            topics,
24841                            data,
24842                        )
24843                        .map(Self::ValidatorRegisteredV2)
24844                }
24845                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24846                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
24847                            topics,
24848                            data,
24849                        )
24850                        .map(Self::Withdrawal)
24851                }
24852                Some(
24853                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24854                ) => {
24855                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
24856                            topics,
24857                            data,
24858                        )
24859                        .map(Self::WithdrawalClaimed)
24860                }
24861                _ => {
24862                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
24863                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
24864                        log: alloy_sol_types::private::Box::new(
24865                            alloy_sol_types::private::LogData::new_unchecked(
24866                                topics.to_vec(),
24867                                data.to_vec().into(),
24868                            ),
24869                        ),
24870                    })
24871                }
24872            }
24873        }
24874    }
24875    #[automatically_derived]
24876    impl alloy_sol_types::private::IntoLogData for StakeTableV2Events {
24877        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
24878            match self {
24879                Self::CommissionUpdated(inner) => {
24880                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24881                }
24882                Self::ConsensusKeysUpdated(inner) => {
24883                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24884                }
24885                Self::ConsensusKeysUpdatedV2(inner) => {
24886                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24887                }
24888                Self::Delegated(inner) => {
24889                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24890                }
24891                Self::ExitEscrowPeriodUpdated(inner) => {
24892                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24893                }
24894                Self::Initialized(inner) => {
24895                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24896                }
24897                Self::MaxCommissionIncreaseUpdated(inner) => {
24898                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24899                }
24900                Self::MetadataUriUpdated(inner) => {
24901                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24902                }
24903                Self::MinCommissionUpdateIntervalUpdated(inner) => {
24904                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24905                }
24906                Self::MinDelegateAmountUpdated(inner) => {
24907                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24908                }
24909                Self::OwnershipTransferred(inner) => {
24910                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24911                }
24912                Self::Paused(inner) => {
24913                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24914                }
24915                Self::RoleAdminChanged(inner) => {
24916                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24917                }
24918                Self::RoleGranted(inner) => {
24919                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24920                }
24921                Self::RoleRevoked(inner) => {
24922                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24923                }
24924                Self::Undelegated(inner) => {
24925                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24926                }
24927                Self::UndelegatedV2(inner) => {
24928                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24929                }
24930                Self::Unpaused(inner) => {
24931                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24932                }
24933                Self::Upgraded(inner) => {
24934                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24935                }
24936                Self::ValidatorExit(inner) => {
24937                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24938                }
24939                Self::ValidatorExitClaimed(inner) => {
24940                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24941                }
24942                Self::ValidatorExitV2(inner) => {
24943                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24944                }
24945                Self::ValidatorRegistered(inner) => {
24946                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24947                }
24948                Self::ValidatorRegisteredV2(inner) => {
24949                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24950                }
24951                Self::Withdrawal(inner) => {
24952                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24953                }
24954                Self::WithdrawalClaimed(inner) => {
24955                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24956                }
24957            }
24958        }
24959        fn into_log_data(self) -> alloy_sol_types::private::LogData {
24960            match self {
24961                Self::CommissionUpdated(inner) => {
24962                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24963                }
24964                Self::ConsensusKeysUpdated(inner) => {
24965                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24966                }
24967                Self::ConsensusKeysUpdatedV2(inner) => {
24968                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24969                }
24970                Self::Delegated(inner) => {
24971                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24972                }
24973                Self::ExitEscrowPeriodUpdated(inner) => {
24974                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24975                }
24976                Self::Initialized(inner) => {
24977                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24978                }
24979                Self::MaxCommissionIncreaseUpdated(inner) => {
24980                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24981                }
24982                Self::MetadataUriUpdated(inner) => {
24983                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24984                }
24985                Self::MinCommissionUpdateIntervalUpdated(inner) => {
24986                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24987                }
24988                Self::MinDelegateAmountUpdated(inner) => {
24989                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24990                }
24991                Self::OwnershipTransferred(inner) => {
24992                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24993                }
24994                Self::Paused(inner) => {
24995                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24996                }
24997                Self::RoleAdminChanged(inner) => {
24998                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24999                }
25000                Self::RoleGranted(inner) => {
25001                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25002                }
25003                Self::RoleRevoked(inner) => {
25004                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25005                }
25006                Self::Undelegated(inner) => {
25007                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25008                }
25009                Self::UndelegatedV2(inner) => {
25010                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25011                }
25012                Self::Unpaused(inner) => {
25013                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25014                }
25015                Self::Upgraded(inner) => {
25016                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25017                }
25018                Self::ValidatorExit(inner) => {
25019                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25020                }
25021                Self::ValidatorExitClaimed(inner) => {
25022                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25023                }
25024                Self::ValidatorExitV2(inner) => {
25025                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25026                }
25027                Self::ValidatorRegistered(inner) => {
25028                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25029                }
25030                Self::ValidatorRegisteredV2(inner) => {
25031                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25032                }
25033                Self::Withdrawal(inner) => {
25034                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25035                }
25036                Self::WithdrawalClaimed(inner) => {
25037                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25038                }
25039            }
25040        }
25041    }
25042    use alloy::contract as alloy_contract;
25043    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
25044
25045See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
25046    #[inline]
25047    pub const fn new<
25048        P: alloy_contract::private::Provider<N>,
25049        N: alloy_contract::private::Network,
25050    >(
25051        address: alloy_sol_types::private::Address,
25052        __provider: P,
25053    ) -> StakeTableV2Instance<P, N> {
25054        StakeTableV2Instance::<P, N>::new(address, __provider)
25055    }
25056    /**Deploys this contract using the given `provider` and constructor arguments, if any.
25057
25058Returns a new instance of the contract, if the deployment was successful.
25059
25060For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
25061    #[inline]
25062    pub fn deploy<
25063        P: alloy_contract::private::Provider<N>,
25064        N: alloy_contract::private::Network,
25065    >(
25066        __provider: P,
25067    ) -> impl ::core::future::Future<
25068        Output = alloy_contract::Result<StakeTableV2Instance<P, N>>,
25069    > {
25070        StakeTableV2Instance::<P, N>::deploy(__provider)
25071    }
25072    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
25073and constructor arguments, if any.
25074
25075This is a simple wrapper around creating a `RawCallBuilder` with the data set to
25076the bytecode concatenated with the constructor's ABI-encoded arguments.*/
25077    #[inline]
25078    pub fn deploy_builder<
25079        P: alloy_contract::private::Provider<N>,
25080        N: alloy_contract::private::Network,
25081    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
25082        StakeTableV2Instance::<P, N>::deploy_builder(__provider)
25083    }
25084    /**A [`StakeTableV2`](self) instance.
25085
25086Contains type-safe methods for interacting with an on-chain instance of the
25087[`StakeTableV2`](self) contract located at a given `address`, using a given
25088provider `P`.
25089
25090If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
25091documentation on how to provide it), the `deploy` and `deploy_builder` methods can
25092be used to deploy a new instance of the contract.
25093
25094See the [module-level documentation](self) for all the available methods.*/
25095    #[derive(Clone)]
25096    pub struct StakeTableV2Instance<P, N = alloy_contract::private::Ethereum> {
25097        address: alloy_sol_types::private::Address,
25098        provider: P,
25099        _network: ::core::marker::PhantomData<N>,
25100    }
25101    #[automatically_derived]
25102    impl<P, N> ::core::fmt::Debug for StakeTableV2Instance<P, N> {
25103        #[inline]
25104        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
25105            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
25106        }
25107    }
25108    /// Instantiation and getters/setters.
25109    impl<
25110        P: alloy_contract::private::Provider<N>,
25111        N: alloy_contract::private::Network,
25112    > StakeTableV2Instance<P, N> {
25113        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
25114
25115See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
25116        #[inline]
25117        pub const fn new(
25118            address: alloy_sol_types::private::Address,
25119            __provider: P,
25120        ) -> Self {
25121            Self {
25122                address,
25123                provider: __provider,
25124                _network: ::core::marker::PhantomData,
25125            }
25126        }
25127        /**Deploys this contract using the given `provider` and constructor arguments, if any.
25128
25129Returns a new instance of the contract, if the deployment was successful.
25130
25131For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
25132        #[inline]
25133        pub async fn deploy(
25134            __provider: P,
25135        ) -> alloy_contract::Result<StakeTableV2Instance<P, N>> {
25136            let call_builder = Self::deploy_builder(__provider);
25137            let contract_address = call_builder.deploy().await?;
25138            Ok(Self::new(contract_address, call_builder.provider))
25139        }
25140        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
25141and constructor arguments, if any.
25142
25143This is a simple wrapper around creating a `RawCallBuilder` with the data set to
25144the bytecode concatenated with the constructor's ABI-encoded arguments.*/
25145        #[inline]
25146        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
25147            alloy_contract::RawCallBuilder::new_raw_deploy(
25148                __provider,
25149                ::core::clone::Clone::clone(&BYTECODE),
25150            )
25151        }
25152        /// Returns a reference to the address.
25153        #[inline]
25154        pub const fn address(&self) -> &alloy_sol_types::private::Address {
25155            &self.address
25156        }
25157        /// Sets the address.
25158        #[inline]
25159        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
25160            self.address = address;
25161        }
25162        /// Sets the address and returns `self`.
25163        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
25164            self.set_address(address);
25165            self
25166        }
25167        /// Returns a reference to the provider.
25168        #[inline]
25169        pub const fn provider(&self) -> &P {
25170            &self.provider
25171        }
25172    }
25173    impl<P: ::core::clone::Clone, N> StakeTableV2Instance<&P, N> {
25174        /// Clones the provider and returns a new instance with the cloned provider.
25175        #[inline]
25176        pub fn with_cloned_provider(self) -> StakeTableV2Instance<P, N> {
25177            StakeTableV2Instance {
25178                address: self.address,
25179                provider: ::core::clone::Clone::clone(&self.provider),
25180                _network: ::core::marker::PhantomData,
25181            }
25182        }
25183    }
25184    /// Function calls.
25185    impl<
25186        P: alloy_contract::private::Provider<N>,
25187        N: alloy_contract::private::Network,
25188    > StakeTableV2Instance<P, N> {
25189        /// Creates a new call builder using this contract instance's provider and address.
25190        ///
25191        /// Note that the call can be any function call, not just those defined in this
25192        /// contract. Prefer using the other methods for building type-safe contract calls.
25193        pub fn call_builder<C: alloy_sol_types::SolCall>(
25194            &self,
25195            call: &C,
25196        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
25197            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
25198        }
25199        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
25200        pub fn DEFAULT_ADMIN_ROLE(
25201            &self,
25202        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
25203            self.call_builder(&DEFAULT_ADMIN_ROLECall)
25204        }
25205        ///Creates a new call builder for the [`MAX_COMMISSION_BPS`] function.
25206        pub fn MAX_COMMISSION_BPS(
25207            &self,
25208        ) -> alloy_contract::SolCallBuilder<&P, MAX_COMMISSION_BPSCall, N> {
25209            self.call_builder(&MAX_COMMISSION_BPSCall)
25210        }
25211        ///Creates a new call builder for the [`MAX_EXIT_ESCROW_PERIOD`] function.
25212        pub fn MAX_EXIT_ESCROW_PERIOD(
25213            &self,
25214        ) -> alloy_contract::SolCallBuilder<&P, MAX_EXIT_ESCROW_PERIODCall, N> {
25215            self.call_builder(&MAX_EXIT_ESCROW_PERIODCall)
25216        }
25217        ///Creates a new call builder for the [`MAX_METADATA_URI_LENGTH`] function.
25218        pub fn MAX_METADATA_URI_LENGTH(
25219            &self,
25220        ) -> alloy_contract::SolCallBuilder<&P, MAX_METADATA_URI_LENGTHCall, N> {
25221            self.call_builder(&MAX_METADATA_URI_LENGTHCall)
25222        }
25223        ///Creates a new call builder for the [`MIN_EXIT_ESCROW_PERIOD`] function.
25224        pub fn MIN_EXIT_ESCROW_PERIOD(
25225            &self,
25226        ) -> alloy_contract::SolCallBuilder<&P, MIN_EXIT_ESCROW_PERIODCall, N> {
25227            self.call_builder(&MIN_EXIT_ESCROW_PERIODCall)
25228        }
25229        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
25230        pub fn PAUSER_ROLE(
25231            &self,
25232        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
25233            self.call_builder(&PAUSER_ROLECall)
25234        }
25235        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
25236        pub fn UPGRADE_INTERFACE_VERSION(
25237            &self,
25238        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
25239            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
25240        }
25241        ///Creates a new call builder for the [`_hashBlsKey`] function.
25242        pub fn _hashBlsKey(
25243            &self,
25244            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25245        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
25246            self.call_builder(&_hashBlsKeyCall { blsVK })
25247        }
25248        ///Creates a new call builder for the [`activeStake`] function.
25249        pub fn activeStake(
25250            &self,
25251        ) -> alloy_contract::SolCallBuilder<&P, activeStakeCall, N> {
25252            self.call_builder(&activeStakeCall)
25253        }
25254        ///Creates a new call builder for the [`blsKeys`] function.
25255        pub fn blsKeys(
25256            &self,
25257            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
25258        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
25259            self.call_builder(&blsKeysCall { blsKeyHash })
25260        }
25261        ///Creates a new call builder for the [`claimValidatorExit`] function.
25262        pub fn claimValidatorExit(
25263            &self,
25264            validator: alloy::sol_types::private::Address,
25265        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
25266            self.call_builder(
25267                &claimValidatorExitCall {
25268                    validator,
25269                },
25270            )
25271        }
25272        ///Creates a new call builder for the [`claimWithdrawal`] function.
25273        pub fn claimWithdrawal(
25274            &self,
25275            validator: alloy::sol_types::private::Address,
25276        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
25277            self.call_builder(&claimWithdrawalCall { validator })
25278        }
25279        ///Creates a new call builder for the [`commissionTracking`] function.
25280        pub fn commissionTracking(
25281            &self,
25282            validator: alloy::sol_types::private::Address,
25283        ) -> alloy_contract::SolCallBuilder<&P, commissionTrackingCall, N> {
25284            self.call_builder(
25285                &commissionTrackingCall {
25286                    validator,
25287                },
25288            )
25289        }
25290        ///Creates a new call builder for the [`delegate`] function.
25291        pub fn delegate(
25292            &self,
25293            validator: alloy::sol_types::private::Address,
25294            amount: alloy::sol_types::private::primitives::aliases::U256,
25295        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
25296            self.call_builder(&delegateCall { validator, amount })
25297        }
25298        ///Creates a new call builder for the [`delegations`] function.
25299        pub fn delegations(
25300            &self,
25301            validator: alloy::sol_types::private::Address,
25302            delegator: alloy::sol_types::private::Address,
25303        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
25304            self.call_builder(
25305                &delegationsCall {
25306                    validator,
25307                    delegator,
25308                },
25309            )
25310        }
25311        ///Creates a new call builder for the [`deregisterValidator`] function.
25312        pub fn deregisterValidator(
25313            &self,
25314        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
25315            self.call_builder(&deregisterValidatorCall)
25316        }
25317        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
25318        pub fn exitEscrowPeriod(
25319            &self,
25320        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
25321            self.call_builder(&exitEscrowPeriodCall)
25322        }
25323        ///Creates a new call builder for the [`getRoleAdmin`] function.
25324        pub fn getRoleAdmin(
25325            &self,
25326            role: alloy::sol_types::private::FixedBytes<32>,
25327        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
25328            self.call_builder(&getRoleAdminCall { role })
25329        }
25330        ///Creates a new call builder for the [`getUndelegation`] function.
25331        pub fn getUndelegation(
25332            &self,
25333            validator: alloy::sol_types::private::Address,
25334            delegator: alloy::sol_types::private::Address,
25335        ) -> alloy_contract::SolCallBuilder<&P, getUndelegationCall, N> {
25336            self.call_builder(
25337                &getUndelegationCall {
25338                    validator,
25339                    delegator,
25340                },
25341            )
25342        }
25343        ///Creates a new call builder for the [`getVersion`] function.
25344        pub fn getVersion(
25345            &self,
25346        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
25347            self.call_builder(&getVersionCall)
25348        }
25349        ///Creates a new call builder for the [`grantRole`] function.
25350        pub fn grantRole(
25351            &self,
25352            role: alloy::sol_types::private::FixedBytes<32>,
25353            account: alloy::sol_types::private::Address,
25354        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
25355            self.call_builder(&grantRoleCall { role, account })
25356        }
25357        ///Creates a new call builder for the [`hasRole`] function.
25358        pub fn hasRole(
25359            &self,
25360            role: alloy::sol_types::private::FixedBytes<32>,
25361            account: alloy::sol_types::private::Address,
25362        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
25363            self.call_builder(&hasRoleCall { role, account })
25364        }
25365        ///Creates a new call builder for the [`initialize`] function.
25366        pub fn initialize(
25367            &self,
25368            _tokenAddress: alloy::sol_types::private::Address,
25369            _lightClientAddress: alloy::sol_types::private::Address,
25370            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
25371            _timelock: alloy::sol_types::private::Address,
25372        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
25373            self.call_builder(
25374                &initializeCall {
25375                    _tokenAddress,
25376                    _lightClientAddress,
25377                    _exitEscrowPeriod,
25378                    _timelock,
25379                },
25380            )
25381        }
25382        ///Creates a new call builder for the [`initializeV2`] function.
25383        pub fn initializeV2(
25384            &self,
25385            pauser: alloy::sol_types::private::Address,
25386            admin: alloy::sol_types::private::Address,
25387            initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
25388            initialCommissions: alloy::sol_types::private::Vec<
25389                <InitialCommission as alloy::sol_types::SolType>::RustType,
25390            >,
25391        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
25392            self.call_builder(
25393                &initializeV2Call {
25394                    pauser,
25395                    admin,
25396                    initialActiveStake,
25397                    initialCommissions,
25398                },
25399            )
25400        }
25401        ///Creates a new call builder for the [`initializedAtBlock`] function.
25402        pub fn initializedAtBlock(
25403            &self,
25404        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
25405            self.call_builder(&initializedAtBlockCall)
25406        }
25407        ///Creates a new call builder for the [`lightClient`] function.
25408        pub fn lightClient(
25409            &self,
25410        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
25411            self.call_builder(&lightClientCall)
25412        }
25413        ///Creates a new call builder for the [`maxCommissionIncrease`] function.
25414        pub fn maxCommissionIncrease(
25415            &self,
25416        ) -> alloy_contract::SolCallBuilder<&P, maxCommissionIncreaseCall, N> {
25417            self.call_builder(&maxCommissionIncreaseCall)
25418        }
25419        ///Creates a new call builder for the [`minCommissionIncreaseInterval`] function.
25420        pub fn minCommissionIncreaseInterval(
25421            &self,
25422        ) -> alloy_contract::SolCallBuilder<&P, minCommissionIncreaseIntervalCall, N> {
25423            self.call_builder(&minCommissionIncreaseIntervalCall)
25424        }
25425        ///Creates a new call builder for the [`minDelegateAmount`] function.
25426        pub fn minDelegateAmount(
25427            &self,
25428        ) -> alloy_contract::SolCallBuilder<&P, minDelegateAmountCall, N> {
25429            self.call_builder(&minDelegateAmountCall)
25430        }
25431        ///Creates a new call builder for the [`owner`] function.
25432        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
25433            self.call_builder(&ownerCall)
25434        }
25435        ///Creates a new call builder for the [`pause`] function.
25436        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
25437            self.call_builder(&pauseCall)
25438        }
25439        ///Creates a new call builder for the [`paused`] function.
25440        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
25441            self.call_builder(&pausedCall)
25442        }
25443        ///Creates a new call builder for the [`proxiableUUID`] function.
25444        pub fn proxiableUUID(
25445            &self,
25446        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
25447            self.call_builder(&proxiableUUIDCall)
25448        }
25449        ///Creates a new call builder for the [`registerValidator`] function.
25450        pub fn registerValidator(
25451            &self,
25452            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25453            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25454            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25455            _3: u16,
25456        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
25457            self.call_builder(
25458                &registerValidatorCall {
25459                    _0,
25460                    _1,
25461                    _2,
25462                    _3,
25463                },
25464            )
25465        }
25466        ///Creates a new call builder for the [`registerValidatorV2`] function.
25467        pub fn registerValidatorV2(
25468            &self,
25469            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25470            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25471            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25472            schnorrSig: alloy::sol_types::private::Bytes,
25473            commission: u16,
25474            metadataUri: alloy::sol_types::private::String,
25475        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV2Call, N> {
25476            self.call_builder(
25477                &registerValidatorV2Call {
25478                    blsVK,
25479                    schnorrVK,
25480                    blsSig,
25481                    schnorrSig,
25482                    commission,
25483                    metadataUri,
25484                },
25485            )
25486        }
25487        ///Creates a new call builder for the [`renounceOwnership`] function.
25488        pub fn renounceOwnership(
25489            &self,
25490        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
25491            self.call_builder(&renounceOwnershipCall)
25492        }
25493        ///Creates a new call builder for the [`renounceRole`] function.
25494        pub fn renounceRole(
25495            &self,
25496            role: alloy::sol_types::private::FixedBytes<32>,
25497            callerConfirmation: alloy::sol_types::private::Address,
25498        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
25499            self.call_builder(
25500                &renounceRoleCall {
25501                    role,
25502                    callerConfirmation,
25503                },
25504            )
25505        }
25506        ///Creates a new call builder for the [`revokeRole`] function.
25507        pub fn revokeRole(
25508            &self,
25509            role: alloy::sol_types::private::FixedBytes<32>,
25510            account: alloy::sol_types::private::Address,
25511        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
25512            self.call_builder(&revokeRoleCall { role, account })
25513        }
25514        ///Creates a new call builder for the [`schnorrKeys`] function.
25515        pub fn schnorrKeys(
25516            &self,
25517            schnorrKey: alloy::sol_types::private::FixedBytes<32>,
25518        ) -> alloy_contract::SolCallBuilder<&P, schnorrKeysCall, N> {
25519            self.call_builder(&schnorrKeysCall { schnorrKey })
25520        }
25521        ///Creates a new call builder for the [`setMaxCommissionIncrease`] function.
25522        pub fn setMaxCommissionIncrease(
25523            &self,
25524            newMaxIncrease: u16,
25525        ) -> alloy_contract::SolCallBuilder<&P, setMaxCommissionIncreaseCall, N> {
25526            self.call_builder(
25527                &setMaxCommissionIncreaseCall {
25528                    newMaxIncrease,
25529                },
25530            )
25531        }
25532        ///Creates a new call builder for the [`setMinCommissionUpdateInterval`] function.
25533        pub fn setMinCommissionUpdateInterval(
25534            &self,
25535            newInterval: alloy::sol_types::private::primitives::aliases::U256,
25536        ) -> alloy_contract::SolCallBuilder<&P, setMinCommissionUpdateIntervalCall, N> {
25537            self.call_builder(
25538                &setMinCommissionUpdateIntervalCall {
25539                    newInterval,
25540                },
25541            )
25542        }
25543        ///Creates a new call builder for the [`setMinDelegateAmount`] function.
25544        pub fn setMinDelegateAmount(
25545            &self,
25546            newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
25547        ) -> alloy_contract::SolCallBuilder<&P, setMinDelegateAmountCall, N> {
25548            self.call_builder(
25549                &setMinDelegateAmountCall {
25550                    newMinDelegateAmount,
25551                },
25552            )
25553        }
25554        ///Creates a new call builder for the [`supportsInterface`] function.
25555        pub fn supportsInterface(
25556            &self,
25557            interfaceId: alloy::sol_types::private::FixedBytes<4>,
25558        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
25559            self.call_builder(
25560                &supportsInterfaceCall {
25561                    interfaceId,
25562                },
25563            )
25564        }
25565        ///Creates a new call builder for the [`token`] function.
25566        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
25567            self.call_builder(&tokenCall)
25568        }
25569        ///Creates a new call builder for the [`transferOwnership`] function.
25570        pub fn transferOwnership(
25571            &self,
25572            newOwner: alloy::sol_types::private::Address,
25573        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
25574            self.call_builder(&transferOwnershipCall { newOwner })
25575        }
25576        ///Creates a new call builder for the [`undelegate`] function.
25577        pub fn undelegate(
25578            &self,
25579            validator: alloy::sol_types::private::Address,
25580            amount: alloy::sol_types::private::primitives::aliases::U256,
25581        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
25582            self.call_builder(
25583                &undelegateCall {
25584                    validator,
25585                    amount,
25586                },
25587            )
25588        }
25589        ///Creates a new call builder for the [`undelegations`] function.
25590        pub fn undelegations(
25591            &self,
25592            validator: alloy::sol_types::private::Address,
25593            delegator: alloy::sol_types::private::Address,
25594        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
25595            self.call_builder(
25596                &undelegationsCall {
25597                    validator,
25598                    delegator,
25599                },
25600            )
25601        }
25602        ///Creates a new call builder for the [`unpause`] function.
25603        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
25604            self.call_builder(&unpauseCall)
25605        }
25606        ///Creates a new call builder for the [`updateCommission`] function.
25607        pub fn updateCommission(
25608            &self,
25609            newCommission: u16,
25610        ) -> alloy_contract::SolCallBuilder<&P, updateCommissionCall, N> {
25611            self.call_builder(
25612                &updateCommissionCall {
25613                    newCommission,
25614                },
25615            )
25616        }
25617        ///Creates a new call builder for the [`updateConsensusKeys`] function.
25618        pub fn updateConsensusKeys(
25619            &self,
25620            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25621            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25622            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25623        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
25624            self.call_builder(
25625                &updateConsensusKeysCall {
25626                    _0,
25627                    _1,
25628                    _2,
25629                },
25630            )
25631        }
25632        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
25633        pub fn updateConsensusKeysV2(
25634            &self,
25635            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25636            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25637            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25638            schnorrSig: alloy::sol_types::private::Bytes,
25639        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysV2Call, N> {
25640            self.call_builder(
25641                &updateConsensusKeysV2Call {
25642                    blsVK,
25643                    schnorrVK,
25644                    blsSig,
25645                    schnorrSig,
25646                },
25647            )
25648        }
25649        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
25650        pub fn updateExitEscrowPeriod(
25651            &self,
25652            newExitEscrowPeriod: u64,
25653        ) -> alloy_contract::SolCallBuilder<&P, updateExitEscrowPeriodCall, N> {
25654            self.call_builder(
25655                &updateExitEscrowPeriodCall {
25656                    newExitEscrowPeriod,
25657                },
25658            )
25659        }
25660        ///Creates a new call builder for the [`updateMetadataUri`] function.
25661        pub fn updateMetadataUri(
25662            &self,
25663            metadataUri: alloy::sol_types::private::String,
25664        ) -> alloy_contract::SolCallBuilder<&P, updateMetadataUriCall, N> {
25665            self.call_builder(
25666                &updateMetadataUriCall {
25667                    metadataUri,
25668                },
25669            )
25670        }
25671        ///Creates a new call builder for the [`upgradeToAndCall`] function.
25672        pub fn upgradeToAndCall(
25673            &self,
25674            newImplementation: alloy::sol_types::private::Address,
25675            data: alloy::sol_types::private::Bytes,
25676        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
25677            self.call_builder(
25678                &upgradeToAndCallCall {
25679                    newImplementation,
25680                    data,
25681                },
25682            )
25683        }
25684        ///Creates a new call builder for the [`validateMetadataUri`] function.
25685        pub fn validateMetadataUri(
25686            &self,
25687            metadataUri: alloy::sol_types::private::String,
25688        ) -> alloy_contract::SolCallBuilder<&P, validateMetadataUriCall, N> {
25689            self.call_builder(
25690                &validateMetadataUriCall {
25691                    metadataUri,
25692                },
25693            )
25694        }
25695        ///Creates a new call builder for the [`validatorExits`] function.
25696        pub fn validatorExits(
25697            &self,
25698            validator: alloy::sol_types::private::Address,
25699        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
25700            self.call_builder(&validatorExitsCall { validator })
25701        }
25702        ///Creates a new call builder for the [`validators`] function.
25703        pub fn validators(
25704            &self,
25705            account: alloy::sol_types::private::Address,
25706        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
25707            self.call_builder(&validatorsCall { account })
25708        }
25709    }
25710    /// Event filters.
25711    impl<
25712        P: alloy_contract::private::Provider<N>,
25713        N: alloy_contract::private::Network,
25714    > StakeTableV2Instance<P, N> {
25715        /// Creates a new event filter using this contract instance's provider and address.
25716        ///
25717        /// Note that the type can be any event, not just those defined in this contract.
25718        /// Prefer using the other methods for building type-safe event filters.
25719        pub fn event_filter<E: alloy_sol_types::SolEvent>(
25720            &self,
25721        ) -> alloy_contract::Event<&P, E, N> {
25722            alloy_contract::Event::new_sol(&self.provider, &self.address)
25723        }
25724        ///Creates a new event filter for the [`CommissionUpdated`] event.
25725        pub fn CommissionUpdated_filter(
25726            &self,
25727        ) -> alloy_contract::Event<&P, CommissionUpdated, N> {
25728            self.event_filter::<CommissionUpdated>()
25729        }
25730        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
25731        pub fn ConsensusKeysUpdated_filter(
25732            &self,
25733        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
25734            self.event_filter::<ConsensusKeysUpdated>()
25735        }
25736        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
25737        pub fn ConsensusKeysUpdatedV2_filter(
25738            &self,
25739        ) -> alloy_contract::Event<&P, ConsensusKeysUpdatedV2, N> {
25740            self.event_filter::<ConsensusKeysUpdatedV2>()
25741        }
25742        ///Creates a new event filter for the [`Delegated`] event.
25743        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
25744            self.event_filter::<Delegated>()
25745        }
25746        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
25747        pub fn ExitEscrowPeriodUpdated_filter(
25748            &self,
25749        ) -> alloy_contract::Event<&P, ExitEscrowPeriodUpdated, N> {
25750            self.event_filter::<ExitEscrowPeriodUpdated>()
25751        }
25752        ///Creates a new event filter for the [`Initialized`] event.
25753        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
25754            self.event_filter::<Initialized>()
25755        }
25756        ///Creates a new event filter for the [`MaxCommissionIncreaseUpdated`] event.
25757        pub fn MaxCommissionIncreaseUpdated_filter(
25758            &self,
25759        ) -> alloy_contract::Event<&P, MaxCommissionIncreaseUpdated, N> {
25760            self.event_filter::<MaxCommissionIncreaseUpdated>()
25761        }
25762        ///Creates a new event filter for the [`MetadataUriUpdated`] event.
25763        pub fn MetadataUriUpdated_filter(
25764            &self,
25765        ) -> alloy_contract::Event<&P, MetadataUriUpdated, N> {
25766            self.event_filter::<MetadataUriUpdated>()
25767        }
25768        ///Creates a new event filter for the [`MinCommissionUpdateIntervalUpdated`] event.
25769        pub fn MinCommissionUpdateIntervalUpdated_filter(
25770            &self,
25771        ) -> alloy_contract::Event<&P, MinCommissionUpdateIntervalUpdated, N> {
25772            self.event_filter::<MinCommissionUpdateIntervalUpdated>()
25773        }
25774        ///Creates a new event filter for the [`MinDelegateAmountUpdated`] event.
25775        pub fn MinDelegateAmountUpdated_filter(
25776            &self,
25777        ) -> alloy_contract::Event<&P, MinDelegateAmountUpdated, N> {
25778            self.event_filter::<MinDelegateAmountUpdated>()
25779        }
25780        ///Creates a new event filter for the [`OwnershipTransferred`] event.
25781        pub fn OwnershipTransferred_filter(
25782            &self,
25783        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
25784            self.event_filter::<OwnershipTransferred>()
25785        }
25786        ///Creates a new event filter for the [`Paused`] event.
25787        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
25788            self.event_filter::<Paused>()
25789        }
25790        ///Creates a new event filter for the [`RoleAdminChanged`] event.
25791        pub fn RoleAdminChanged_filter(
25792            &self,
25793        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
25794            self.event_filter::<RoleAdminChanged>()
25795        }
25796        ///Creates a new event filter for the [`RoleGranted`] event.
25797        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
25798            self.event_filter::<RoleGranted>()
25799        }
25800        ///Creates a new event filter for the [`RoleRevoked`] event.
25801        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
25802            self.event_filter::<RoleRevoked>()
25803        }
25804        ///Creates a new event filter for the [`Undelegated`] event.
25805        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
25806            self.event_filter::<Undelegated>()
25807        }
25808        ///Creates a new event filter for the [`UndelegatedV2`] event.
25809        pub fn UndelegatedV2_filter(
25810            &self,
25811        ) -> alloy_contract::Event<&P, UndelegatedV2, N> {
25812            self.event_filter::<UndelegatedV2>()
25813        }
25814        ///Creates a new event filter for the [`Unpaused`] event.
25815        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
25816            self.event_filter::<Unpaused>()
25817        }
25818        ///Creates a new event filter for the [`Upgraded`] event.
25819        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
25820            self.event_filter::<Upgraded>()
25821        }
25822        ///Creates a new event filter for the [`ValidatorExit`] event.
25823        pub fn ValidatorExit_filter(
25824            &self,
25825        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
25826            self.event_filter::<ValidatorExit>()
25827        }
25828        ///Creates a new event filter for the [`ValidatorExitClaimed`] event.
25829        pub fn ValidatorExitClaimed_filter(
25830            &self,
25831        ) -> alloy_contract::Event<&P, ValidatorExitClaimed, N> {
25832            self.event_filter::<ValidatorExitClaimed>()
25833        }
25834        ///Creates a new event filter for the [`ValidatorExitV2`] event.
25835        pub fn ValidatorExitV2_filter(
25836            &self,
25837        ) -> alloy_contract::Event<&P, ValidatorExitV2, N> {
25838            self.event_filter::<ValidatorExitV2>()
25839        }
25840        ///Creates a new event filter for the [`ValidatorRegistered`] event.
25841        pub fn ValidatorRegistered_filter(
25842            &self,
25843        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
25844            self.event_filter::<ValidatorRegistered>()
25845        }
25846        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
25847        pub fn ValidatorRegisteredV2_filter(
25848            &self,
25849        ) -> alloy_contract::Event<&P, ValidatorRegisteredV2, N> {
25850            self.event_filter::<ValidatorRegisteredV2>()
25851        }
25852        ///Creates a new event filter for the [`Withdrawal`] event.
25853        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
25854            self.event_filter::<Withdrawal>()
25855        }
25856        ///Creates a new event filter for the [`WithdrawalClaimed`] event.
25857        pub fn WithdrawalClaimed_filter(
25858            &self,
25859        ) -> alloy_contract::Event<&P, WithdrawalClaimed, N> {
25860            self.event_filter::<WithdrawalClaimed>()
25861        }
25862    }
25863}