Skip to main content

hotshot_contract_adapter/bindings/
stake_table_v3.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    struct G1Point { BaseField x; BaseField y; }
8    struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(BaseField);
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!(ValidatorStatus);
1141            /// Convert from the underlying value type.
1142            #[inline]
1143            pub const fn from_underlying(value: u8) -> Self {
1144                Self(value)
1145            }
1146            /// Return the underlying value.
1147            #[inline]
1148            pub const fn into_underlying(self) -> u8 {
1149                self.0
1150            }
1151            /// Return the single encoding of this value, delegating to the
1152            /// underlying type.
1153            #[inline]
1154            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1155                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1156            }
1157            /// Return the packed encoding of this value, delegating to the
1158            /// underlying type.
1159            #[inline]
1160            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1161                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1162            }
1163        }
1164        #[automatically_derived]
1165        impl From<u8> for ValidatorStatus {
1166            fn from(value: u8) -> Self {
1167                Self::from_underlying(value)
1168            }
1169        }
1170        #[automatically_derived]
1171        impl From<ValidatorStatus> for u8 {
1172            fn from(value: ValidatorStatus) -> Self {
1173                value.into_underlying()
1174            }
1175        }
1176        #[automatically_derived]
1177        impl alloy_sol_types::SolType for ValidatorStatus {
1178            type RustType = u8;
1179            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1180                8,
1181            > as alloy_sol_types::SolType>::Token<'a>;
1182            const SOL_NAME: &'static str = Self::NAME;
1183            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1184                8,
1185            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1186            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1187                8,
1188            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1189            #[inline]
1190            fn valid_token(token: &Self::Token<'_>) -> bool {
1191                Self::type_check(token).is_ok()
1192            }
1193            #[inline]
1194            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1195                <alloy::sol_types::sol_data::Uint<
1196                    8,
1197                > as alloy_sol_types::SolType>::type_check(token)
1198            }
1199            #[inline]
1200            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1201                <alloy::sol_types::sol_data::Uint<
1202                    8,
1203                > as alloy_sol_types::SolType>::detokenize(token)
1204            }
1205        }
1206        #[automatically_derived]
1207        impl alloy_sol_types::EventTopic for ValidatorStatus {
1208            #[inline]
1209            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1210                <alloy::sol_types::sol_data::Uint<
1211                    8,
1212                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1213            }
1214            #[inline]
1215            fn encode_topic_preimage(
1216                rust: &Self::RustType,
1217                out: &mut alloy_sol_types::private::Vec<u8>,
1218            ) {
1219                <alloy::sol_types::sol_data::Uint<
1220                    8,
1221                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1222            }
1223            #[inline]
1224            fn encode_topic(
1225                rust: &Self::RustType,
1226            ) -> alloy_sol_types::abi::token::WordToken {
1227                <alloy::sol_types::sol_data::Uint<
1228                    8,
1229                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1230            }
1231        }
1232    };
1233    use alloy::contract as alloy_contract;
1234    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1235
1236See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1237    #[inline]
1238    pub const fn new<
1239        P: alloy_contract::private::Provider<N>,
1240        N: alloy_contract::private::Network,
1241    >(
1242        address: alloy_sol_types::private::Address,
1243        __provider: P,
1244    ) -> StakeTableInstance<P, N> {
1245        StakeTableInstance::<P, N>::new(address, __provider)
1246    }
1247    /**A [`StakeTable`](self) instance.
1248
1249Contains type-safe methods for interacting with an on-chain instance of the
1250[`StakeTable`](self) contract located at a given `address`, using a given
1251provider `P`.
1252
1253If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1254documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1255be used to deploy a new instance of the contract.
1256
1257See the [module-level documentation](self) for all the available methods.*/
1258    #[derive(Clone)]
1259    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
1260        address: alloy_sol_types::private::Address,
1261        provider: P,
1262        _network: ::core::marker::PhantomData<N>,
1263    }
1264    #[automatically_derived]
1265    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
1266        #[inline]
1267        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1268            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
1269        }
1270    }
1271    /// Instantiation and getters/setters.
1272    impl<
1273        P: alloy_contract::private::Provider<N>,
1274        N: alloy_contract::private::Network,
1275    > StakeTableInstance<P, N> {
1276        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1277
1278See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1279        #[inline]
1280        pub const fn new(
1281            address: alloy_sol_types::private::Address,
1282            __provider: P,
1283        ) -> Self {
1284            Self {
1285                address,
1286                provider: __provider,
1287                _network: ::core::marker::PhantomData,
1288            }
1289        }
1290        /// Returns a reference to the address.
1291        #[inline]
1292        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1293            &self.address
1294        }
1295        /// Sets the address.
1296        #[inline]
1297        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1298            self.address = address;
1299        }
1300        /// Sets the address and returns `self`.
1301        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1302            self.set_address(address);
1303            self
1304        }
1305        /// Returns a reference to the provider.
1306        #[inline]
1307        pub const fn provider(&self) -> &P {
1308            &self.provider
1309        }
1310    }
1311    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
1312        /// Clones the provider and returns a new instance with the cloned provider.
1313        #[inline]
1314        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
1315            StakeTableInstance {
1316                address: self.address,
1317                provider: ::core::clone::Clone::clone(&self.provider),
1318                _network: ::core::marker::PhantomData,
1319            }
1320        }
1321    }
1322    /// Function calls.
1323    impl<
1324        P: alloy_contract::private::Provider<N>,
1325        N: alloy_contract::private::Network,
1326    > StakeTableInstance<P, N> {
1327        /// Creates a new call builder using this contract instance's provider and address.
1328        ///
1329        /// Note that the call can be any function call, not just those defined in this
1330        /// contract. Prefer using the other methods for building type-safe contract calls.
1331        pub fn call_builder<C: alloy_sol_types::SolCall>(
1332            &self,
1333            call: &C,
1334        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1335            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1336        }
1337    }
1338    /// Event filters.
1339    impl<
1340        P: alloy_contract::private::Provider<N>,
1341        N: alloy_contract::private::Network,
1342    > StakeTableInstance<P, N> {
1343        /// Creates a new event filter using this contract instance's provider and address.
1344        ///
1345        /// Note that the type can be any event, not just those defined in this contract.
1346        /// Prefer using the other methods for building type-safe event filters.
1347        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1348            &self,
1349        ) -> alloy_contract::Event<&P, E, N> {
1350            alloy_contract::Event::new_sol(&self.provider, &self.address)
1351        }
1352    }
1353}
1354///Module containing a contract's types and functions.
1355/**
1356
1357```solidity
1358library StakeTableV2 {
1359    struct InitialCommission { address validator; uint16 commission; }
1360}
1361```*/
1362#[allow(
1363    non_camel_case_types,
1364    non_snake_case,
1365    clippy::pub_underscore_fields,
1366    clippy::style,
1367    clippy::empty_structs_with_brackets
1368)]
1369pub mod StakeTableV2 {
1370    use super::*;
1371    use alloy::sol_types as alloy_sol_types;
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1374    /**```solidity
1375struct InitialCommission { address validator; uint16 commission; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct InitialCommission {
1380        #[allow(missing_docs)]
1381        pub validator: alloy::sol_types::private::Address,
1382        #[allow(missing_docs)]
1383        pub commission: u16,
1384    }
1385    #[allow(
1386        non_camel_case_types,
1387        non_snake_case,
1388        clippy::pub_underscore_fields,
1389        clippy::style
1390    )]
1391    const _: () = {
1392        use alloy::sol_types as alloy_sol_types;
1393        #[doc(hidden)]
1394        #[allow(dead_code)]
1395        type UnderlyingSolTuple<'a> = (
1396            alloy::sol_types::sol_data::Address,
1397            alloy::sol_types::sol_data::Uint<16>,
1398        );
1399        #[doc(hidden)]
1400        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u16);
1401        #[cfg(test)]
1402        #[allow(dead_code, unreachable_patterns)]
1403        fn _type_assertion(
1404            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1405        ) {
1406            match _t {
1407                alloy_sol_types::private::AssertTypeEq::<
1408                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1409                >(_) => {}
1410            }
1411        }
1412        #[automatically_derived]
1413        #[doc(hidden)]
1414        impl ::core::convert::From<InitialCommission> for UnderlyingRustTuple<'_> {
1415            fn from(value: InitialCommission) -> Self {
1416                (value.validator, value.commission)
1417            }
1418        }
1419        #[automatically_derived]
1420        #[doc(hidden)]
1421        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InitialCommission {
1422            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1423                Self {
1424                    validator: tuple.0,
1425                    commission: tuple.1,
1426                }
1427            }
1428        }
1429        #[automatically_derived]
1430        impl alloy_sol_types::SolValue for InitialCommission {
1431            type SolType = Self;
1432        }
1433        #[automatically_derived]
1434        impl alloy_sol_types::private::SolTypeValue<Self> for InitialCommission {
1435            #[inline]
1436            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1437                (
1438                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1439                        &self.validator,
1440                    ),
1441                    <alloy::sol_types::sol_data::Uint<
1442                        16,
1443                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
1444                )
1445            }
1446            #[inline]
1447            fn stv_abi_encoded_size(&self) -> usize {
1448                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1449                    return size;
1450                }
1451                let tuple = <UnderlyingRustTuple<
1452                    '_,
1453                > as ::core::convert::From<Self>>::from(self.clone());
1454                <UnderlyingSolTuple<
1455                    '_,
1456                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1457            }
1458            #[inline]
1459            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1460                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1461            }
1462            #[inline]
1463            fn stv_abi_encode_packed_to(
1464                &self,
1465                out: &mut alloy_sol_types::private::Vec<u8>,
1466            ) {
1467                let tuple = <UnderlyingRustTuple<
1468                    '_,
1469                > as ::core::convert::From<Self>>::from(self.clone());
1470                <UnderlyingSolTuple<
1471                    '_,
1472                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1473            }
1474            #[inline]
1475            fn stv_abi_packed_encoded_size(&self) -> usize {
1476                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1477                    return size;
1478                }
1479                let tuple = <UnderlyingRustTuple<
1480                    '_,
1481                > as ::core::convert::From<Self>>::from(self.clone());
1482                <UnderlyingSolTuple<
1483                    '_,
1484                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1485            }
1486        }
1487        #[automatically_derived]
1488        impl alloy_sol_types::SolType for InitialCommission {
1489            type RustType = Self;
1490            type Token<'a> = <UnderlyingSolTuple<
1491                'a,
1492            > as alloy_sol_types::SolType>::Token<'a>;
1493            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1494            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1495                '_,
1496            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1497            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1498                '_,
1499            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1500            #[inline]
1501            fn valid_token(token: &Self::Token<'_>) -> bool {
1502                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1503            }
1504            #[inline]
1505            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1506                let tuple = <UnderlyingSolTuple<
1507                    '_,
1508                > as alloy_sol_types::SolType>::detokenize(token);
1509                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1510            }
1511        }
1512        #[automatically_derived]
1513        impl alloy_sol_types::SolStruct for InitialCommission {
1514            const NAME: &'static str = "InitialCommission";
1515            #[inline]
1516            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1517                alloy_sol_types::private::Cow::Borrowed(
1518                    "InitialCommission(address validator,uint16 commission)",
1519                )
1520            }
1521            #[inline]
1522            fn eip712_components() -> alloy_sol_types::private::Vec<
1523                alloy_sol_types::private::Cow<'static, str>,
1524            > {
1525                alloy_sol_types::private::Vec::new()
1526            }
1527            #[inline]
1528            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1529                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1530            }
1531            #[inline]
1532            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1533                [
1534                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
1535                            &self.validator,
1536                        )
1537                        .0,
1538                    <alloy::sol_types::sol_data::Uint<
1539                        16,
1540                    > as alloy_sol_types::SolType>::eip712_data_word(&self.commission)
1541                        .0,
1542                ]
1543                    .concat()
1544            }
1545        }
1546        #[automatically_derived]
1547        impl alloy_sol_types::EventTopic for InitialCommission {
1548            #[inline]
1549            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1550                0usize
1551                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
1552                        &rust.validator,
1553                    )
1554                    + <alloy::sol_types::sol_data::Uint<
1555                        16,
1556                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1557                        &rust.commission,
1558                    )
1559            }
1560            #[inline]
1561            fn encode_topic_preimage(
1562                rust: &Self::RustType,
1563                out: &mut alloy_sol_types::private::Vec<u8>,
1564            ) {
1565                out.reserve(
1566                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1567                );
1568                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
1569                    &rust.validator,
1570                    out,
1571                );
1572                <alloy::sol_types::sol_data::Uint<
1573                    16,
1574                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1575                    &rust.commission,
1576                    out,
1577                );
1578            }
1579            #[inline]
1580            fn encode_topic(
1581                rust: &Self::RustType,
1582            ) -> alloy_sol_types::abi::token::WordToken {
1583                let mut out = alloy_sol_types::private::Vec::new();
1584                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1585                    rust,
1586                    &mut out,
1587                );
1588                alloy_sol_types::abi::token::WordToken(
1589                    alloy_sol_types::private::keccak256(out),
1590                )
1591            }
1592        }
1593    };
1594    use alloy::contract as alloy_contract;
1595    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
1596
1597See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
1598    #[inline]
1599    pub const fn new<
1600        P: alloy_contract::private::Provider<N>,
1601        N: alloy_contract::private::Network,
1602    >(
1603        address: alloy_sol_types::private::Address,
1604        __provider: P,
1605    ) -> StakeTableV2Instance<P, N> {
1606        StakeTableV2Instance::<P, N>::new(address, __provider)
1607    }
1608    /**A [`StakeTableV2`](self) instance.
1609
1610Contains type-safe methods for interacting with an on-chain instance of the
1611[`StakeTableV2`](self) contract located at a given `address`, using a given
1612provider `P`.
1613
1614If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1615documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1616be used to deploy a new instance of the contract.
1617
1618See the [module-level documentation](self) for all the available methods.*/
1619    #[derive(Clone)]
1620    pub struct StakeTableV2Instance<P, N = alloy_contract::private::Ethereum> {
1621        address: alloy_sol_types::private::Address,
1622        provider: P,
1623        _network: ::core::marker::PhantomData<N>,
1624    }
1625    #[automatically_derived]
1626    impl<P, N> ::core::fmt::Debug for StakeTableV2Instance<P, N> {
1627        #[inline]
1628        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1629            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
1630        }
1631    }
1632    /// Instantiation and getters/setters.
1633    impl<
1634        P: alloy_contract::private::Provider<N>,
1635        N: alloy_contract::private::Network,
1636    > StakeTableV2Instance<P, N> {
1637        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
1638
1639See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
1640        #[inline]
1641        pub const fn new(
1642            address: alloy_sol_types::private::Address,
1643            __provider: P,
1644        ) -> Self {
1645            Self {
1646                address,
1647                provider: __provider,
1648                _network: ::core::marker::PhantomData,
1649            }
1650        }
1651        /// Returns a reference to the address.
1652        #[inline]
1653        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1654            &self.address
1655        }
1656        /// Sets the address.
1657        #[inline]
1658        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1659            self.address = address;
1660        }
1661        /// Sets the address and returns `self`.
1662        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1663            self.set_address(address);
1664            self
1665        }
1666        /// Returns a reference to the provider.
1667        #[inline]
1668        pub const fn provider(&self) -> &P {
1669            &self.provider
1670        }
1671    }
1672    impl<P: ::core::clone::Clone, N> StakeTableV2Instance<&P, N> {
1673        /// Clones the provider and returns a new instance with the cloned provider.
1674        #[inline]
1675        pub fn with_cloned_provider(self) -> StakeTableV2Instance<P, N> {
1676            StakeTableV2Instance {
1677                address: self.address,
1678                provider: ::core::clone::Clone::clone(&self.provider),
1679                _network: ::core::marker::PhantomData,
1680            }
1681        }
1682    }
1683    /// Function calls.
1684    impl<
1685        P: alloy_contract::private::Provider<N>,
1686        N: alloy_contract::private::Network,
1687    > StakeTableV2Instance<P, N> {
1688        /// Creates a new call builder using this contract instance's provider and address.
1689        ///
1690        /// Note that the call can be any function call, not just those defined in this
1691        /// contract. Prefer using the other methods for building type-safe contract calls.
1692        pub fn call_builder<C: alloy_sol_types::SolCall>(
1693            &self,
1694            call: &C,
1695        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1696            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1697        }
1698    }
1699    /// Event filters.
1700    impl<
1701        P: alloy_contract::private::Provider<N>,
1702        N: alloy_contract::private::Network,
1703    > StakeTableV2Instance<P, N> {
1704        /// Creates a new event filter using this contract instance's provider and address.
1705        ///
1706        /// Note that the type can be any event, not just those defined in this contract.
1707        /// Prefer using the other methods for building type-safe event filters.
1708        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1709            &self,
1710        ) -> alloy_contract::Event<&P, E, N> {
1711            alloy_contract::Event::new_sol(&self.provider, &self.address)
1712        }
1713    }
1714}
1715/**
1716
1717Generated by the following Solidity interface...
1718```solidity
1719library BN254 {
1720    type BaseField is uint256;
1721    struct G1Point {
1722        BaseField x;
1723        BaseField y;
1724    }
1725    struct G2Point {
1726        BaseField x0;
1727        BaseField x1;
1728        BaseField y0;
1729        BaseField y1;
1730    }
1731}
1732
1733library EdOnBN254 {
1734    struct EdOnBN254Point {
1735        uint256 x;
1736        uint256 y;
1737    }
1738}
1739
1740library StakeTable {
1741    type ValidatorStatus is uint8;
1742}
1743
1744library StakeTableV2 {
1745    struct InitialCommission {
1746        address validator;
1747        uint16 commission;
1748    }
1749}
1750
1751interface StakeTableV3 {
1752    error AccessControlBadConfirmation();
1753    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1754    error AddressEmptyCode(address target);
1755    error BLSSigIsInfinity();
1756    error BLSSigVerificationFailed();
1757    error BLSVKIsInfinity();
1758    error BN254PairingProdFailed();
1759    error BlsKeyAlreadyUsed();
1760    error CommissionAlreadyInitialized(address validator);
1761    error CommissionIncreaseExceedsMax();
1762    error CommissionUnchanged();
1763    error CommissionUpdateTooSoon();
1764    error DefaultAdminCannotBeRenounced();
1765    error DefaultAdminCannotBeRevoked();
1766    error DelegateAmountTooSmall();
1767    error DeprecatedFunction();
1768    error ERC1967InvalidImplementation(address implementation);
1769    error ERC1967NonPayable();
1770    error EnforcedPause();
1771    error ExitEscrowPeriodInvalid();
1772    error ExpectedPause();
1773    error FailedInnerCall();
1774    error InitialActiveStakeExceedsBalance();
1775    error InsufficientAllowance(uint256, uint256);
1776    error InsufficientBalance(uint256);
1777    error InvalidCommission();
1778    error InvalidG1();
1779    error InvalidInitialization();
1780    error InvalidMetadataUriLength();
1781    error InvalidP2pAddr();
1782    error InvalidRateLimitParameters();
1783    error InvalidSchnorrSig();
1784    error InvalidSchnorrVK();
1785    error InvalidX25519Key();
1786    error MinDelegateAmountTooSmall();
1787    error NoUndelegationFound();
1788    error NotInitializing();
1789    error NothingToWithdraw();
1790    error OwnableInvalidOwner(address owner);
1791    error OwnableUnauthorizedAccount(address account);
1792    error OwnershipCannotBeRenounced();
1793    error PowPrecompileFailed();
1794    error PrematureWithdrawal();
1795    error SchnorrKeyAlreadyUsed();
1796    error UUPSUnauthorizedCallContext();
1797    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1798    error UndelegationAlreadyExists();
1799    error ValidatorAlreadyExited();
1800    error ValidatorAlreadyRegistered();
1801    error ValidatorInactive();
1802    error ValidatorNotExited();
1803    error X25519KeyAlreadyUsed();
1804    error ZeroAddress();
1805    error ZeroAmount();
1806
1807    event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
1808    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1809    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1810    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1811    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1812    event Initialized(uint64 version);
1813    event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
1814    event MetadataUriUpdated(address indexed validator, string metadataUri);
1815    event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
1816    event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
1817    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1818    event P2pAddrUpdated(address indexed validator, string p2pAddr);
1819    event Paused(address account);
1820    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1821    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1822    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1823    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1824    event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
1825    event Unpaused(address account);
1826    event Upgraded(address indexed implementation);
1827    event ValidatorExit(address indexed validator);
1828    event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
1829    event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
1830    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1831    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
1832    event ValidatorRegisteredV3(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri, bytes32 x25519Key, string p2pAddr);
1833    event Withdrawal(address indexed account, uint256 amount);
1834    event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
1835    event X25519KeyUpdated(address indexed validator, bytes32 x25519Key);
1836
1837    constructor();
1838
1839    function CURVE25519_P() external view returns (uint256);
1840    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1841    function MAX_COMMISSION_BPS() external view returns (uint16);
1842    function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
1843    function MAX_METADATA_URI_LENGTH() external view returns (uint256);
1844    function MAX_P2P_ADDR_LENGTH() external view returns (uint256);
1845    function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
1846    function PAUSER_ROLE() external view returns (bytes32);
1847    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1848    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1849    function activeStake() external view returns (uint256);
1850    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1851    function claimValidatorExit(address validator) external;
1852    function claimWithdrawal(address validator) external;
1853    function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
1854    function delegate(address validator, uint256 amount) external;
1855    function delegations(address validator, address delegator) external view returns (uint256 amount);
1856    function deregisterValidator() external;
1857    function exitEscrowPeriod() external view returns (uint256);
1858    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1859    function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
1860    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1861    function grantRole(bytes32 role, address account) external;
1862    function hasRole(bytes32 role, address account) external view returns (bool);
1863    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1864    function initializeV2(address pauser, address admin, uint256 initialActiveStake, StakeTableV2.InitialCommission[] memory initialCommissions) external;
1865    function initializeV3() external;
1866    function initializedAtBlock() external view returns (uint256);
1867    function lightClient() external view returns (address);
1868    function maxCommissionIncrease() external view returns (uint16);
1869    function minCommissionIncreaseInterval() external view returns (uint256);
1870    function minDelegateAmount() external view returns (uint256);
1871    function owner() external view returns (address);
1872    function pause() external;
1873    function paused() external view returns (bool);
1874    function proxiableUUID() external view returns (bytes32);
1875    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1876    function registerValidatorV2(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, bytes memory, uint16, string memory) external pure;
1877    function registerValidatorV3(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri, bytes32 x25519Key, string memory p2pAddr) external;
1878    function renounceOwnership() external;
1879    function renounceRole(bytes32 role, address callerConfirmation) external;
1880    function revokeRole(bytes32 role, address account) external;
1881    function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
1882    function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
1883    function setMinCommissionUpdateInterval(uint256 newInterval) external;
1884    function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
1885    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1886    function token() external view returns (address);
1887    function transferOwnership(address newOwner) external;
1888    function undelegate(address validator, uint256 amount) external;
1889    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1890    function unpause() external;
1891    function updateCommission(uint16 newCommission) external;
1892    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1893    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1894    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1895    function updateMetadataUri(string memory metadataUri) external;
1896    function updateNetworkConfig(bytes32 x25519Key, string memory p2pAddr) external;
1897    function updateP2pAddr(string memory p2pAddr) external;
1898    function updateX25519Key(bytes32 x25519Key) external;
1899    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1900    function validateMetadataUri(string memory metadataUri) external pure;
1901    function validateP2pAddr(string memory p2pAddr) external pure;
1902    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1903    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1904    function x25519Keys(bytes32 x25519Key) external view returns (bool used);
1905}
1906```
1907
1908...which was generated by the following JSON ABI:
1909```json
1910[
1911  {
1912    "type": "constructor",
1913    "inputs": [],
1914    "stateMutability": "nonpayable"
1915  },
1916  {
1917    "type": "function",
1918    "name": "CURVE25519_P",
1919    "inputs": [],
1920    "outputs": [
1921      {
1922        "name": "",
1923        "type": "uint256",
1924        "internalType": "uint256"
1925      }
1926    ],
1927    "stateMutability": "view"
1928  },
1929  {
1930    "type": "function",
1931    "name": "DEFAULT_ADMIN_ROLE",
1932    "inputs": [],
1933    "outputs": [
1934      {
1935        "name": "",
1936        "type": "bytes32",
1937        "internalType": "bytes32"
1938      }
1939    ],
1940    "stateMutability": "view"
1941  },
1942  {
1943    "type": "function",
1944    "name": "MAX_COMMISSION_BPS",
1945    "inputs": [],
1946    "outputs": [
1947      {
1948        "name": "",
1949        "type": "uint16",
1950        "internalType": "uint16"
1951      }
1952    ],
1953    "stateMutability": "view"
1954  },
1955  {
1956    "type": "function",
1957    "name": "MAX_EXIT_ESCROW_PERIOD",
1958    "inputs": [],
1959    "outputs": [
1960      {
1961        "name": "",
1962        "type": "uint64",
1963        "internalType": "uint64"
1964      }
1965    ],
1966    "stateMutability": "view"
1967  },
1968  {
1969    "type": "function",
1970    "name": "MAX_METADATA_URI_LENGTH",
1971    "inputs": [],
1972    "outputs": [
1973      {
1974        "name": "",
1975        "type": "uint256",
1976        "internalType": "uint256"
1977      }
1978    ],
1979    "stateMutability": "view"
1980  },
1981  {
1982    "type": "function",
1983    "name": "MAX_P2P_ADDR_LENGTH",
1984    "inputs": [],
1985    "outputs": [
1986      {
1987        "name": "",
1988        "type": "uint256",
1989        "internalType": "uint256"
1990      }
1991    ],
1992    "stateMutability": "view"
1993  },
1994  {
1995    "type": "function",
1996    "name": "MIN_EXIT_ESCROW_PERIOD",
1997    "inputs": [],
1998    "outputs": [
1999      {
2000        "name": "",
2001        "type": "uint64",
2002        "internalType": "uint64"
2003      }
2004    ],
2005    "stateMutability": "view"
2006  },
2007  {
2008    "type": "function",
2009    "name": "PAUSER_ROLE",
2010    "inputs": [],
2011    "outputs": [
2012      {
2013        "name": "",
2014        "type": "bytes32",
2015        "internalType": "bytes32"
2016      }
2017    ],
2018    "stateMutability": "view"
2019  },
2020  {
2021    "type": "function",
2022    "name": "UPGRADE_INTERFACE_VERSION",
2023    "inputs": [],
2024    "outputs": [
2025      {
2026        "name": "",
2027        "type": "string",
2028        "internalType": "string"
2029      }
2030    ],
2031    "stateMutability": "view"
2032  },
2033  {
2034    "type": "function",
2035    "name": "_hashBlsKey",
2036    "inputs": [
2037      {
2038        "name": "blsVK",
2039        "type": "tuple",
2040        "internalType": "struct BN254.G2Point",
2041        "components": [
2042          {
2043            "name": "x0",
2044            "type": "uint256",
2045            "internalType": "BN254.BaseField"
2046          },
2047          {
2048            "name": "x1",
2049            "type": "uint256",
2050            "internalType": "BN254.BaseField"
2051          },
2052          {
2053            "name": "y0",
2054            "type": "uint256",
2055            "internalType": "BN254.BaseField"
2056          },
2057          {
2058            "name": "y1",
2059            "type": "uint256",
2060            "internalType": "BN254.BaseField"
2061          }
2062        ]
2063      }
2064    ],
2065    "outputs": [
2066      {
2067        "name": "",
2068        "type": "bytes32",
2069        "internalType": "bytes32"
2070      }
2071    ],
2072    "stateMutability": "pure"
2073  },
2074  {
2075    "type": "function",
2076    "name": "activeStake",
2077    "inputs": [],
2078    "outputs": [
2079      {
2080        "name": "",
2081        "type": "uint256",
2082        "internalType": "uint256"
2083      }
2084    ],
2085    "stateMutability": "view"
2086  },
2087  {
2088    "type": "function",
2089    "name": "blsKeys",
2090    "inputs": [
2091      {
2092        "name": "blsKeyHash",
2093        "type": "bytes32",
2094        "internalType": "bytes32"
2095      }
2096    ],
2097    "outputs": [
2098      {
2099        "name": "used",
2100        "type": "bool",
2101        "internalType": "bool"
2102      }
2103    ],
2104    "stateMutability": "view"
2105  },
2106  {
2107    "type": "function",
2108    "name": "claimValidatorExit",
2109    "inputs": [
2110      {
2111        "name": "validator",
2112        "type": "address",
2113        "internalType": "address"
2114      }
2115    ],
2116    "outputs": [],
2117    "stateMutability": "nonpayable"
2118  },
2119  {
2120    "type": "function",
2121    "name": "claimWithdrawal",
2122    "inputs": [
2123      {
2124        "name": "validator",
2125        "type": "address",
2126        "internalType": "address"
2127      }
2128    ],
2129    "outputs": [],
2130    "stateMutability": "nonpayable"
2131  },
2132  {
2133    "type": "function",
2134    "name": "commissionTracking",
2135    "inputs": [
2136      {
2137        "name": "validator",
2138        "type": "address",
2139        "internalType": "address"
2140      }
2141    ],
2142    "outputs": [
2143      {
2144        "name": "commission",
2145        "type": "uint16",
2146        "internalType": "uint16"
2147      },
2148      {
2149        "name": "lastIncreaseTime",
2150        "type": "uint256",
2151        "internalType": "uint256"
2152      }
2153    ],
2154    "stateMutability": "view"
2155  },
2156  {
2157    "type": "function",
2158    "name": "delegate",
2159    "inputs": [
2160      {
2161        "name": "validator",
2162        "type": "address",
2163        "internalType": "address"
2164      },
2165      {
2166        "name": "amount",
2167        "type": "uint256",
2168        "internalType": "uint256"
2169      }
2170    ],
2171    "outputs": [],
2172    "stateMutability": "nonpayable"
2173  },
2174  {
2175    "type": "function",
2176    "name": "delegations",
2177    "inputs": [
2178      {
2179        "name": "validator",
2180        "type": "address",
2181        "internalType": "address"
2182      },
2183      {
2184        "name": "delegator",
2185        "type": "address",
2186        "internalType": "address"
2187      }
2188    ],
2189    "outputs": [
2190      {
2191        "name": "amount",
2192        "type": "uint256",
2193        "internalType": "uint256"
2194      }
2195    ],
2196    "stateMutability": "view"
2197  },
2198  {
2199    "type": "function",
2200    "name": "deregisterValidator",
2201    "inputs": [],
2202    "outputs": [],
2203    "stateMutability": "nonpayable"
2204  },
2205  {
2206    "type": "function",
2207    "name": "exitEscrowPeriod",
2208    "inputs": [],
2209    "outputs": [
2210      {
2211        "name": "",
2212        "type": "uint256",
2213        "internalType": "uint256"
2214      }
2215    ],
2216    "stateMutability": "view"
2217  },
2218  {
2219    "type": "function",
2220    "name": "getRoleAdmin",
2221    "inputs": [
2222      {
2223        "name": "role",
2224        "type": "bytes32",
2225        "internalType": "bytes32"
2226      }
2227    ],
2228    "outputs": [
2229      {
2230        "name": "",
2231        "type": "bytes32",
2232        "internalType": "bytes32"
2233      }
2234    ],
2235    "stateMutability": "view"
2236  },
2237  {
2238    "type": "function",
2239    "name": "getUndelegation",
2240    "inputs": [
2241      {
2242        "name": "validator",
2243        "type": "address",
2244        "internalType": "address"
2245      },
2246      {
2247        "name": "delegator",
2248        "type": "address",
2249        "internalType": "address"
2250      }
2251    ],
2252    "outputs": [
2253      {
2254        "name": "id",
2255        "type": "uint64",
2256        "internalType": "uint64"
2257      },
2258      {
2259        "name": "amount",
2260        "type": "uint256",
2261        "internalType": "uint256"
2262      },
2263      {
2264        "name": "unlocksAt",
2265        "type": "uint256",
2266        "internalType": "uint256"
2267      }
2268    ],
2269    "stateMutability": "view"
2270  },
2271  {
2272    "type": "function",
2273    "name": "getVersion",
2274    "inputs": [],
2275    "outputs": [
2276      {
2277        "name": "majorVersion",
2278        "type": "uint8",
2279        "internalType": "uint8"
2280      },
2281      {
2282        "name": "minorVersion",
2283        "type": "uint8",
2284        "internalType": "uint8"
2285      },
2286      {
2287        "name": "patchVersion",
2288        "type": "uint8",
2289        "internalType": "uint8"
2290      }
2291    ],
2292    "stateMutability": "pure"
2293  },
2294  {
2295    "type": "function",
2296    "name": "grantRole",
2297    "inputs": [
2298      {
2299        "name": "role",
2300        "type": "bytes32",
2301        "internalType": "bytes32"
2302      },
2303      {
2304        "name": "account",
2305        "type": "address",
2306        "internalType": "address"
2307      }
2308    ],
2309    "outputs": [],
2310    "stateMutability": "nonpayable"
2311  },
2312  {
2313    "type": "function",
2314    "name": "hasRole",
2315    "inputs": [
2316      {
2317        "name": "role",
2318        "type": "bytes32",
2319        "internalType": "bytes32"
2320      },
2321      {
2322        "name": "account",
2323        "type": "address",
2324        "internalType": "address"
2325      }
2326    ],
2327    "outputs": [
2328      {
2329        "name": "",
2330        "type": "bool",
2331        "internalType": "bool"
2332      }
2333    ],
2334    "stateMutability": "view"
2335  },
2336  {
2337    "type": "function",
2338    "name": "initialize",
2339    "inputs": [
2340      {
2341        "name": "_tokenAddress",
2342        "type": "address",
2343        "internalType": "address"
2344      },
2345      {
2346        "name": "_lightClientAddress",
2347        "type": "address",
2348        "internalType": "address"
2349      },
2350      {
2351        "name": "_exitEscrowPeriod",
2352        "type": "uint256",
2353        "internalType": "uint256"
2354      },
2355      {
2356        "name": "_timelock",
2357        "type": "address",
2358        "internalType": "address"
2359      }
2360    ],
2361    "outputs": [],
2362    "stateMutability": "nonpayable"
2363  },
2364  {
2365    "type": "function",
2366    "name": "initializeV2",
2367    "inputs": [
2368      {
2369        "name": "pauser",
2370        "type": "address",
2371        "internalType": "address"
2372      },
2373      {
2374        "name": "admin",
2375        "type": "address",
2376        "internalType": "address"
2377      },
2378      {
2379        "name": "initialActiveStake",
2380        "type": "uint256",
2381        "internalType": "uint256"
2382      },
2383      {
2384        "name": "initialCommissions",
2385        "type": "tuple[]",
2386        "internalType": "struct StakeTableV2.InitialCommission[]",
2387        "components": [
2388          {
2389            "name": "validator",
2390            "type": "address",
2391            "internalType": "address"
2392          },
2393          {
2394            "name": "commission",
2395            "type": "uint16",
2396            "internalType": "uint16"
2397          }
2398        ]
2399      }
2400    ],
2401    "outputs": [],
2402    "stateMutability": "nonpayable"
2403  },
2404  {
2405    "type": "function",
2406    "name": "initializeV3",
2407    "inputs": [],
2408    "outputs": [],
2409    "stateMutability": "nonpayable"
2410  },
2411  {
2412    "type": "function",
2413    "name": "initializedAtBlock",
2414    "inputs": [],
2415    "outputs": [
2416      {
2417        "name": "",
2418        "type": "uint256",
2419        "internalType": "uint256"
2420      }
2421    ],
2422    "stateMutability": "view"
2423  },
2424  {
2425    "type": "function",
2426    "name": "lightClient",
2427    "inputs": [],
2428    "outputs": [
2429      {
2430        "name": "",
2431        "type": "address",
2432        "internalType": "contract ILightClient"
2433      }
2434    ],
2435    "stateMutability": "view"
2436  },
2437  {
2438    "type": "function",
2439    "name": "maxCommissionIncrease",
2440    "inputs": [],
2441    "outputs": [
2442      {
2443        "name": "",
2444        "type": "uint16",
2445        "internalType": "uint16"
2446      }
2447    ],
2448    "stateMutability": "view"
2449  },
2450  {
2451    "type": "function",
2452    "name": "minCommissionIncreaseInterval",
2453    "inputs": [],
2454    "outputs": [
2455      {
2456        "name": "",
2457        "type": "uint256",
2458        "internalType": "uint256"
2459      }
2460    ],
2461    "stateMutability": "view"
2462  },
2463  {
2464    "type": "function",
2465    "name": "minDelegateAmount",
2466    "inputs": [],
2467    "outputs": [
2468      {
2469        "name": "",
2470        "type": "uint256",
2471        "internalType": "uint256"
2472      }
2473    ],
2474    "stateMutability": "view"
2475  },
2476  {
2477    "type": "function",
2478    "name": "owner",
2479    "inputs": [],
2480    "outputs": [
2481      {
2482        "name": "",
2483        "type": "address",
2484        "internalType": "address"
2485      }
2486    ],
2487    "stateMutability": "view"
2488  },
2489  {
2490    "type": "function",
2491    "name": "pause",
2492    "inputs": [],
2493    "outputs": [],
2494    "stateMutability": "nonpayable"
2495  },
2496  {
2497    "type": "function",
2498    "name": "paused",
2499    "inputs": [],
2500    "outputs": [
2501      {
2502        "name": "",
2503        "type": "bool",
2504        "internalType": "bool"
2505      }
2506    ],
2507    "stateMutability": "view"
2508  },
2509  {
2510    "type": "function",
2511    "name": "proxiableUUID",
2512    "inputs": [],
2513    "outputs": [
2514      {
2515        "name": "",
2516        "type": "bytes32",
2517        "internalType": "bytes32"
2518      }
2519    ],
2520    "stateMutability": "view"
2521  },
2522  {
2523    "type": "function",
2524    "name": "registerValidator",
2525    "inputs": [
2526      {
2527        "name": "",
2528        "type": "tuple",
2529        "internalType": "struct BN254.G2Point",
2530        "components": [
2531          {
2532            "name": "x0",
2533            "type": "uint256",
2534            "internalType": "BN254.BaseField"
2535          },
2536          {
2537            "name": "x1",
2538            "type": "uint256",
2539            "internalType": "BN254.BaseField"
2540          },
2541          {
2542            "name": "y0",
2543            "type": "uint256",
2544            "internalType": "BN254.BaseField"
2545          },
2546          {
2547            "name": "y1",
2548            "type": "uint256",
2549            "internalType": "BN254.BaseField"
2550          }
2551        ]
2552      },
2553      {
2554        "name": "",
2555        "type": "tuple",
2556        "internalType": "struct EdOnBN254.EdOnBN254Point",
2557        "components": [
2558          {
2559            "name": "x",
2560            "type": "uint256",
2561            "internalType": "uint256"
2562          },
2563          {
2564            "name": "y",
2565            "type": "uint256",
2566            "internalType": "uint256"
2567          }
2568        ]
2569      },
2570      {
2571        "name": "",
2572        "type": "tuple",
2573        "internalType": "struct BN254.G1Point",
2574        "components": [
2575          {
2576            "name": "x",
2577            "type": "uint256",
2578            "internalType": "BN254.BaseField"
2579          },
2580          {
2581            "name": "y",
2582            "type": "uint256",
2583            "internalType": "BN254.BaseField"
2584          }
2585        ]
2586      },
2587      {
2588        "name": "",
2589        "type": "uint16",
2590        "internalType": "uint16"
2591      }
2592    ],
2593    "outputs": [],
2594    "stateMutability": "pure"
2595  },
2596  {
2597    "type": "function",
2598    "name": "registerValidatorV2",
2599    "inputs": [
2600      {
2601        "name": "",
2602        "type": "tuple",
2603        "internalType": "struct BN254.G2Point",
2604        "components": [
2605          {
2606            "name": "x0",
2607            "type": "uint256",
2608            "internalType": "BN254.BaseField"
2609          },
2610          {
2611            "name": "x1",
2612            "type": "uint256",
2613            "internalType": "BN254.BaseField"
2614          },
2615          {
2616            "name": "y0",
2617            "type": "uint256",
2618            "internalType": "BN254.BaseField"
2619          },
2620          {
2621            "name": "y1",
2622            "type": "uint256",
2623            "internalType": "BN254.BaseField"
2624          }
2625        ]
2626      },
2627      {
2628        "name": "",
2629        "type": "tuple",
2630        "internalType": "struct EdOnBN254.EdOnBN254Point",
2631        "components": [
2632          {
2633            "name": "x",
2634            "type": "uint256",
2635            "internalType": "uint256"
2636          },
2637          {
2638            "name": "y",
2639            "type": "uint256",
2640            "internalType": "uint256"
2641          }
2642        ]
2643      },
2644      {
2645        "name": "",
2646        "type": "tuple",
2647        "internalType": "struct BN254.G1Point",
2648        "components": [
2649          {
2650            "name": "x",
2651            "type": "uint256",
2652            "internalType": "BN254.BaseField"
2653          },
2654          {
2655            "name": "y",
2656            "type": "uint256",
2657            "internalType": "BN254.BaseField"
2658          }
2659        ]
2660      },
2661      {
2662        "name": "",
2663        "type": "bytes",
2664        "internalType": "bytes"
2665      },
2666      {
2667        "name": "",
2668        "type": "uint16",
2669        "internalType": "uint16"
2670      },
2671      {
2672        "name": "",
2673        "type": "string",
2674        "internalType": "string"
2675      }
2676    ],
2677    "outputs": [],
2678    "stateMutability": "pure"
2679  },
2680  {
2681    "type": "function",
2682    "name": "registerValidatorV3",
2683    "inputs": [
2684      {
2685        "name": "blsVK",
2686        "type": "tuple",
2687        "internalType": "struct BN254.G2Point",
2688        "components": [
2689          {
2690            "name": "x0",
2691            "type": "uint256",
2692            "internalType": "BN254.BaseField"
2693          },
2694          {
2695            "name": "x1",
2696            "type": "uint256",
2697            "internalType": "BN254.BaseField"
2698          },
2699          {
2700            "name": "y0",
2701            "type": "uint256",
2702            "internalType": "BN254.BaseField"
2703          },
2704          {
2705            "name": "y1",
2706            "type": "uint256",
2707            "internalType": "BN254.BaseField"
2708          }
2709        ]
2710      },
2711      {
2712        "name": "schnorrVK",
2713        "type": "tuple",
2714        "internalType": "struct EdOnBN254.EdOnBN254Point",
2715        "components": [
2716          {
2717            "name": "x",
2718            "type": "uint256",
2719            "internalType": "uint256"
2720          },
2721          {
2722            "name": "y",
2723            "type": "uint256",
2724            "internalType": "uint256"
2725          }
2726        ]
2727      },
2728      {
2729        "name": "blsSig",
2730        "type": "tuple",
2731        "internalType": "struct BN254.G1Point",
2732        "components": [
2733          {
2734            "name": "x",
2735            "type": "uint256",
2736            "internalType": "BN254.BaseField"
2737          },
2738          {
2739            "name": "y",
2740            "type": "uint256",
2741            "internalType": "BN254.BaseField"
2742          }
2743        ]
2744      },
2745      {
2746        "name": "schnorrSig",
2747        "type": "bytes",
2748        "internalType": "bytes"
2749      },
2750      {
2751        "name": "commission",
2752        "type": "uint16",
2753        "internalType": "uint16"
2754      },
2755      {
2756        "name": "metadataUri",
2757        "type": "string",
2758        "internalType": "string"
2759      },
2760      {
2761        "name": "x25519Key",
2762        "type": "bytes32",
2763        "internalType": "bytes32"
2764      },
2765      {
2766        "name": "p2pAddr",
2767        "type": "string",
2768        "internalType": "string"
2769      }
2770    ],
2771    "outputs": [],
2772    "stateMutability": "nonpayable"
2773  },
2774  {
2775    "type": "function",
2776    "name": "renounceOwnership",
2777    "inputs": [],
2778    "outputs": [],
2779    "stateMutability": "nonpayable"
2780  },
2781  {
2782    "type": "function",
2783    "name": "renounceRole",
2784    "inputs": [
2785      {
2786        "name": "role",
2787        "type": "bytes32",
2788        "internalType": "bytes32"
2789      },
2790      {
2791        "name": "callerConfirmation",
2792        "type": "address",
2793        "internalType": "address"
2794      }
2795    ],
2796    "outputs": [],
2797    "stateMutability": "nonpayable"
2798  },
2799  {
2800    "type": "function",
2801    "name": "revokeRole",
2802    "inputs": [
2803      {
2804        "name": "role",
2805        "type": "bytes32",
2806        "internalType": "bytes32"
2807      },
2808      {
2809        "name": "account",
2810        "type": "address",
2811        "internalType": "address"
2812      }
2813    ],
2814    "outputs": [],
2815    "stateMutability": "nonpayable"
2816  },
2817  {
2818    "type": "function",
2819    "name": "schnorrKeys",
2820    "inputs": [
2821      {
2822        "name": "schnorrKey",
2823        "type": "bytes32",
2824        "internalType": "bytes32"
2825      }
2826    ],
2827    "outputs": [
2828      {
2829        "name": "used",
2830        "type": "bool",
2831        "internalType": "bool"
2832      }
2833    ],
2834    "stateMutability": "view"
2835  },
2836  {
2837    "type": "function",
2838    "name": "setMaxCommissionIncrease",
2839    "inputs": [
2840      {
2841        "name": "newMaxIncrease",
2842        "type": "uint16",
2843        "internalType": "uint16"
2844      }
2845    ],
2846    "outputs": [],
2847    "stateMutability": "nonpayable"
2848  },
2849  {
2850    "type": "function",
2851    "name": "setMinCommissionUpdateInterval",
2852    "inputs": [
2853      {
2854        "name": "newInterval",
2855        "type": "uint256",
2856        "internalType": "uint256"
2857      }
2858    ],
2859    "outputs": [],
2860    "stateMutability": "nonpayable"
2861  },
2862  {
2863    "type": "function",
2864    "name": "setMinDelegateAmount",
2865    "inputs": [
2866      {
2867        "name": "newMinDelegateAmount",
2868        "type": "uint256",
2869        "internalType": "uint256"
2870      }
2871    ],
2872    "outputs": [],
2873    "stateMutability": "nonpayable"
2874  },
2875  {
2876    "type": "function",
2877    "name": "supportsInterface",
2878    "inputs": [
2879      {
2880        "name": "interfaceId",
2881        "type": "bytes4",
2882        "internalType": "bytes4"
2883      }
2884    ],
2885    "outputs": [
2886      {
2887        "name": "",
2888        "type": "bool",
2889        "internalType": "bool"
2890      }
2891    ],
2892    "stateMutability": "view"
2893  },
2894  {
2895    "type": "function",
2896    "name": "token",
2897    "inputs": [],
2898    "outputs": [
2899      {
2900        "name": "",
2901        "type": "address",
2902        "internalType": "contract ERC20"
2903      }
2904    ],
2905    "stateMutability": "view"
2906  },
2907  {
2908    "type": "function",
2909    "name": "transferOwnership",
2910    "inputs": [
2911      {
2912        "name": "newOwner",
2913        "type": "address",
2914        "internalType": "address"
2915      }
2916    ],
2917    "outputs": [],
2918    "stateMutability": "nonpayable"
2919  },
2920  {
2921    "type": "function",
2922    "name": "undelegate",
2923    "inputs": [
2924      {
2925        "name": "validator",
2926        "type": "address",
2927        "internalType": "address"
2928      },
2929      {
2930        "name": "amount",
2931        "type": "uint256",
2932        "internalType": "uint256"
2933      }
2934    ],
2935    "outputs": [],
2936    "stateMutability": "nonpayable"
2937  },
2938  {
2939    "type": "function",
2940    "name": "undelegations",
2941    "inputs": [
2942      {
2943        "name": "validator",
2944        "type": "address",
2945        "internalType": "address"
2946      },
2947      {
2948        "name": "delegator",
2949        "type": "address",
2950        "internalType": "address"
2951      }
2952    ],
2953    "outputs": [
2954      {
2955        "name": "amount",
2956        "type": "uint256",
2957        "internalType": "uint256"
2958      },
2959      {
2960        "name": "unlocksAt",
2961        "type": "uint256",
2962        "internalType": "uint256"
2963      }
2964    ],
2965    "stateMutability": "view"
2966  },
2967  {
2968    "type": "function",
2969    "name": "unpause",
2970    "inputs": [],
2971    "outputs": [],
2972    "stateMutability": "nonpayable"
2973  },
2974  {
2975    "type": "function",
2976    "name": "updateCommission",
2977    "inputs": [
2978      {
2979        "name": "newCommission",
2980        "type": "uint16",
2981        "internalType": "uint16"
2982      }
2983    ],
2984    "outputs": [],
2985    "stateMutability": "nonpayable"
2986  },
2987  {
2988    "type": "function",
2989    "name": "updateConsensusKeys",
2990    "inputs": [
2991      {
2992        "name": "",
2993        "type": "tuple",
2994        "internalType": "struct BN254.G2Point",
2995        "components": [
2996          {
2997            "name": "x0",
2998            "type": "uint256",
2999            "internalType": "BN254.BaseField"
3000          },
3001          {
3002            "name": "x1",
3003            "type": "uint256",
3004            "internalType": "BN254.BaseField"
3005          },
3006          {
3007            "name": "y0",
3008            "type": "uint256",
3009            "internalType": "BN254.BaseField"
3010          },
3011          {
3012            "name": "y1",
3013            "type": "uint256",
3014            "internalType": "BN254.BaseField"
3015          }
3016        ]
3017      },
3018      {
3019        "name": "",
3020        "type": "tuple",
3021        "internalType": "struct EdOnBN254.EdOnBN254Point",
3022        "components": [
3023          {
3024            "name": "x",
3025            "type": "uint256",
3026            "internalType": "uint256"
3027          },
3028          {
3029            "name": "y",
3030            "type": "uint256",
3031            "internalType": "uint256"
3032          }
3033        ]
3034      },
3035      {
3036        "name": "",
3037        "type": "tuple",
3038        "internalType": "struct BN254.G1Point",
3039        "components": [
3040          {
3041            "name": "x",
3042            "type": "uint256",
3043            "internalType": "BN254.BaseField"
3044          },
3045          {
3046            "name": "y",
3047            "type": "uint256",
3048            "internalType": "BN254.BaseField"
3049          }
3050        ]
3051      }
3052    ],
3053    "outputs": [],
3054    "stateMutability": "pure"
3055  },
3056  {
3057    "type": "function",
3058    "name": "updateConsensusKeysV2",
3059    "inputs": [
3060      {
3061        "name": "blsVK",
3062        "type": "tuple",
3063        "internalType": "struct BN254.G2Point",
3064        "components": [
3065          {
3066            "name": "x0",
3067            "type": "uint256",
3068            "internalType": "BN254.BaseField"
3069          },
3070          {
3071            "name": "x1",
3072            "type": "uint256",
3073            "internalType": "BN254.BaseField"
3074          },
3075          {
3076            "name": "y0",
3077            "type": "uint256",
3078            "internalType": "BN254.BaseField"
3079          },
3080          {
3081            "name": "y1",
3082            "type": "uint256",
3083            "internalType": "BN254.BaseField"
3084          }
3085        ]
3086      },
3087      {
3088        "name": "schnorrVK",
3089        "type": "tuple",
3090        "internalType": "struct EdOnBN254.EdOnBN254Point",
3091        "components": [
3092          {
3093            "name": "x",
3094            "type": "uint256",
3095            "internalType": "uint256"
3096          },
3097          {
3098            "name": "y",
3099            "type": "uint256",
3100            "internalType": "uint256"
3101          }
3102        ]
3103      },
3104      {
3105        "name": "blsSig",
3106        "type": "tuple",
3107        "internalType": "struct BN254.G1Point",
3108        "components": [
3109          {
3110            "name": "x",
3111            "type": "uint256",
3112            "internalType": "BN254.BaseField"
3113          },
3114          {
3115            "name": "y",
3116            "type": "uint256",
3117            "internalType": "BN254.BaseField"
3118          }
3119        ]
3120      },
3121      {
3122        "name": "schnorrSig",
3123        "type": "bytes",
3124        "internalType": "bytes"
3125      }
3126    ],
3127    "outputs": [],
3128    "stateMutability": "nonpayable"
3129  },
3130  {
3131    "type": "function",
3132    "name": "updateExitEscrowPeriod",
3133    "inputs": [
3134      {
3135        "name": "newExitEscrowPeriod",
3136        "type": "uint64",
3137        "internalType": "uint64"
3138      }
3139    ],
3140    "outputs": [],
3141    "stateMutability": "nonpayable"
3142  },
3143  {
3144    "type": "function",
3145    "name": "updateMetadataUri",
3146    "inputs": [
3147      {
3148        "name": "metadataUri",
3149        "type": "string",
3150        "internalType": "string"
3151      }
3152    ],
3153    "outputs": [],
3154    "stateMutability": "nonpayable"
3155  },
3156  {
3157    "type": "function",
3158    "name": "updateNetworkConfig",
3159    "inputs": [
3160      {
3161        "name": "x25519Key",
3162        "type": "bytes32",
3163        "internalType": "bytes32"
3164      },
3165      {
3166        "name": "p2pAddr",
3167        "type": "string",
3168        "internalType": "string"
3169      }
3170    ],
3171    "outputs": [],
3172    "stateMutability": "nonpayable"
3173  },
3174  {
3175    "type": "function",
3176    "name": "updateP2pAddr",
3177    "inputs": [
3178      {
3179        "name": "p2pAddr",
3180        "type": "string",
3181        "internalType": "string"
3182      }
3183    ],
3184    "outputs": [],
3185    "stateMutability": "nonpayable"
3186  },
3187  {
3188    "type": "function",
3189    "name": "updateX25519Key",
3190    "inputs": [
3191      {
3192        "name": "x25519Key",
3193        "type": "bytes32",
3194        "internalType": "bytes32"
3195      }
3196    ],
3197    "outputs": [],
3198    "stateMutability": "nonpayable"
3199  },
3200  {
3201    "type": "function",
3202    "name": "upgradeToAndCall",
3203    "inputs": [
3204      {
3205        "name": "newImplementation",
3206        "type": "address",
3207        "internalType": "address"
3208      },
3209      {
3210        "name": "data",
3211        "type": "bytes",
3212        "internalType": "bytes"
3213      }
3214    ],
3215    "outputs": [],
3216    "stateMutability": "payable"
3217  },
3218  {
3219    "type": "function",
3220    "name": "validateMetadataUri",
3221    "inputs": [
3222      {
3223        "name": "metadataUri",
3224        "type": "string",
3225        "internalType": "string"
3226      }
3227    ],
3228    "outputs": [],
3229    "stateMutability": "pure"
3230  },
3231  {
3232    "type": "function",
3233    "name": "validateP2pAddr",
3234    "inputs": [
3235      {
3236        "name": "p2pAddr",
3237        "type": "string",
3238        "internalType": "string"
3239      }
3240    ],
3241    "outputs": [],
3242    "stateMutability": "pure"
3243  },
3244  {
3245    "type": "function",
3246    "name": "validatorExits",
3247    "inputs": [
3248      {
3249        "name": "validator",
3250        "type": "address",
3251        "internalType": "address"
3252      }
3253    ],
3254    "outputs": [
3255      {
3256        "name": "unlocksAt",
3257        "type": "uint256",
3258        "internalType": "uint256"
3259      }
3260    ],
3261    "stateMutability": "view"
3262  },
3263  {
3264    "type": "function",
3265    "name": "validators",
3266    "inputs": [
3267      {
3268        "name": "account",
3269        "type": "address",
3270        "internalType": "address"
3271      }
3272    ],
3273    "outputs": [
3274      {
3275        "name": "delegatedAmount",
3276        "type": "uint256",
3277        "internalType": "uint256"
3278      },
3279      {
3280        "name": "status",
3281        "type": "uint8",
3282        "internalType": "enum StakeTable.ValidatorStatus"
3283      }
3284    ],
3285    "stateMutability": "view"
3286  },
3287  {
3288    "type": "function",
3289    "name": "x25519Keys",
3290    "inputs": [
3291      {
3292        "name": "x25519Key",
3293        "type": "bytes32",
3294        "internalType": "bytes32"
3295      }
3296    ],
3297    "outputs": [
3298      {
3299        "name": "used",
3300        "type": "bool",
3301        "internalType": "bool"
3302      }
3303    ],
3304    "stateMutability": "view"
3305  },
3306  {
3307    "type": "event",
3308    "name": "CommissionUpdated",
3309    "inputs": [
3310      {
3311        "name": "validator",
3312        "type": "address",
3313        "indexed": true,
3314        "internalType": "address"
3315      },
3316      {
3317        "name": "timestamp",
3318        "type": "uint256",
3319        "indexed": false,
3320        "internalType": "uint256"
3321      },
3322      {
3323        "name": "oldCommission",
3324        "type": "uint16",
3325        "indexed": false,
3326        "internalType": "uint16"
3327      },
3328      {
3329        "name": "newCommission",
3330        "type": "uint16",
3331        "indexed": false,
3332        "internalType": "uint16"
3333      }
3334    ],
3335    "anonymous": false
3336  },
3337  {
3338    "type": "event",
3339    "name": "ConsensusKeysUpdated",
3340    "inputs": [
3341      {
3342        "name": "account",
3343        "type": "address",
3344        "indexed": true,
3345        "internalType": "address"
3346      },
3347      {
3348        "name": "blsVK",
3349        "type": "tuple",
3350        "indexed": false,
3351        "internalType": "struct BN254.G2Point",
3352        "components": [
3353          {
3354            "name": "x0",
3355            "type": "uint256",
3356            "internalType": "BN254.BaseField"
3357          },
3358          {
3359            "name": "x1",
3360            "type": "uint256",
3361            "internalType": "BN254.BaseField"
3362          },
3363          {
3364            "name": "y0",
3365            "type": "uint256",
3366            "internalType": "BN254.BaseField"
3367          },
3368          {
3369            "name": "y1",
3370            "type": "uint256",
3371            "internalType": "BN254.BaseField"
3372          }
3373        ]
3374      },
3375      {
3376        "name": "schnorrVK",
3377        "type": "tuple",
3378        "indexed": false,
3379        "internalType": "struct EdOnBN254.EdOnBN254Point",
3380        "components": [
3381          {
3382            "name": "x",
3383            "type": "uint256",
3384            "internalType": "uint256"
3385          },
3386          {
3387            "name": "y",
3388            "type": "uint256",
3389            "internalType": "uint256"
3390          }
3391        ]
3392      }
3393    ],
3394    "anonymous": false
3395  },
3396  {
3397    "type": "event",
3398    "name": "ConsensusKeysUpdatedV2",
3399    "inputs": [
3400      {
3401        "name": "account",
3402        "type": "address",
3403        "indexed": true,
3404        "internalType": "address"
3405      },
3406      {
3407        "name": "blsVK",
3408        "type": "tuple",
3409        "indexed": false,
3410        "internalType": "struct BN254.G2Point",
3411        "components": [
3412          {
3413            "name": "x0",
3414            "type": "uint256",
3415            "internalType": "BN254.BaseField"
3416          },
3417          {
3418            "name": "x1",
3419            "type": "uint256",
3420            "internalType": "BN254.BaseField"
3421          },
3422          {
3423            "name": "y0",
3424            "type": "uint256",
3425            "internalType": "BN254.BaseField"
3426          },
3427          {
3428            "name": "y1",
3429            "type": "uint256",
3430            "internalType": "BN254.BaseField"
3431          }
3432        ]
3433      },
3434      {
3435        "name": "schnorrVK",
3436        "type": "tuple",
3437        "indexed": false,
3438        "internalType": "struct EdOnBN254.EdOnBN254Point",
3439        "components": [
3440          {
3441            "name": "x",
3442            "type": "uint256",
3443            "internalType": "uint256"
3444          },
3445          {
3446            "name": "y",
3447            "type": "uint256",
3448            "internalType": "uint256"
3449          }
3450        ]
3451      },
3452      {
3453        "name": "blsSig",
3454        "type": "tuple",
3455        "indexed": false,
3456        "internalType": "struct BN254.G1Point",
3457        "components": [
3458          {
3459            "name": "x",
3460            "type": "uint256",
3461            "internalType": "BN254.BaseField"
3462          },
3463          {
3464            "name": "y",
3465            "type": "uint256",
3466            "internalType": "BN254.BaseField"
3467          }
3468        ]
3469      },
3470      {
3471        "name": "schnorrSig",
3472        "type": "bytes",
3473        "indexed": false,
3474        "internalType": "bytes"
3475      }
3476    ],
3477    "anonymous": false
3478  },
3479  {
3480    "type": "event",
3481    "name": "Delegated",
3482    "inputs": [
3483      {
3484        "name": "delegator",
3485        "type": "address",
3486        "indexed": true,
3487        "internalType": "address"
3488      },
3489      {
3490        "name": "validator",
3491        "type": "address",
3492        "indexed": true,
3493        "internalType": "address"
3494      },
3495      {
3496        "name": "amount",
3497        "type": "uint256",
3498        "indexed": false,
3499        "internalType": "uint256"
3500      }
3501    ],
3502    "anonymous": false
3503  },
3504  {
3505    "type": "event",
3506    "name": "ExitEscrowPeriodUpdated",
3507    "inputs": [
3508      {
3509        "name": "newExitEscrowPeriod",
3510        "type": "uint64",
3511        "indexed": false,
3512        "internalType": "uint64"
3513      }
3514    ],
3515    "anonymous": false
3516  },
3517  {
3518    "type": "event",
3519    "name": "Initialized",
3520    "inputs": [
3521      {
3522        "name": "version",
3523        "type": "uint64",
3524        "indexed": false,
3525        "internalType": "uint64"
3526      }
3527    ],
3528    "anonymous": false
3529  },
3530  {
3531    "type": "event",
3532    "name": "MaxCommissionIncreaseUpdated",
3533    "inputs": [
3534      {
3535        "name": "newMaxIncrease",
3536        "type": "uint16",
3537        "indexed": false,
3538        "internalType": "uint16"
3539      }
3540    ],
3541    "anonymous": false
3542  },
3543  {
3544    "type": "event",
3545    "name": "MetadataUriUpdated",
3546    "inputs": [
3547      {
3548        "name": "validator",
3549        "type": "address",
3550        "indexed": true,
3551        "internalType": "address"
3552      },
3553      {
3554        "name": "metadataUri",
3555        "type": "string",
3556        "indexed": false,
3557        "internalType": "string"
3558      }
3559    ],
3560    "anonymous": false
3561  },
3562  {
3563    "type": "event",
3564    "name": "MinCommissionUpdateIntervalUpdated",
3565    "inputs": [
3566      {
3567        "name": "newInterval",
3568        "type": "uint256",
3569        "indexed": false,
3570        "internalType": "uint256"
3571      }
3572    ],
3573    "anonymous": false
3574  },
3575  {
3576    "type": "event",
3577    "name": "MinDelegateAmountUpdated",
3578    "inputs": [
3579      {
3580        "name": "newMinDelegateAmount",
3581        "type": "uint256",
3582        "indexed": false,
3583        "internalType": "uint256"
3584      }
3585    ],
3586    "anonymous": false
3587  },
3588  {
3589    "type": "event",
3590    "name": "OwnershipTransferred",
3591    "inputs": [
3592      {
3593        "name": "previousOwner",
3594        "type": "address",
3595        "indexed": true,
3596        "internalType": "address"
3597      },
3598      {
3599        "name": "newOwner",
3600        "type": "address",
3601        "indexed": true,
3602        "internalType": "address"
3603      }
3604    ],
3605    "anonymous": false
3606  },
3607  {
3608    "type": "event",
3609    "name": "P2pAddrUpdated",
3610    "inputs": [
3611      {
3612        "name": "validator",
3613        "type": "address",
3614        "indexed": true,
3615        "internalType": "address"
3616      },
3617      {
3618        "name": "p2pAddr",
3619        "type": "string",
3620        "indexed": false,
3621        "internalType": "string"
3622      }
3623    ],
3624    "anonymous": false
3625  },
3626  {
3627    "type": "event",
3628    "name": "Paused",
3629    "inputs": [
3630      {
3631        "name": "account",
3632        "type": "address",
3633        "indexed": false,
3634        "internalType": "address"
3635      }
3636    ],
3637    "anonymous": false
3638  },
3639  {
3640    "type": "event",
3641    "name": "RoleAdminChanged",
3642    "inputs": [
3643      {
3644        "name": "role",
3645        "type": "bytes32",
3646        "indexed": true,
3647        "internalType": "bytes32"
3648      },
3649      {
3650        "name": "previousAdminRole",
3651        "type": "bytes32",
3652        "indexed": true,
3653        "internalType": "bytes32"
3654      },
3655      {
3656        "name": "newAdminRole",
3657        "type": "bytes32",
3658        "indexed": true,
3659        "internalType": "bytes32"
3660      }
3661    ],
3662    "anonymous": false
3663  },
3664  {
3665    "type": "event",
3666    "name": "RoleGranted",
3667    "inputs": [
3668      {
3669        "name": "role",
3670        "type": "bytes32",
3671        "indexed": true,
3672        "internalType": "bytes32"
3673      },
3674      {
3675        "name": "account",
3676        "type": "address",
3677        "indexed": true,
3678        "internalType": "address"
3679      },
3680      {
3681        "name": "sender",
3682        "type": "address",
3683        "indexed": true,
3684        "internalType": "address"
3685      }
3686    ],
3687    "anonymous": false
3688  },
3689  {
3690    "type": "event",
3691    "name": "RoleRevoked",
3692    "inputs": [
3693      {
3694        "name": "role",
3695        "type": "bytes32",
3696        "indexed": true,
3697        "internalType": "bytes32"
3698      },
3699      {
3700        "name": "account",
3701        "type": "address",
3702        "indexed": true,
3703        "internalType": "address"
3704      },
3705      {
3706        "name": "sender",
3707        "type": "address",
3708        "indexed": true,
3709        "internalType": "address"
3710      }
3711    ],
3712    "anonymous": false
3713  },
3714  {
3715    "type": "event",
3716    "name": "Undelegated",
3717    "inputs": [
3718      {
3719        "name": "delegator",
3720        "type": "address",
3721        "indexed": true,
3722        "internalType": "address"
3723      },
3724      {
3725        "name": "validator",
3726        "type": "address",
3727        "indexed": true,
3728        "internalType": "address"
3729      },
3730      {
3731        "name": "amount",
3732        "type": "uint256",
3733        "indexed": false,
3734        "internalType": "uint256"
3735      }
3736    ],
3737    "anonymous": false
3738  },
3739  {
3740    "type": "event",
3741    "name": "UndelegatedV2",
3742    "inputs": [
3743      {
3744        "name": "delegator",
3745        "type": "address",
3746        "indexed": true,
3747        "internalType": "address"
3748      },
3749      {
3750        "name": "validator",
3751        "type": "address",
3752        "indexed": true,
3753        "internalType": "address"
3754      },
3755      {
3756        "name": "undelegationId",
3757        "type": "uint64",
3758        "indexed": true,
3759        "internalType": "uint64"
3760      },
3761      {
3762        "name": "amount",
3763        "type": "uint256",
3764        "indexed": false,
3765        "internalType": "uint256"
3766      },
3767      {
3768        "name": "unlocksAt",
3769        "type": "uint256",
3770        "indexed": false,
3771        "internalType": "uint256"
3772      }
3773    ],
3774    "anonymous": false
3775  },
3776  {
3777    "type": "event",
3778    "name": "Unpaused",
3779    "inputs": [
3780      {
3781        "name": "account",
3782        "type": "address",
3783        "indexed": false,
3784        "internalType": "address"
3785      }
3786    ],
3787    "anonymous": false
3788  },
3789  {
3790    "type": "event",
3791    "name": "Upgraded",
3792    "inputs": [
3793      {
3794        "name": "implementation",
3795        "type": "address",
3796        "indexed": true,
3797        "internalType": "address"
3798      }
3799    ],
3800    "anonymous": false
3801  },
3802  {
3803    "type": "event",
3804    "name": "ValidatorExit",
3805    "inputs": [
3806      {
3807        "name": "validator",
3808        "type": "address",
3809        "indexed": true,
3810        "internalType": "address"
3811      }
3812    ],
3813    "anonymous": false
3814  },
3815  {
3816    "type": "event",
3817    "name": "ValidatorExitClaimed",
3818    "inputs": [
3819      {
3820        "name": "delegator",
3821        "type": "address",
3822        "indexed": true,
3823        "internalType": "address"
3824      },
3825      {
3826        "name": "validator",
3827        "type": "address",
3828        "indexed": true,
3829        "internalType": "address"
3830      },
3831      {
3832        "name": "amount",
3833        "type": "uint256",
3834        "indexed": false,
3835        "internalType": "uint256"
3836      }
3837    ],
3838    "anonymous": false
3839  },
3840  {
3841    "type": "event",
3842    "name": "ValidatorExitV2",
3843    "inputs": [
3844      {
3845        "name": "validator",
3846        "type": "address",
3847        "indexed": true,
3848        "internalType": "address"
3849      },
3850      {
3851        "name": "unlocksAt",
3852        "type": "uint256",
3853        "indexed": false,
3854        "internalType": "uint256"
3855      }
3856    ],
3857    "anonymous": false
3858  },
3859  {
3860    "type": "event",
3861    "name": "ValidatorRegistered",
3862    "inputs": [
3863      {
3864        "name": "account",
3865        "type": "address",
3866        "indexed": true,
3867        "internalType": "address"
3868      },
3869      {
3870        "name": "blsVk",
3871        "type": "tuple",
3872        "indexed": false,
3873        "internalType": "struct BN254.G2Point",
3874        "components": [
3875          {
3876            "name": "x0",
3877            "type": "uint256",
3878            "internalType": "BN254.BaseField"
3879          },
3880          {
3881            "name": "x1",
3882            "type": "uint256",
3883            "internalType": "BN254.BaseField"
3884          },
3885          {
3886            "name": "y0",
3887            "type": "uint256",
3888            "internalType": "BN254.BaseField"
3889          },
3890          {
3891            "name": "y1",
3892            "type": "uint256",
3893            "internalType": "BN254.BaseField"
3894          }
3895        ]
3896      },
3897      {
3898        "name": "schnorrVk",
3899        "type": "tuple",
3900        "indexed": false,
3901        "internalType": "struct EdOnBN254.EdOnBN254Point",
3902        "components": [
3903          {
3904            "name": "x",
3905            "type": "uint256",
3906            "internalType": "uint256"
3907          },
3908          {
3909            "name": "y",
3910            "type": "uint256",
3911            "internalType": "uint256"
3912          }
3913        ]
3914      },
3915      {
3916        "name": "commission",
3917        "type": "uint16",
3918        "indexed": false,
3919        "internalType": "uint16"
3920      }
3921    ],
3922    "anonymous": false
3923  },
3924  {
3925    "type": "event",
3926    "name": "ValidatorRegisteredV2",
3927    "inputs": [
3928      {
3929        "name": "account",
3930        "type": "address",
3931        "indexed": true,
3932        "internalType": "address"
3933      },
3934      {
3935        "name": "blsVK",
3936        "type": "tuple",
3937        "indexed": false,
3938        "internalType": "struct BN254.G2Point",
3939        "components": [
3940          {
3941            "name": "x0",
3942            "type": "uint256",
3943            "internalType": "BN254.BaseField"
3944          },
3945          {
3946            "name": "x1",
3947            "type": "uint256",
3948            "internalType": "BN254.BaseField"
3949          },
3950          {
3951            "name": "y0",
3952            "type": "uint256",
3953            "internalType": "BN254.BaseField"
3954          },
3955          {
3956            "name": "y1",
3957            "type": "uint256",
3958            "internalType": "BN254.BaseField"
3959          }
3960        ]
3961      },
3962      {
3963        "name": "schnorrVK",
3964        "type": "tuple",
3965        "indexed": false,
3966        "internalType": "struct EdOnBN254.EdOnBN254Point",
3967        "components": [
3968          {
3969            "name": "x",
3970            "type": "uint256",
3971            "internalType": "uint256"
3972          },
3973          {
3974            "name": "y",
3975            "type": "uint256",
3976            "internalType": "uint256"
3977          }
3978        ]
3979      },
3980      {
3981        "name": "commission",
3982        "type": "uint16",
3983        "indexed": false,
3984        "internalType": "uint16"
3985      },
3986      {
3987        "name": "blsSig",
3988        "type": "tuple",
3989        "indexed": false,
3990        "internalType": "struct BN254.G1Point",
3991        "components": [
3992          {
3993            "name": "x",
3994            "type": "uint256",
3995            "internalType": "BN254.BaseField"
3996          },
3997          {
3998            "name": "y",
3999            "type": "uint256",
4000            "internalType": "BN254.BaseField"
4001          }
4002        ]
4003      },
4004      {
4005        "name": "schnorrSig",
4006        "type": "bytes",
4007        "indexed": false,
4008        "internalType": "bytes"
4009      },
4010      {
4011        "name": "metadataUri",
4012        "type": "string",
4013        "indexed": false,
4014        "internalType": "string"
4015      }
4016    ],
4017    "anonymous": false
4018  },
4019  {
4020    "type": "event",
4021    "name": "ValidatorRegisteredV3",
4022    "inputs": [
4023      {
4024        "name": "account",
4025        "type": "address",
4026        "indexed": true,
4027        "internalType": "address"
4028      },
4029      {
4030        "name": "blsVK",
4031        "type": "tuple",
4032        "indexed": false,
4033        "internalType": "struct BN254.G2Point",
4034        "components": [
4035          {
4036            "name": "x0",
4037            "type": "uint256",
4038            "internalType": "BN254.BaseField"
4039          },
4040          {
4041            "name": "x1",
4042            "type": "uint256",
4043            "internalType": "BN254.BaseField"
4044          },
4045          {
4046            "name": "y0",
4047            "type": "uint256",
4048            "internalType": "BN254.BaseField"
4049          },
4050          {
4051            "name": "y1",
4052            "type": "uint256",
4053            "internalType": "BN254.BaseField"
4054          }
4055        ]
4056      },
4057      {
4058        "name": "schnorrVK",
4059        "type": "tuple",
4060        "indexed": false,
4061        "internalType": "struct EdOnBN254.EdOnBN254Point",
4062        "components": [
4063          {
4064            "name": "x",
4065            "type": "uint256",
4066            "internalType": "uint256"
4067          },
4068          {
4069            "name": "y",
4070            "type": "uint256",
4071            "internalType": "uint256"
4072          }
4073        ]
4074      },
4075      {
4076        "name": "commission",
4077        "type": "uint16",
4078        "indexed": false,
4079        "internalType": "uint16"
4080      },
4081      {
4082        "name": "blsSig",
4083        "type": "tuple",
4084        "indexed": false,
4085        "internalType": "struct BN254.G1Point",
4086        "components": [
4087          {
4088            "name": "x",
4089            "type": "uint256",
4090            "internalType": "BN254.BaseField"
4091          },
4092          {
4093            "name": "y",
4094            "type": "uint256",
4095            "internalType": "BN254.BaseField"
4096          }
4097        ]
4098      },
4099      {
4100        "name": "schnorrSig",
4101        "type": "bytes",
4102        "indexed": false,
4103        "internalType": "bytes"
4104      },
4105      {
4106        "name": "metadataUri",
4107        "type": "string",
4108        "indexed": false,
4109        "internalType": "string"
4110      },
4111      {
4112        "name": "x25519Key",
4113        "type": "bytes32",
4114        "indexed": false,
4115        "internalType": "bytes32"
4116      },
4117      {
4118        "name": "p2pAddr",
4119        "type": "string",
4120        "indexed": false,
4121        "internalType": "string"
4122      }
4123    ],
4124    "anonymous": false
4125  },
4126  {
4127    "type": "event",
4128    "name": "Withdrawal",
4129    "inputs": [
4130      {
4131        "name": "account",
4132        "type": "address",
4133        "indexed": true,
4134        "internalType": "address"
4135      },
4136      {
4137        "name": "amount",
4138        "type": "uint256",
4139        "indexed": false,
4140        "internalType": "uint256"
4141      }
4142    ],
4143    "anonymous": false
4144  },
4145  {
4146    "type": "event",
4147    "name": "WithdrawalClaimed",
4148    "inputs": [
4149      {
4150        "name": "delegator",
4151        "type": "address",
4152        "indexed": true,
4153        "internalType": "address"
4154      },
4155      {
4156        "name": "validator",
4157        "type": "address",
4158        "indexed": true,
4159        "internalType": "address"
4160      },
4161      {
4162        "name": "undelegationId",
4163        "type": "uint64",
4164        "indexed": true,
4165        "internalType": "uint64"
4166      },
4167      {
4168        "name": "amount",
4169        "type": "uint256",
4170        "indexed": false,
4171        "internalType": "uint256"
4172      }
4173    ],
4174    "anonymous": false
4175  },
4176  {
4177    "type": "event",
4178    "name": "X25519KeyUpdated",
4179    "inputs": [
4180      {
4181        "name": "validator",
4182        "type": "address",
4183        "indexed": true,
4184        "internalType": "address"
4185      },
4186      {
4187        "name": "x25519Key",
4188        "type": "bytes32",
4189        "indexed": false,
4190        "internalType": "bytes32"
4191      }
4192    ],
4193    "anonymous": false
4194  },
4195  {
4196    "type": "error",
4197    "name": "AccessControlBadConfirmation",
4198    "inputs": []
4199  },
4200  {
4201    "type": "error",
4202    "name": "AccessControlUnauthorizedAccount",
4203    "inputs": [
4204      {
4205        "name": "account",
4206        "type": "address",
4207        "internalType": "address"
4208      },
4209      {
4210        "name": "neededRole",
4211        "type": "bytes32",
4212        "internalType": "bytes32"
4213      }
4214    ]
4215  },
4216  {
4217    "type": "error",
4218    "name": "AddressEmptyCode",
4219    "inputs": [
4220      {
4221        "name": "target",
4222        "type": "address",
4223        "internalType": "address"
4224      }
4225    ]
4226  },
4227  {
4228    "type": "error",
4229    "name": "BLSSigIsInfinity",
4230    "inputs": []
4231  },
4232  {
4233    "type": "error",
4234    "name": "BLSSigVerificationFailed",
4235    "inputs": []
4236  },
4237  {
4238    "type": "error",
4239    "name": "BLSVKIsInfinity",
4240    "inputs": []
4241  },
4242  {
4243    "type": "error",
4244    "name": "BN254PairingProdFailed",
4245    "inputs": []
4246  },
4247  {
4248    "type": "error",
4249    "name": "BlsKeyAlreadyUsed",
4250    "inputs": []
4251  },
4252  {
4253    "type": "error",
4254    "name": "CommissionAlreadyInitialized",
4255    "inputs": [
4256      {
4257        "name": "validator",
4258        "type": "address",
4259        "internalType": "address"
4260      }
4261    ]
4262  },
4263  {
4264    "type": "error",
4265    "name": "CommissionIncreaseExceedsMax",
4266    "inputs": []
4267  },
4268  {
4269    "type": "error",
4270    "name": "CommissionUnchanged",
4271    "inputs": []
4272  },
4273  {
4274    "type": "error",
4275    "name": "CommissionUpdateTooSoon",
4276    "inputs": []
4277  },
4278  {
4279    "type": "error",
4280    "name": "DefaultAdminCannotBeRenounced",
4281    "inputs": []
4282  },
4283  {
4284    "type": "error",
4285    "name": "DefaultAdminCannotBeRevoked",
4286    "inputs": []
4287  },
4288  {
4289    "type": "error",
4290    "name": "DelegateAmountTooSmall",
4291    "inputs": []
4292  },
4293  {
4294    "type": "error",
4295    "name": "DeprecatedFunction",
4296    "inputs": []
4297  },
4298  {
4299    "type": "error",
4300    "name": "ERC1967InvalidImplementation",
4301    "inputs": [
4302      {
4303        "name": "implementation",
4304        "type": "address",
4305        "internalType": "address"
4306      }
4307    ]
4308  },
4309  {
4310    "type": "error",
4311    "name": "ERC1967NonPayable",
4312    "inputs": []
4313  },
4314  {
4315    "type": "error",
4316    "name": "EnforcedPause",
4317    "inputs": []
4318  },
4319  {
4320    "type": "error",
4321    "name": "ExitEscrowPeriodInvalid",
4322    "inputs": []
4323  },
4324  {
4325    "type": "error",
4326    "name": "ExpectedPause",
4327    "inputs": []
4328  },
4329  {
4330    "type": "error",
4331    "name": "FailedInnerCall",
4332    "inputs": []
4333  },
4334  {
4335    "type": "error",
4336    "name": "InitialActiveStakeExceedsBalance",
4337    "inputs": []
4338  },
4339  {
4340    "type": "error",
4341    "name": "InsufficientAllowance",
4342    "inputs": [
4343      {
4344        "name": "",
4345        "type": "uint256",
4346        "internalType": "uint256"
4347      },
4348      {
4349        "name": "",
4350        "type": "uint256",
4351        "internalType": "uint256"
4352      }
4353    ]
4354  },
4355  {
4356    "type": "error",
4357    "name": "InsufficientBalance",
4358    "inputs": [
4359      {
4360        "name": "",
4361        "type": "uint256",
4362        "internalType": "uint256"
4363      }
4364    ]
4365  },
4366  {
4367    "type": "error",
4368    "name": "InvalidCommission",
4369    "inputs": []
4370  },
4371  {
4372    "type": "error",
4373    "name": "InvalidG1",
4374    "inputs": []
4375  },
4376  {
4377    "type": "error",
4378    "name": "InvalidInitialization",
4379    "inputs": []
4380  },
4381  {
4382    "type": "error",
4383    "name": "InvalidMetadataUriLength",
4384    "inputs": []
4385  },
4386  {
4387    "type": "error",
4388    "name": "InvalidP2pAddr",
4389    "inputs": []
4390  },
4391  {
4392    "type": "error",
4393    "name": "InvalidRateLimitParameters",
4394    "inputs": []
4395  },
4396  {
4397    "type": "error",
4398    "name": "InvalidSchnorrSig",
4399    "inputs": []
4400  },
4401  {
4402    "type": "error",
4403    "name": "InvalidSchnorrVK",
4404    "inputs": []
4405  },
4406  {
4407    "type": "error",
4408    "name": "InvalidX25519Key",
4409    "inputs": []
4410  },
4411  {
4412    "type": "error",
4413    "name": "MinDelegateAmountTooSmall",
4414    "inputs": []
4415  },
4416  {
4417    "type": "error",
4418    "name": "NoUndelegationFound",
4419    "inputs": []
4420  },
4421  {
4422    "type": "error",
4423    "name": "NotInitializing",
4424    "inputs": []
4425  },
4426  {
4427    "type": "error",
4428    "name": "NothingToWithdraw",
4429    "inputs": []
4430  },
4431  {
4432    "type": "error",
4433    "name": "OwnableInvalidOwner",
4434    "inputs": [
4435      {
4436        "name": "owner",
4437        "type": "address",
4438        "internalType": "address"
4439      }
4440    ]
4441  },
4442  {
4443    "type": "error",
4444    "name": "OwnableUnauthorizedAccount",
4445    "inputs": [
4446      {
4447        "name": "account",
4448        "type": "address",
4449        "internalType": "address"
4450      }
4451    ]
4452  },
4453  {
4454    "type": "error",
4455    "name": "OwnershipCannotBeRenounced",
4456    "inputs": []
4457  },
4458  {
4459    "type": "error",
4460    "name": "PowPrecompileFailed",
4461    "inputs": []
4462  },
4463  {
4464    "type": "error",
4465    "name": "PrematureWithdrawal",
4466    "inputs": []
4467  },
4468  {
4469    "type": "error",
4470    "name": "SchnorrKeyAlreadyUsed",
4471    "inputs": []
4472  },
4473  {
4474    "type": "error",
4475    "name": "UUPSUnauthorizedCallContext",
4476    "inputs": []
4477  },
4478  {
4479    "type": "error",
4480    "name": "UUPSUnsupportedProxiableUUID",
4481    "inputs": [
4482      {
4483        "name": "slot",
4484        "type": "bytes32",
4485        "internalType": "bytes32"
4486      }
4487    ]
4488  },
4489  {
4490    "type": "error",
4491    "name": "UndelegationAlreadyExists",
4492    "inputs": []
4493  },
4494  {
4495    "type": "error",
4496    "name": "ValidatorAlreadyExited",
4497    "inputs": []
4498  },
4499  {
4500    "type": "error",
4501    "name": "ValidatorAlreadyRegistered",
4502    "inputs": []
4503  },
4504  {
4505    "type": "error",
4506    "name": "ValidatorInactive",
4507    "inputs": []
4508  },
4509  {
4510    "type": "error",
4511    "name": "ValidatorNotExited",
4512    "inputs": []
4513  },
4514  {
4515    "type": "error",
4516    "name": "X25519KeyAlreadyUsed",
4517    "inputs": []
4518  },
4519  {
4520    "type": "error",
4521    "name": "ZeroAddress",
4522    "inputs": []
4523  },
4524  {
4525    "type": "error",
4526    "name": "ZeroAmount",
4527    "inputs": []
4528  }
4529]
4530```*/
4531#[allow(
4532    non_camel_case_types,
4533    non_snake_case,
4534    clippy::pub_underscore_fields,
4535    clippy::style,
4536    clippy::empty_structs_with_brackets
4537)]
4538pub mod StakeTableV3 {
4539    use super::*;
4540    use alloy::sol_types as alloy_sol_types;
4541    /// The creation / init bytecode of the contract.
4542    ///
4543    /// ```text
4544    ///0x60a060405230608052348015610013575f5ffd5b5061001c610039565b610024610039565b61002c610039565b610034610039565b6100eb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100895760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614cb86101115f395f81816129b1015281816129da0152612e680152614cb85ff3fe6080604052600436106103c9575f3560e01c80636ad28e9f116101f4578063b3e6ebd511610113578063d9cc7d26116100a8578063e63ab1e911610078578063e63ab1e914610bcb578063f2fde38b14610beb578063f6777a1014610c0a578063fa52c7d814610c24578063fc0c546a14610c67575f5ffd5b8063d9cc7d2614610b6c578063e3f237e614610b81578063e4d1fb9414610ba0578063e62977f814610bb6575f5ffd5b8063bd49c35f116100e3578063bd49c35f14610ae3578063be20309414610af8578063c64814dd14610b17578063d547741f14610b4d575f5ffd5b8063b3e6ebd514610a27578063b5700e6814610a55578063b5ecb34414610a74578063bb60bfb014610a9f575f5ffd5b80639e9a8f3111610189578063a2d78dd511610159578063a2d78dd51461095a578063a3066aab146109ac578063ac5c2ad0146109cb578063ad3cb1cc146109ea575f5ffd5b80639e9a8f31146108c05780639ec9c138146108d55780639ffb6b43146108f4578063a217fddf14610947575f5ffd5b8063870c8f26116101c4578063870c8f26146108375780638da5cb5b1461085657806391d14854146108825780639b30a5e6146108a1575f5ffd5b80636ad28e9f146107cc578063715018a6146107fa57806372e9c9341461080e5780638456cb5914610823575f5ffd5b8063394b348f116102eb57806352780b6e116102805780635c975abb116102505780635c975abb146107335780635f8754a614610756578063617066e5146107845780636887cd36146107995780636a911ccf146107b8575f5ffd5b806352780b6e146106b857806352d1902d146106d75780635544c2f1146106eb5780635a2f51fd14610705575f5ffd5b80633f3bb366116102bb5780633f3bb366146106455780633f4ba83a146106725780634d99dd16146106865780634f1ef286146106a5575f5ffd5b8063394b348f146105d45780633b2b7ffa146105f35780633e732eba146106125780633e9df9b514610631575f5ffd5b80632140fecd116103615780632f2ff15d116103315780632f2ff15d1461056d5780632fe287591461058c57806336568abe146105a157806338e454b1146105c0575f5ffd5b80632140fecd146104e8578063248a9ca3146105075780632b9e5c8a146105345780632dc9bac61461054e575f5ffd5b80630d8e6e2c1161039c5780630d8e6e2c1461046057806313b9057a1461048b57806315f31835146104aa5780631a20cd63146104c9575f5ffd5b806301ffc9a7146103cd578063026e402b14610401578063073d25fc146104225780630cb2976414610441575b5f5ffd5b3480156103d8575f5ffd5b506103ec6103e736600461403d565b610c86565b60405190151581526020015b60405180910390f35b34801561040c575f5ffd5b5061042061041b36600461407f565b610cbc565b005b34801561042d575f5ffd5b5061042061043c3660046140a7565b610ea2565b34801561044c575f5ffd5b5061042061045b366004614189565b610f42565b34801561046b575f5ffd5b5060408051600381525f60208201819052918101919091526060016103f8565b348015610496575f5ffd5b506104206104a536600461426c565b61102d565b3480156104b5575f5ffd5b506104206104c43660046142c2565b611046565b3480156104d4575f5ffd5b506104206104e33660046142fb565b61127c565b3480156104f3575f5ffd5b50610420610502366004614321565b611310565b348015610512575f5ffd5b506105266105213660046140a7565b611460565b6040519081526020016103f8565b34801561053f575f5ffd5b506104206104a536600461433a565b348015610559575f5ffd5b506104206105683660046143e3565b611480565b348015610578575f5ffd5b506104206105873660046143fc565b611504565b348015610597575f5ffd5b5061052661080081565b3480156105ac575f5ffd5b506104206105bb3660046143fc565b611520565b3480156105cb575f5ffd5b50610420611548565b3480156105df575f5ffd5b506104206105ee3660046140a7565b6115eb565b3480156105fe575f5ffd5b5061042061060d3660046143e3565b61165a565b34801561061d575f5ffd5b5061042061062c3660046140a7565b6117c6565b34801561063c575f5ffd5b506105265f5481565b348015610650575f5ffd5b50600a5461065f9061ffff1681565b60405161ffff90911681526020016103f8565b34801561067d575f5ffd5b50610420611827565b348015610691575f5ffd5b506104206106a036600461407f565b611849565b6104206106b3366004614426565b611aba565b3480156106c3575f5ffd5b506104206106d236600461445a565b611ad5565b3480156106e2575f5ffd5b50610526611c87565b3480156106f6575f5ffd5b506104206104a53660046144f0565b348015610710575f5ffd5b506103ec61071f3660046140a7565b60116020525f908152604090205460ff1681565b34801561073e575f5ffd5b505f516020614c6c5f395f51905f525460ff166103ec565b348015610761575f5ffd5b506103ec6107703660046140a7565b600e6020525f908152604090205460ff1681565b34801561078f575f5ffd5b5061052661020081565b3480156107a4575f5ffd5b506104206107b3366004614534565b611ca2565b3480156107c3575f5ffd5b50610420611f0e565b3480156107d7575f5ffd5b506107e26202a30081565b6040516001600160401b0390911681526020016103f8565b348015610805575f5ffd5b50610420611fce565b348015610819575f5ffd5b50610526600c5481565b34801561082e575f5ffd5b50610420611fef565b348015610842575f5ffd5b506104206108513660046142c2565b61200e565b348015610861575f5ffd5b5061086a612062565b6040516001600160a01b0390911681526020016103f8565b34801561088d575f5ffd5b506103ec61089c3660046143fc565b612090565b3480156108ac575f5ffd5b506105266108bb366004614612565b6120c6565b3480156108cb575f5ffd5b5061052660085481565b3480156108e0575f5ffd5b506104206108ef3660046142c2565b612120565b3480156108ff575f5ffd5b5061092d61090e366004614321565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016103f8565b348015610952575f5ffd5b506105265f81565b348015610965575f5ffd5b5061099761097436600461462c565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103f8565b3480156109b7575f5ffd5b506104206109c6366004614321565b612173565b3480156109d6575f5ffd5b506104206109e5366004614654565b6122d8565b3480156109f5575f5ffd5b50610a1a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103f891906146f1565b348015610a32575f5ffd5b506103ec610a413660046140a7565b60046020525f908152604090205460ff1681565b348015610a60575f5ffd5b5060015461086a906001600160a01b031681565b348015610a7f575f5ffd5b50610526610a8e366004614321565b60056020525f908152604090205481565b348015610aaa575f5ffd5b50610abe610ab936600461462c565b612402565b604080516001600160401b0390941684526020840192909252908201526060016103f8565b348015610aee575f5ffd5b50610526600b5481565b348015610b03575f5ffd5b50610420610b12366004614703565b612493565b348015610b22575f5ffd5b50610526610b3136600461462c565b600660209081525f928352604080842090915290825290205481565b348015610b58575f5ffd5b50610420610b673660046143fc565b612597565b348015610b77575f5ffd5b5061052660095481565b348015610b8c575f5ffd5b50610420610b9b3660046142c2565b6125bf565b348015610bab575f5ffd5b506107e26212750081565b348015610bc1575f5ffd5b5061065f61271081565b348015610bd6575f5ffd5b506105265f516020614c2c5f395f51905f5281565b348015610bf6575f5ffd5b50610420610c05366004614321565b6125e4565b348015610c15575f5ffd5b506105266013600160ff1b0381565b348015610c2f575f5ffd5b50610c59610c3e366004614321565b60036020525f90815260409020805460019091015460ff1682565b6040516103f8929190614756565b348015610c72575f5ffd5b5060025461086a906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610cb657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610cc461266c565b610ccd8261269e565b335f829003610cef57604051631f2a200560e01b815260040160405180910390fd5b600c54821015610d1257604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610d60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d849190614786565b905082811015610db65760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610dce906001600160a01b031683308661271f565b6001600160a01b0384165f9081526003602052604081208054859290610df59084906147b1565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610e309084906147b1565b9250508190555082600b5f828254610e4891906147b1565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610e9491815260200190565b60405180910390a350505050565b610eaa61266c565b610eb33361269e565b610ebc816127bc565b5f8181526011602052604090205460ff1615610eeb57604051632c8d903b60e21b815260040160405180910390fd5b5f8181526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610f379084815260200190565b60405180910390a250565b610f4a61266c565b610f533361269e565b610f5c826127bc565b5f8281526011602052604090205460ff1615610f8b57604051632c8d903b60e21b815260040160405180910390fd5b610f9481611046565b5f8281526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610fe09085815260200190565b60405180910390a2336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb228260405161102191906146f1565b60405180910390a25050565b60405163c2d7f81360e01b815260040160405180910390fd5b805181901580159061105b5750610200815111155b61107857604051631e5e435f60e21b815260040160405180910390fd5b80515f19905b80156110dd57826110906001836147c4565b815181106110a0576110a06147d7565b01602001516001600160f81b031916601d60f91b036110cb576110c46001826147c4565b91506110dd565b806110d5816147eb565b91505061107e565b505f1981141580156110ee57505f81115b61110b57604051631e5e435f60e21b815260040160405180910390fd5b5f600182845161111b91906147c4565b61112591906147c4565b90505f81118015611137575060058111155b61115457604051631e5e435f60e21b815260040160405180910390fd5b5f806111618460016147b1565b90505b84518110156111ea575f858281518110611180576111806147d7565b016020015160f81c90506030811080159061119f575060398160ff1611155b6111bc57604051631e5e435f60e21b815260040160405180910390fd5b6111c7603082614800565b60ff166111d584600a614819565b6111df91906147b1565b925050600101611164565b506001821180156112295750836112028460016147b1565b81518110611212576112126147d7565b6020910101516001600160f81b031916600360fc1b145b1561124757604051631e5e435f60e21b815260040160405180910390fd5b5f81118015611258575061ffff8111155b61127557604051631e5e435f60e21b815260040160405180910390fd5b5050505050565b5f61128681612833565b6202a3006001600160401b03831610806112ab5750621275006001600160401b038316115b156112c95760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b61131861266c565b6001600160a01b0381165f908152600560205260408120543391819003611352576040516379298a5360e11b815260040160405180910390fd5b8042101561137357604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938616835292905290812054908190036113bb57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f8181526006602090815260408083209488168352938152838220829055918152600390915290812080548392906113ff9084906147c4565b909155505060025461141b906001600160a01b0316848361283d565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610e9491815260200190565b5f9081525f516020614c4c5f395f51905f52602052604090206001015490565b5f61148a81612833565b5f8261ffff161180156114a3575061271061ffff831611155b6114c05760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001611304565b8161151657611512816125e4565b5050565b61151282826128c6565b8161153e57604051638b78631d60e01b815260040160405180910390fd5b61151282826128e2565b611550612915565b5f516020614c8c5f395f51905f52805460039190600160401b900460ff1680611586575080546001600160401b03808416911610155b156115a45760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b038316908117600160401b1760ff60401b191682556040519081525f516020614bec5f395f51905f5290602001611304565b5f6115f581612833565b5f8211801561160857506301e133808211155b6116255760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001611304565b61166261266c565b3361166c8161269e565b61271061ffff831611156116935760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff9081169084168190036116d557604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff16111561176157600182015480158061170357506009546116ff90826147b1565b4210155b611720576040516316eb94cb60e01b815260040160405180910390fd5b600a546117319061ffff1683614830565b61ffff168561ffff161115611759576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f6117d081612833565b60018210156117f25760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001611304565b5f516020614c2c5f395f51905f5261183e81612833565b611846612947565b50565b61185161266c565b61185a8261269e565b335f82900361187c57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156118bf5760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561190857604051639266535160e01b815260048101829052602401610dad565b600f80545f916001600160401b0390911690826119248361484a565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f82825461199d91906147c4565b90915550506008545f906119b190426147b1565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611a419084906147c4565b9250508190555084600b5f828254611a5991906147c4565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611ac26129a6565b611acb82612a4a565b6115128282612a54565b611add612915565b5f516020614c8c5f395f51905f52805460029190600160401b900460ff1680611b13575080546001600160401b03808416911610155b15611b315760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b038616611b795760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038716611ba05760405163d92e233d60e01b815260040160405180910390fd5b611ba8612b10565b611bb0612b18565b611bc75f516020614c2c5f395f51905f5288612b28565b50611bd25f87612b28565b505f611bdc612062565b9050806001600160a01b0316876001600160a01b031614611c0057611c0087612bc9565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c55611c408585612c39565b611c4986612dce565b50805460ff60401b191681556040516001600160401b03831681525f516020614bec5f395f51905f529060200160405180910390a150505050505050565b5f611c90612e5d565b505f516020614c0c5f395f51905f5290565b611caa61266c565b33611cb481612ea6565b611cbd88612ef3565b611cc78989612f86565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cf981898c612fff565b8651604014611d1b57604051634247068760e01b815260040160405180910390fd5b61271061ffff87161115611d425760405163dc81db8560e01b815260040160405180910390fd5b611d4b856125bf565b611d54846127bc565b5f8481526011602052604090205460ff1615611d8357604051632c8d903b60e21b815260040160405180910390fd5b611d8c83611046565b600160045f611d9a8d6120c6565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611dcb8c613108565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115611e1257611e12614742565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e5857611e58614742565b02179055505060408051808201825261ffff89811682525f60208084018281526001600160a01b038916808452600d83528684209551865461ffff191695169490941785555160019485015589825260119052839020805460ff191690921790915590519091507fbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec1490611efa908d908d908b908e908e908d908d908d90614874565b60405180910390a250505050505050505050565b611f1661266c565b33611f208161269e565b6001600160a01b0381165f908152600360205260408120600101805460ff19166002179055600854611f5290426147b1565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b80549394509092909190611f8e9084906147c4565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab90602001611021565b611fd6612915565b6040516317d5c96560e11b815260040160405180910390fd5b5f516020614c2c5f395f51905f5261200681612833565b61184661312c565b61201661266c565b336120208161269e565b612029826125bf565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c348360405161102191906146f1565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f516020614c4c5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001612103949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b61212861266c565b6121313361269e565b61213a81611046565b336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb2282604051610f3791906146f1565b61217b61266c565b6001600160a01b0381165f90815260076020908152604080832033808552925282205490918190036121c057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209386168352929052206001015442101561220857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b039091169161227b9116848461283d565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522856040516122ca91815260200190565b60405180910390a450505050565b6122e061266c565b336122ea8161269e565b6122f384612ef3565b6122fd8585612f86565b604080516001600160a01b03831660208201525f9101604051602081830303815290604052905061232f818588612fff565b825160401461235157604051634247068760e01b815260040160405180910390fd5b600160045f61235f896120c6565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61239088613108565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5878787876040516123f29493929190614919565b60405180910390a2505050505050565b6001600160a01b038083165f9081526007602090815260408083209385168352929052908120805482918291820361244d57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f516020614c8c5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156124c45750825b90505f826001600160401b031660011480156124df5750303b155b9050811580156124ed575080155b1561250b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561253557845460ff60401b1916600160401b1785555b61253e86613174565b612546612b10565b61254e613185565b612559898989613263565b831561258c57845460ff60401b19168555604051600181525f516020614bec5f395f51905f529060200160405180910390a15b505050505050505050565b816125b55760405163b0b5fb9960e01b815260040160405180910390fd5b611512828261330e565b80516108008111156115125760405163239ff57f60e01b815260040160405180910390fd5b5f6125ee81612833565b6001600160a01b03821661261757604051631e4fbdf760e01b81525f6004820152602401610dad565b5f612620612062565b9050826001600160a01b0316816001600160a01b031603612649576126448361332a565b505050565b6126535f846128c6565b61265c8361332a565b6126665f82613364565b50505050565b5f516020614c6c5f395f51905f525460ff161561269c5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff16908160028111156126cf576126cf614742565b036126ed5760405163508a793f60e01b815260040160405180910390fd5b600281600281111561270157612701614742565b036115125760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156127785750833b153d17155b806112755760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610dad565b5f60205b801561280057826127d26001836147c4565b602081106127e2576127e26147d7565b1a60089290921b9190911790806127f8816147eb565b9150506127c0565b50801580159061281657506013600160ff1b0381105b61151257604051633e4ba13f60e01b815260040160405180910390fd5b61184681336133dd565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156128875750823b153d17155b806126665760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610dad565b6128cf82611460565b6128d881612833565b6126668383612b28565b6001600160a01b038116331461290b5760405163334bd91960e11b815260040160405180910390fd5b6126448282613364565b3361291e612062565b6001600160a01b03161461269c5760405163118cdaa760e01b8152336004820152602401610dad565b61294f613416565b5f516020614c6c5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a2c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a205f516020614c0c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561269c5760405163703e46dd60e11b815260040160405180910390fd5b5f61151281612833565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612aae575060408051601f3d908101601f19168201909252612aab91810190614786565b60015b612ad657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610dad565b5f516020614c0c5f395f51905f528114612b0657604051632a87526960e21b815260048101829052602401610dad565b6126448383613445565b61269c61349a565b612b2061349a565b61269c6134d0565b5f5f516020614c4c5f395f51905f52612b418484612090565b612bc0575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612b763390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cb6565b5f915050610cb6565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015612644575f838383818110612c5657612c566147d7565b612c6c9260206040909202019081019150614321565b90505f848484818110612c8157612c816147d7565b9050604002016020016020810190612c9991906143e3565b905061271061ffff82161115612cc25760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff1690816002811115612cf357612cf3614742565b03612d115760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d6020526040902060010154158015612d5257506001600160a01b0383165f908152600d602052604090205461ffff16155b8390612d7d5760405163050814e160e41b81526001600160a01b039091166004820152602401610dad565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612c3b565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612e14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e389190614786565b811115612e5857604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461269c5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115612ed557612ed5614742565b146118465760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111580612f4757507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b15612f65576040516306cf438f60e01b815260040160405180910390fd5b80515f03611846576040516306cf438f60e01b815260040160405180910390fd5b60045f612f92846120c6565b815260208101919091526040015f205460ff1615612fc25760405162da8a5760e11b815260040160405180910390fd5b600e5f612fce83613108565b815260208101919091526040015f205460ff16156115125760405163ae493b0360e01b815260040160405180910390fd5b81516020830151159015161561302857604051633a13919960e11b815260040160405180910390fd5b805115801561303957506020810151155b801561304757506040810151155b801561305557506060810151155b1561307357604051635e4362cd60e11b815260040160405180910390fd5b61307c826134f0565b5f604051806060016040528060248152602001614ba86024913990505f84826040516020016130ac929190614996565b60405160208183030381529060405290505f6130c782613557565b90506130e481856130d788613644565b6130df6136bb565b613788565b6131005760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001612103929190918252602082015260400190565b61313461266c565b5f516020614c6c5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612988565b61317c61349a565b61184681613837565b5f516020614c8c5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156131b65750825b90505f826001600160401b031660011480156131d15750303b155b9050811580156131df575080155b156131fd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561322757845460ff60401b1916600160401b1785555b435f55831561127557845460ff60401b19168555604051600181525f516020614bec5f395f51905f529060200160405180910390a15050505050565b6001600160a01b03831661328a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166132b15760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156133065760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b61331782611460565b61332081612833565b6126668383613364565b613332612915565b6001600160a01b03811661335b57604051631e4fbdf760e01b81525f6004820152602401610dad565b61184681612bc9565b5f5f516020614c4c5f395f51905f5261337d8484612090565b15612bc0575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cb6565b6133e78282612090565b6115125760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610dad565b5f516020614c6c5f395f51905f525460ff1661269c57604051638dfc202b60e01b815260040160405180910390fd5b61344e8261383f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156134925761264482826138a2565b611512613914565b5f516020614c8c5f395f51905f5254600160401b900460ff1661269c57604051631afcd79f60e31b815260040160405180910390fd5b6134d861349a565b5f516020614c6c5f395f51905f52805460ff19169055565b805160208201515f915f516020614bcc5f395f51905f5291159015161561351657505050565b8251602084015182600384858586098509088382830914838210848410161693505050816126445760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f61357483613933565b90505f516020614bcc5f395f51905f5260035f828485099050828061359b5761359b6149aa565b848209905082806135ae576135ae6149aa565b82820890505f5f6135be83613b3b565b925090505b806136275784806135d6576135d66149aa565b60018708955084806135ea576135ea6149aa565b868709925084806135fd576135fd6149aa565b86840992508480613610576136106149aa565b848408925061361e83613b3b565b925090506135c3565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f808252602082015281516020830151159015161561366b575090565b6040518060400160405280835f015181526020015f516020614bcc5f395f51905f52846020015161369c91906149be565b6136b3905f516020614bcc5f395f51905f526147c4565b905292915050565b6136e260405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061382b5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b61333261349a565b806001600160a01b03163b5f0361387457604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610dad565b5f516020614c0c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516138be91906149dd565b5f60405180830381855af49150503d805f81146138f6576040519150601f19603f3d011682016040523d82523d5f602084013e6138fb565b606091505b509150915061390b858383613c03565b95945050505050565b341561269c5760405163b398979f60e01b815260040160405180910390fd5b5f5f61393e83613c62565b805190915060308114613953576139536149e8565b5f816001600160401b0381111561396c5761396c6140be565b6040519080825280601f01601f191660200182016040528015613996576020820181803683370190505b5090505f5b82811015613a05578360016139b083866147c4565b6139ba91906147c4565b815181106139ca576139ca6147d7565b602001015160f81c60f81b8282815181106139e7576139e76147d7565b60200101906001600160f81b03191690815f1a90535060010161399b565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015613a95578381613a4185886147c4565b613a4b91906147b1565b81518110613a5b57613a5b6147d7565b602001015160f81c60f81b60f81c828281518110613a7b57613a7b6147d7565b60ff90921660209283029190910190910152600101613a2d565b505f613aa082613fad565b90506101005f516020614bcc5f395f51905f525f613abe86896147c4565b90505f5b81811015613b2b575f886001613ad884866147c4565b613ae291906147c4565b81518110613af257613af26147d7565b016020015160f81c90508380613b0a57613b0a6149aa565b85870995508380613b1d57613b1d6149aa565b818708955050600101613ac2565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020614bcc5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083613bc957604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613be257613bdf83826147c4565b92505b8080613bf057613bf06149aa565b8384099690961496919550909350505050565b606082613c1857613c1382614014565b613c5b565b8151158015613c2f57506001600160a01b0384163b155b15613c5857604051639996b31560e01b81526001600160a01b0385166004820152602401610dad565b50805b9392505050565b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001613ca2929190614996565b6040516020818303038152906040529050808460f81b604051602001613cc99291906149fc565b604051602081830303815290604052905080604051602001613ceb9190614a26565b60408051601f1981840301815290829052915061010160f01b90613d159083908390602001614a3e565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b03811115613d8457613d846140be565b6040519080825280601f01601f191660200182016040528015613dae576020820181803683370190505b5090505f82604051602001613dc591815260200190565b60408051601f1981840301815291905290505f5b8151811015613e2f57818181518110613df457613df46147d7565b602001015160f81c60f81b838281518110613e1157613e116147d7565b60200101906001600160f81b03191690815f1a905350600101613dd9565b505f84604051602001613e4491815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613ed6575f838281518110613e7d57613e7d6147d7565b602001015160f81c60f81b838381518110613e9a57613e9a6147d7565b602001015160f81c60f81b1890508881604051602001613ebb929190614a62565b60408051601f19818403018152919052985050600101613e62565b50868887604051602001613eec93929190614a86565b60405160208183030381529060405296508680519060200120935083604051602001613f1a91815260200190565b60408051601f1981840301815291905291505f5b613f3b8a60ff8d166147c4565b811015613f9c57828181518110613f5457613f546147d7565b01602001516001600160f81b03191684613f6e838d6147b1565b81518110613f7e57613f7e6147d7565b60200101906001600160f81b03191690815f1a905350600101613f2e565b50919b9a5050505050505050505050565b5f80805b835181101561400d57838181518110613fcc57613fcc6147d7565b602002602001015160ff16816008613fe49190614819565b613fef906002614b9c565b613ff99190614819565b61400390836147b1565b9150600101613fb1565b5092915050565b8051156140245780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f6020828403121561404d575f5ffd5b81356001600160e01b031981168114613c5b575f5ffd5b80356001600160a01b038116811461407a575f5ffd5b919050565b5f5f60408385031215614090575f5ffd5b61409983614064565b946020939093013593505050565b5f602082840312156140b7575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156140f4576140f46140be565b60405290565b5f82601f830112614109575f5ffd5b8135602083015f5f6001600160401b03841115614128576141286140be565b50604051601f19601f85018116603f011681018181106001600160401b0382111715614156576141566140be565b60405283815290508082840187101561416d575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f6040838503121561419a575f5ffd5b8235915060208301356001600160401b038111156141b6575f5ffd5b6141c2858286016140fa565b9150509250929050565b5f608082840312156141dc575f5ffd5b604051608081016001600160401b03811182821017156141fe576141fe6140be565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561423c575f5ffd5b6142446140d2565b823581526020928301359281019290925250919050565b803561ffff8116811461407a575f5ffd5b5f5f5f5f6101208587031215614280575f5ffd5b61428a86866141cc565b9350614299866080870161422c565b92506142a88660c0870161422c565b91506142b7610100860161425b565b905092959194509250565b5f602082840312156142d2575f5ffd5b81356001600160401b038111156142e7575f5ffd5b6142f3848285016140fa565b949350505050565b5f6020828403121561430b575f5ffd5b81356001600160401b0381168114613c5b575f5ffd5b5f60208284031215614331575f5ffd5b613c5b82614064565b5f5f5f5f5f5f6101608789031215614350575f5ffd5b61435a88886141cc565b9550614369886080890161422c565b94506143788860c0890161422c565b93506101008701356001600160401b03811115614393575f5ffd5b61439f89828a016140fa565b9350506143af610120880161425b565b91506101408701356001600160401b038111156143ca575f5ffd5b6143d689828a016140fa565b9150509295509295509295565b5f602082840312156143f3575f5ffd5b613c5b8261425b565b5f5f6040838503121561440d575f5ffd5b8235915061441d60208401614064565b90509250929050565b5f5f60408385031215614437575f5ffd5b61444083614064565b915060208301356001600160401b038111156141b6575f5ffd5b5f5f5f5f5f6080868803121561446e575f5ffd5b61447786614064565b945061448560208701614064565b93506040860135925060608601356001600160401b038111156144a6575f5ffd5b8601601f810188136144b6575f5ffd5b80356001600160401b038111156144cb575f5ffd5b8860208260061b84010111156144df575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215614503575f5ffd5b61450d85856141cc565b925061451c856080860161422c565b915061452b8560c0860161422c565b90509250925092565b5f5f5f5f5f5f5f5f6101a0898b03121561454c575f5ffd5b6145568a8a6141cc565b97506145658a60808b0161422c565b96506145748a60c08b0161422c565b95506101008901356001600160401b0381111561458f575f5ffd5b61459b8b828c016140fa565b9550506145ab6101208a0161425b565b93506101408901356001600160401b038111156145c6575f5ffd5b6145d28b828c016140fa565b93505061016089013591506101808901356001600160401b038111156145f6575f5ffd5b6146028b828c016140fa565b9150509295985092959890939650565b5f60808284031215614622575f5ffd5b613c5b83836141cc565b5f5f6040838503121561463d575f5ffd5b61464683614064565b915061441d60208401614064565b5f5f5f5f6101208587031215614668575f5ffd5b61467286866141cc565b9350614681866080870161422c565b92506146908660c0870161422c565b91506101008501356001600160401b038111156146ab575f5ffd5b6146b7878288016140fa565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613c5b60208301846146c3565b5f5f5f5f60808587031215614716575f5ffd5b61471f85614064565b935061472d60208601614064565b9250604085013591506142b760608601614064565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061477957634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215614796575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cb657610cb661479d565b81810381811115610cb657610cb661479d565b634e487b7160e01b5f52603260045260245ffd5b5f816147f9576147f961479d565b505f190190565b60ff8281168282160390811115610cb657610cb661479d565b8082028115828204841417610cb657610cb661479d565b61ffff8181168382160190811115610cb657610cb661479d565b5f6001600160401b0382166001600160401b03810361486b5761486b61479d565b60010192915050565b885181526020808a0151908201526040808a0151908201526060808a01519082015287516080820152602088015160a082015261ffff871660c0820152855160e082015260208601516101008201526101a06101208201525f6148db6101a08301876146c3565b8281036101408401526148ee81876146c3565b90508461016084015282810361018084015261490a81856146c3565b9b9a5050505050505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f6149756101208301846146c3565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f6142f36149a4838661497f565b8461497f565b634e487b7160e01b5f52601260045260245ffd5b5f826149d857634e487b7160e01b5f52601260045260245ffd5b500690565b5f613c5b828461497f565b634e487b7160e01b5f52600160045260245ffd5b5f614a07828561497f565b5f81526001600160f81b03199390931660018401525050600201919050565b5f614a31828461497f565b5f81526001019392505050565b5f614a49828561497f565b6001600160f01b03199390931683525050600201919050565b5f614a6d828561497f565b6001600160f81b03199390931683525050600101919050565b5f614a91828661497f565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b6001815b6001841115614af457808504811115614ad857614ad861479d565b6001841615614ae657908102905b60019390931c928002614abd565b935093915050565b5f82614b0a57506001610cb6565b81614b1657505f610cb6565b8160018114614b2c5760028114614b3657614b52565b6001915050610cb6565b60ff841115614b4757614b4761479d565b50506001821b610cb6565b5060208310610133831016604e8410600b8410161715614b75575081810a610cb6565b614b815f198484614ab9565b805f1904821115614b9457614b9461479d565b029392505050565b5f613c5b8383614afc56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
4545    /// ```
4546    #[rustfmt::skip]
4547    #[allow(clippy::all)]
4548    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4549        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\09V[a\0$a\09V[a\0,a\09V[a\x004a\09V[a\0\xEBV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0\x89W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xE8W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80QaL\xB8a\x01\x11_9_\x81\x81a)\xB1\x01R\x81\x81a)\xDA\x01Ra.h\x01RaL\xB8_\xF3\xFE`\x80`@R`\x046\x10a\x03\xC9W_5`\xE0\x1C\x80cj\xD2\x8E\x9F\x11a\x01\xF4W\x80c\xB3\xE6\xEB\xD5\x11a\x01\x13W\x80c\xD9\xCC}&\x11a\0\xA8W\x80c\xE6:\xB1\xE9\x11a\0xW\x80c\xE6:\xB1\xE9\x14a\x0B\xCBW\x80c\xF2\xFD\xE3\x8B\x14a\x0B\xEBW\x80c\xF6wz\x10\x14a\x0C\nW\x80c\xFAR\xC7\xD8\x14a\x0C$W\x80c\xFC\x0CTj\x14a\x0CgW__\xFD[\x80c\xD9\xCC}&\x14a\x0BlW\x80c\xE3\xF27\xE6\x14a\x0B\x81W\x80c\xE4\xD1\xFB\x94\x14a\x0B\xA0W\x80c\xE6)w\xF8\x14a\x0B\xB6W__\xFD[\x80c\xBDI\xC3_\x11a\0\xE3W\x80c\xBDI\xC3_\x14a\n\xE3W\x80c\xBE 0\x94\x14a\n\xF8W\x80c\xC6H\x14\xDD\x14a\x0B\x17W\x80c\xD5Gt\x1F\x14a\x0BMW__\xFD[\x80c\xB3\xE6\xEB\xD5\x14a\n'W\x80c\xB5p\x0Eh\x14a\nUW\x80c\xB5\xEC\xB3D\x14a\ntW\x80c\xBB`\xBF\xB0\x14a\n\x9FW__\xFD[\x80c\x9E\x9A\x8F1\x11a\x01\x89W\x80c\xA2\xD7\x8D\xD5\x11a\x01YW\x80c\xA2\xD7\x8D\xD5\x14a\tZW\x80c\xA3\x06j\xAB\x14a\t\xACW\x80c\xAC\\*\xD0\x14a\t\xCBW\x80c\xAD<\xB1\xCC\x14a\t\xEAW__\xFD[\x80c\x9E\x9A\x8F1\x14a\x08\xC0W\x80c\x9E\xC9\xC18\x14a\x08\xD5W\x80c\x9F\xFBkC\x14a\x08\xF4W\x80c\xA2\x17\xFD\xDF\x14a\tGW__\xFD[\x80c\x87\x0C\x8F&\x11a\x01\xC4W\x80c\x87\x0C\x8F&\x14a\x087W\x80c\x8D\xA5\xCB[\x14a\x08VW\x80c\x91\xD1HT\x14a\x08\x82W\x80c\x9B0\xA5\xE6\x14a\x08\xA1W__\xFD[\x80cj\xD2\x8E\x9F\x14a\x07\xCCW\x80cqP\x18\xA6\x14a\x07\xFAW\x80cr\xE9\xC94\x14a\x08\x0EW\x80c\x84V\xCBY\x14a\x08#W__\xFD[\x80c9K4\x8F\x11a\x02\xEBW\x80cRx\x0Bn\x11a\x02\x80W\x80c\\\x97Z\xBB\x11a\x02PW\x80c\\\x97Z\xBB\x14a\x073W\x80c_\x87T\xA6\x14a\x07VW\x80capf\xE5\x14a\x07\x84W\x80ch\x87\xCD6\x14a\x07\x99W\x80cj\x91\x1C\xCF\x14a\x07\xB8W__\xFD[\x80cRx\x0Bn\x14a\x06\xB8W\x80cR\xD1\x90-\x14a\x06\xD7W\x80cUD\xC2\xF1\x14a\x06\xEBW\x80cZ/Q\xFD\x14a\x07\x05W__\xFD[\x80c?;\xB3f\x11a\x02\xBBW\x80c?;\xB3f\x14a\x06EW\x80c?K\xA8:\x14a\x06rW\x80cM\x99\xDD\x16\x14a\x06\x86W\x80cO\x1E\xF2\x86\x14a\x06\xA5W__\xFD[\x80c9K4\x8F\x14a\x05\xD4W\x80c;+\x7F\xFA\x14a\x05\xF3W\x80c>s.\xBA\x14a\x06\x12W\x80c>\x9D\xF9\xB5\x14a\x061W__\xFD[\x80c!@\xFE\xCD\x11a\x03aW\x80c//\xF1]\x11a\x031W\x80c//\xF1]\x14a\x05mW\x80c/\xE2\x87Y\x14a\x05\x8CW\x80c6V\x8A\xBE\x14a\x05\xA1W\x80c8\xE4T\xB1\x14a\x05\xC0W__\xFD[\x80c!@\xFE\xCD\x14a\x04\xE8W\x80c$\x8A\x9C\xA3\x14a\x05\x07W\x80c+\x9E\\\x8A\x14a\x054W\x80c-\xC9\xBA\xC6\x14a\x05NW__\xFD[\x80c\r\x8En,\x11a\x03\x9CW\x80c\r\x8En,\x14a\x04`W\x80c\x13\xB9\x05z\x14a\x04\x8BW\x80c\x15\xF3\x185\x14a\x04\xAAW\x80c\x1A \xCDc\x14a\x04\xC9W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03\xCDW\x80c\x02n@+\x14a\x04\x01W\x80c\x07=%\xFC\x14a\x04\"W\x80c\x0C\xB2\x97d\x14a\x04AW[__\xFD[4\x80\x15a\x03\xD8W__\xFD[Pa\x03\xECa\x03\xE76`\x04a@=V[a\x0C\x86V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x04\x0CW__\xFD[Pa\x04 a\x04\x1B6`\x04a@\x7FV[a\x0C\xBCV[\0[4\x80\x15a\x04-W__\xFD[Pa\x04 a\x04<6`\x04a@\xA7V[a\x0E\xA2V[4\x80\x15a\x04LW__\xFD[Pa\x04 a\x04[6`\x04aA\x89V[a\x0FBV[4\x80\x15a\x04kW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\xF8V[4\x80\x15a\x04\x96W__\xFD[Pa\x04 a\x04\xA56`\x04aBlV[a\x10-V[4\x80\x15a\x04\xB5W__\xFD[Pa\x04 a\x04\xC46`\x04aB\xC2V[a\x10FV[4\x80\x15a\x04\xD4W__\xFD[Pa\x04 a\x04\xE36`\x04aB\xFBV[a\x12|V[4\x80\x15a\x04\xF3W__\xFD[Pa\x04 a\x05\x026`\x04aC!V[a\x13\x10V[4\x80\x15a\x05\x12W__\xFD[Pa\x05&a\x05!6`\x04a@\xA7V[a\x14`V[`@Q\x90\x81R` \x01a\x03\xF8V[4\x80\x15a\x05?W__\xFD[Pa\x04 a\x04\xA56`\x04aC:V[4\x80\x15a\x05YW__\xFD[Pa\x04 a\x05h6`\x04aC\xE3V[a\x14\x80V[4\x80\x15a\x05xW__\xFD[Pa\x04 a\x05\x876`\x04aC\xFCV[a\x15\x04V[4\x80\x15a\x05\x97W__\xFD[Pa\x05&a\x08\0\x81V[4\x80\x15a\x05\xACW__\xFD[Pa\x04 a\x05\xBB6`\x04aC\xFCV[a\x15 V[4\x80\x15a\x05\xCBW__\xFD[Pa\x04 a\x15HV[4\x80\x15a\x05\xDFW__\xFD[Pa\x04 a\x05\xEE6`\x04a@\xA7V[a\x15\xEBV[4\x80\x15a\x05\xFEW__\xFD[Pa\x04 a\x06\r6`\x04aC\xE3V[a\x16ZV[4\x80\x15a\x06\x1DW__\xFD[Pa\x04 a\x06,6`\x04a@\xA7V[a\x17\xC6V[4\x80\x15a\x06<W__\xFD[Pa\x05&_T\x81V[4\x80\x15a\x06PW__\xFD[P`\nTa\x06_\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x06}W__\xFD[Pa\x04 a\x18'V[4\x80\x15a\x06\x91W__\xFD[Pa\x04 a\x06\xA06`\x04a@\x7FV[a\x18IV[a\x04 a\x06\xB36`\x04aD&V[a\x1A\xBAV[4\x80\x15a\x06\xC3W__\xFD[Pa\x04 a\x06\xD26`\x04aDZV[a\x1A\xD5V[4\x80\x15a\x06\xE2W__\xFD[Pa\x05&a\x1C\x87V[4\x80\x15a\x06\xF6W__\xFD[Pa\x04 a\x04\xA56`\x04aD\xF0V[4\x80\x15a\x07\x10W__\xFD[Pa\x03\xECa\x07\x1F6`\x04a@\xA7V[`\x11` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07>W__\xFD[P_Q` aLl_9_Q\x90_RT`\xFF\x16a\x03\xECV[4\x80\x15a\x07aW__\xFD[Pa\x03\xECa\x07p6`\x04a@\xA7V[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07\x8FW__\xFD[Pa\x05&a\x02\0\x81V[4\x80\x15a\x07\xA4W__\xFD[Pa\x04 a\x07\xB36`\x04aE4V[a\x1C\xA2V[4\x80\x15a\x07\xC3W__\xFD[Pa\x04 a\x1F\x0EV[4\x80\x15a\x07\xD7W__\xFD[Pa\x07\xE2b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x08\x05W__\xFD[Pa\x04 a\x1F\xCEV[4\x80\x15a\x08\x19W__\xFD[Pa\x05&`\x0CT\x81V[4\x80\x15a\x08.W__\xFD[Pa\x04 a\x1F\xEFV[4\x80\x15a\x08BW__\xFD[Pa\x04 a\x08Q6`\x04aB\xC2V[a \x0EV[4\x80\x15a\x08aW__\xFD[Pa\x08ja bV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x08\x8DW__\xFD[Pa\x03\xECa\x08\x9C6`\x04aC\xFCV[a \x90V[4\x80\x15a\x08\xACW__\xFD[Pa\x05&a\x08\xBB6`\x04aF\x12V[a \xC6V[4\x80\x15a\x08\xCBW__\xFD[Pa\x05&`\x08T\x81V[4\x80\x15a\x08\xE0W__\xFD[Pa\x04 a\x08\xEF6`\x04aB\xC2V[a! V[4\x80\x15a\x08\xFFW__\xFD[Pa\t-a\t\x0E6`\x04aC!V[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xF8V[4\x80\x15a\tRW__\xFD[Pa\x05&_\x81V[4\x80\x15a\teW__\xFD[Pa\t\x97a\tt6`\x04aF,V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xF8V[4\x80\x15a\t\xB7W__\xFD[Pa\x04 a\t\xC66`\x04aC!V[a!sV[4\x80\x15a\t\xD6W__\xFD[Pa\x04 a\t\xE56`\x04aFTV[a\"\xD8V[4\x80\x15a\t\xF5W__\xFD[Pa\n\x1A`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\xF8\x91\x90aF\xF1V[4\x80\x15a\n2W__\xFD[Pa\x03\xECa\nA6`\x04a@\xA7V[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\n`W__\xFD[P`\x01Ta\x08j\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\n\x7FW__\xFD[Pa\x05&a\n\x8E6`\x04aC!V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\n\xAAW__\xFD[Pa\n\xBEa\n\xB96`\x04aF,V[a$\x02V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\xF8V[4\x80\x15a\n\xEEW__\xFD[Pa\x05&`\x0BT\x81V[4\x80\x15a\x0B\x03W__\xFD[Pa\x04 a\x0B\x126`\x04aG\x03V[a$\x93V[4\x80\x15a\x0B\"W__\xFD[Pa\x05&a\x0B16`\x04aF,V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x0BXW__\xFD[Pa\x04 a\x0Bg6`\x04aC\xFCV[a%\x97V[4\x80\x15a\x0BwW__\xFD[Pa\x05&`\tT\x81V[4\x80\x15a\x0B\x8CW__\xFD[Pa\x04 a\x0B\x9B6`\x04aB\xC2V[a%\xBFV[4\x80\x15a\x0B\xABW__\xFD[Pa\x07\xE2b\x12u\0\x81V[4\x80\x15a\x0B\xC1W__\xFD[Pa\x06_a'\x10\x81V[4\x80\x15a\x0B\xD6W__\xFD[Pa\x05&_Q` aL,_9_Q\x90_R\x81V[4\x80\x15a\x0B\xF6W__\xFD[Pa\x04 a\x0C\x056`\x04aC!V[a%\xE4V[4\x80\x15a\x0C\x15W__\xFD[Pa\x05&`\x13`\x01`\xFF\x1B\x03\x81V[4\x80\x15a\x0C/W__\xFD[Pa\x0CYa\x0C>6`\x04aC!V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\xF8\x92\x91\x90aGVV[4\x80\x15a\x0CrW__\xFD[P`\x02Ta\x08j\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0C\xB6WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0C\xC4a&lV[a\x0C\xCD\x82a&\x9EV[3_\x82\x90\x03a\x0C\xEFW`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\r\x12W`@Qc})\x871`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r`W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x84\x91\x90aG\x86V[\x90P\x82\x81\x10\x15a\r\xB6W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\r\xCE\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a'\x1FV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\r\xF5\x90\x84\x90aG\xB1V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x0E0\x90\x84\x90aG\xB1V[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0EH\x91\x90aG\xB1V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\x0E\x94\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0E\xAAa&lV[a\x0E\xB33a&\x9EV[a\x0E\xBC\x81a'\xBCV[_\x81\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0E\xEBW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F7\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PV[a\x0FJa&lV[a\x0FS3a&\x9EV[a\x0F\\\x82a'\xBCV[_\x82\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0F\x8BW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x94\x81a\x10FV[_\x82\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F\xE0\x90\x85\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x10!\x91\x90aF\xF1V[`@Q\x80\x91\x03\x90\xA2PPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x81\x90\x15\x80\x15\x90a\x10[WPa\x02\0\x81Q\x11\x15[a\x10xW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x19\x90[\x80\x15a\x10\xDDW\x82a\x10\x90`\x01\x83aG\xC4V[\x81Q\x81\x10a\x10\xA0Wa\x10\xA0aG\xD7V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x1D`\xF9\x1B\x03a\x10\xCBWa\x10\xC4`\x01\x82aG\xC4V[\x91Pa\x10\xDDV[\x80a\x10\xD5\x81aG\xEBV[\x91PPa\x10~V[P_\x19\x81\x14\x15\x80\x15a\x10\xEEWP_\x81\x11[a\x11\x0BW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01\x82\x84Qa\x11\x1B\x91\x90aG\xC4V[a\x11%\x91\x90aG\xC4V[\x90P_\x81\x11\x80\x15a\x117WP`\x05\x81\x11\x15[a\x11TW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80a\x11a\x84`\x01aG\xB1V[\x90P[\x84Q\x81\x10\x15a\x11\xEAW_\x85\x82\x81Q\x81\x10a\x11\x80Wa\x11\x80aG\xD7V[\x01` \x01Q`\xF8\x1C\x90P`0\x81\x10\x80\x15\x90a\x11\x9FWP`9\x81`\xFF\x16\x11\x15[a\x11\xBCW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xC7`0\x82aH\0V[`\xFF\x16a\x11\xD5\x84`\naH\x19V[a\x11\xDF\x91\x90aG\xB1V[\x92PP`\x01\x01a\x11dV[P`\x01\x82\x11\x80\x15a\x12)WP\x83a\x12\x02\x84`\x01aG\xB1V[\x81Q\x81\x10a\x12\x12Wa\x12\x12aG\xD7V[` \x91\x01\x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x03`\xFC\x1B\x14[\x15a\x12GW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x11\x80\x15a\x12XWPa\xFF\xFF\x81\x11\x15[a\x12uW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[_a\x12\x86\x81a(3V[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\x12\xABWPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\x12\xC9W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x18a&lV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x13RW`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x13sW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x13\xBBW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x13\xFF\x90\x84\x90aG\xC4V[\x90\x91UPP`\x02Ta\x14\x1B\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a(=V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\x0E\x94\x91\x81R` \x01\x90V[_\x90\x81R_Q` aLL_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[_a\x14\x8A\x81a(3V[_\x82a\xFF\xFF\x16\x11\x80\x15a\x14\xA3WPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x14\xC0W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\x13\x04V[\x81a\x15\x16Wa\x15\x12\x81a%\xE4V[PPV[a\x15\x12\x82\x82a(\xC6V[\x81a\x15>W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x12\x82\x82a(\xE2V[a\x15Pa)\x15V[_Q` aL\x8C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x15\x86WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x15\xA4W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x90\x81\x17`\x01`@\x1B\x17`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01a\x13\x04V[_a\x15\xF5\x81a(3V[_\x82\x11\x80\x15a\x16\x08WPc\x01\xE13\x80\x82\x11\x15[a\x16%W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\x13\x04V[a\x16ba&lV[3a\x16l\x81a&\x9EV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x16\x93W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x16\xD5W`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x17aW`\x01\x82\x01T\x80\x15\x80a\x17\x03WP`\tTa\x16\xFF\x90\x82aG\xB1V[B\x10\x15[a\x17 W`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x171\x90a\xFF\xFF\x16\x83aH0V[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x17YW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x17\xD0\x81a(3V[`\x01\x82\x10\x15a\x17\xF2W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\x13\x04V[_Q` aL,_9_Q\x90_Ra\x18>\x81a(3V[a\x18Fa)GV[PV[a\x18Qa&lV[a\x18Z\x82a&\x9EV[3_\x82\x90\x03a\x18|W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x18\xBFW`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x19\x08W`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\xADV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x19$\x83aHJV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x19\x9D\x91\x90aG\xC4V[\x90\x91UPP`\x08T_\x90a\x19\xB1\x90BaG\xB1V[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x1AA\x90\x84\x90aG\xC4V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x1AY\x91\x90aG\xC4V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x1A\xC2a)\xA6V[a\x1A\xCB\x82a*JV[a\x15\x12\x82\x82a*TV[a\x1A\xDDa)\x15V[_Q` aL\x8C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1B\x13WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1B1W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x1ByW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1B\xA0W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xA8a+\x10V[a\x1B\xB0a+\x18V[a\x1B\xC7_Q` aL,_9_Q\x90_R\x88a+(V[Pa\x1B\xD2_\x87a+(V[P_a\x1B\xDCa bV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1C\0Wa\x1C\0\x87a+\xC9V[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x1C@\x85\x85a,9V[a\x1CI\x86a-\xCEV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x1C\x90a.]V[P_Q` aL\x0C_9_Q\x90_R\x90V[a\x1C\xAAa&lV[3a\x1C\xB4\x81a.\xA6V[a\x1C\xBD\x88a.\xF3V[a\x1C\xC7\x89\x89a/\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xF9\x81\x89\x8Ca/\xFFV[\x86Q`@\x14a\x1D\x1BW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x87\x16\x11\x15a\x1DBW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1DK\x85a%\xBFV[a\x1DT\x84a'\xBCV[_\x84\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x1D\x83W`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x8C\x83a\x10FV[`\x01`\x04_a\x1D\x9A\x8Da \xC6V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D\xCB\x8Ca1\x08V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x1E\x12Wa\x1E\x12aGBV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x1EXWa\x1EXaGBV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x89\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x83R\x86\x84 \x95Q\x86Ta\xFF\xFF\x19\x16\x95\x16\x94\x90\x94\x17\x85UQ`\x01\x94\x85\x01U\x89\x82R`\x11\x90R\x83\x90 \x80T`\xFF\x19\x16\x90\x92\x17\x90\x91U\x90Q\x90\x91P\x7F\xBF\x14\xCD\x7F\xEApC]BO\x92\xF7\xA3\xD0\x11\t\xA5\x83D\x9Dq\x88\x98\xA6\xA9i\x87\x9CTv\xEC\x14\x90a\x1E\xFA\x90\x8D\x90\x8D\x90\x8B\x90\x8E\x90\x8E\x90\x8D\x90\x8D\x90\x8D\x90aHtV[`@Q\x80\x91\x03\x90\xA2PPPPPPPPPPV[a\x1F\x16a&lV[3a\x1F \x81a&\x9EV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x1FR\x90BaG\xB1V[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x1F\x8E\x90\x84\x90aG\xC4V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01a\x10!V[a\x1F\xD6a)\x15V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aL,_9_Q\x90_Ra \x06\x81a(3V[a\x18Fa1,V[a \x16a&lV[3a  \x81a&\x9EV[a )\x82a%\xBFV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x10!\x91\x90aF\xF1V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[_\x91\x82R_Q` aLL_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a!\x03\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a!(a&lV[a!13a&\x9EV[a!:\x81a\x10FV[3`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x0F7\x91\x90aF\xF1V[a!{a&lV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a!\xC0W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\"\x08W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\"{\x91\x16\x84\x84a(=V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\"\xCA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\"\xE0a&lV[3a\"\xEA\x81a&\x9EV[a\"\xF3\x84a.\xF3V[a\"\xFD\x85\x85a/\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa#/\x81\x85\x88a/\xFFV[\x82Q`@\x14a#QW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a#_\x89a \xC6V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a#\x90\x88a1\x08V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa#\xF2\x94\x93\x92\x91\x90aI\x19V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a$MW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aL\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a$\xC4WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a$\xDFWP0;\x15[\x90P\x81\x15\x80\x15a$\xEDWP\x80\x15[\x15a%\x0BW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a%5W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a%>\x86a1tV[a%Fa+\x10V[a%Na1\x85V[a%Y\x89\x89\x89a2cV[\x83\x15a%\x8CW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a%\xB5W`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x12\x82\x82a3\x0EV[\x80Qa\x08\0\x81\x11\x15a\x15\x12W`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a%\xEE\x81a(3V[`\x01`\x01`\xA0\x1B\x03\x82\x16a&\x17W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\xADV[_a& a bV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a&IWa&D\x83a3*V[PPPV[a&S_\x84a(\xC6V[a&\\\x83a3*V[a&f_\x82a3dV[PPPPV[_Q` aLl_9_Q\x90_RT`\xFF\x16\x15a&\x9CW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a&\xCFWa&\xCFaGBV[\x03a&\xEDW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a'\x01Wa'\x01aGBV[\x03a\x15\x12W`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a'xWP\x83;\x15=\x17\x15[\x80a\x12uW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\r\xADV[_` [\x80\x15a(\0W\x82a'\xD2`\x01\x83aG\xC4V[` \x81\x10a'\xE2Wa'\xE2aG\xD7V[\x1A`\x08\x92\x90\x92\x1B\x91\x90\x91\x17\x90\x80a'\xF8\x81aG\xEBV[\x91PPa'\xC0V[P\x80\x15\x80\x15\x90a(\x16WP`\x13`\x01`\xFF\x1B\x03\x81\x10[a\x15\x12W`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18F\x813a3\xDDV[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a(\x87WP\x82;\x15=\x17\x15[\x80a&fW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\r\xADV[a(\xCF\x82a\x14`V[a(\xD8\x81a(3V[a&f\x83\x83a+(V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a)\x0BW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a&D\x82\x82a3dV[3a)\x1Ea bV[`\x01`\x01`\xA0\x1B\x03\x16\x14a&\x9CW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\xADV[a)Oa4\x16V[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a*,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a* _Q` aL\x0C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a&\x9CW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x15\x12\x81a(3V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a*\xAEWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra*\xAB\x91\x81\x01\x90aG\x86V[`\x01[a*\xD6W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\xADV[_Q` aL\x0C_9_Q\x90_R\x81\x14a+\x06W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\xADV[a&D\x83\x83a4EV[a&\x9Ca4\x9AV[a+ a4\x9AV[a&\x9Ca4\xD0V[__Q` aLL_9_Q\x90_Ra+A\x84\x84a \x90V[a+\xC0W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua+v3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0C\xB6V[_\x91PPa\x0C\xB6V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[_[\x81\x81\x10\x15a&DW_\x83\x83\x83\x81\x81\x10a,VWa,VaG\xD7V[a,l\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91PaC!V[\x90P_\x84\x84\x84\x81\x81\x10a,\x81Wa,\x81aG\xD7V[\x90P`@\x02\x01` \x01` \x81\x01\x90a,\x99\x91\x90aC\xE3V[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a,\xC2W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a,\xF3Wa,\xF3aGBV[\x03a-\x11W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a-RWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a-}W`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\r\xADV[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a,;V[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a.\x14W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.8\x91\x90aG\x86V[\x81\x11\x15a.XW`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a&\x9CW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a.\xD5Wa.\xD5aGBV[\x14a\x18FW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a/GWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a/eW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x18FW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a/\x92\x84a \xC6V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a/\xC2W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a/\xCE\x83a1\x08V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x15\x12W`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a0(W`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a09WP` \x81\x01Q\x15[\x80\x15a0GWP`@\x81\x01Q\x15[\x80\x15a0UWP``\x81\x01Q\x15[\x15a0sW`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0|\x82a4\xF0V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aK\xA8`$\x919\x90P_\x84\x82`@Q` \x01a0\xAC\x92\x91\x90aI\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a0\xC7\x82a5WV[\x90Pa0\xE4\x81\x85a0\xD7\x88a6DV[a0\xDFa6\xBBV[a7\x88V[a1\0W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a!\x03\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a14a&lV[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a)\x88V[a1|a4\x9AV[a\x18F\x81a87V[_Q` aL\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a1\xB6WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a1\xD1WP0;\x15[\x90P\x81\x15\x80\x15a1\xDFWP\x80\x15[\x15a1\xFDW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a2'W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x12uW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a2\x8AW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a2\xB1W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a3\x06W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a3\x17\x82a\x14`V[a3 \x81a(3V[a&f\x83\x83a3dV[a32a)\x15V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3[W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\xADV[a\x18F\x81a+\xC9V[__Q` aLL_9_Q\x90_Ra3}\x84\x84a \x90V[\x15a+\xC0W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0C\xB6V[a3\xE7\x82\x82a \x90V[a\x15\x12W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\r\xADV[_Q` aLl_9_Q\x90_RT`\xFF\x16a&\x9CW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4N\x82a8?V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a4\x92Wa&D\x82\x82a8\xA2V[a\x15\x12a9\x14V[_Q` aL\x8C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a&\x9CW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4\xD8a4\x9AV[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[\x80Q` \x82\x01Q_\x91_Q` aK\xCC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a5\x16WPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a&DW`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a5t\x83a93V[\x90P_Q` aK\xCC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a5\x9BWa5\x9BaI\xAAV[\x84\x82\t\x90P\x82\x80a5\xAEWa5\xAEaI\xAAV[\x82\x82\x08\x90P__a5\xBE\x83a;;V[\x92P\x90P[\x80a6'W\x84\x80a5\xD6Wa5\xD6aI\xAAV[`\x01\x87\x08\x95P\x84\x80a5\xEAWa5\xEAaI\xAAV[\x86\x87\t\x92P\x84\x80a5\xFDWa5\xFDaI\xAAV[\x86\x84\t\x92P\x84\x80a6\x10Wa6\x10aI\xAAV[\x84\x84\x08\x92Pa6\x1E\x83a;;V[\x92P\x90Pa5\xC3V[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a6kWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aK\xCC_9_Q\x90_R\x84` \x01Qa6\x9C\x91\x90aI\xBEV[a6\xB3\x90_Q` aK\xCC_9_Q\x90_RaG\xC4V[\x90R\x92\x91PPV[a6\xE2`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a8+W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a32a4\x9AV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a8tW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\xADV[_Q` aL\x0C_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa8\xBE\x91\x90aI\xDDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a8\xF6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a8\xFBV[``\x91P[P\x91P\x91Pa9\x0B\x85\x83\x83a<\x03V[\x95\x94PPPPPV[4\x15a&\x9CW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a9>\x83a<bV[\x80Q\x90\x91P`0\x81\x14a9SWa9SaI\xE8V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a9lWa9la@\xBEV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a9\x96W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a:\x05W\x83`\x01a9\xB0\x83\x86aG\xC4V[a9\xBA\x91\x90aG\xC4V[\x81Q\x81\x10a9\xCAWa9\xCAaG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a9\xE7Wa9\xE7aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a9\x9BV[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a:\x95W\x83\x81a:A\x85\x88aG\xC4V[a:K\x91\x90aG\xB1V[\x81Q\x81\x10a:[Wa:[aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a:{Wa:{aG\xD7V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a:-V[P_a:\xA0\x82a?\xADV[\x90Pa\x01\0_Q` aK\xCC_9_Q\x90_R_a:\xBE\x86\x89aG\xC4V[\x90P_[\x81\x81\x10\x15a;+W_\x88`\x01a:\xD8\x84\x86aG\xC4V[a:\xE2\x91\x90aG\xC4V[\x81Q\x81\x10a:\xF2Wa:\xF2aG\xD7V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a;\nWa;\naI\xAAV[\x85\x87\t\x95P\x83\x80a;\x1DWa;\x1DaI\xAAV[\x81\x87\x08\x95PP`\x01\x01a:\xC2V[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` aK\xCC_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a;\xC9W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a;\xE2Wa;\xDF\x83\x82aG\xC4V[\x92P[\x80\x80a;\xF0Wa;\xF0aI\xAAV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[``\x82a<\x18Wa<\x13\x82a@\x14V[a<[V[\x81Q\x15\x80\x15a</WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a<XW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\xADV[P\x80[\x93\x92PPPV[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a<\xA2\x92\x91\x90aI\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a<\xC9\x92\x91\x90aI\xFCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a<\xEB\x91\x90aJ&V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a=\x15\x90\x83\x90\x83\x90` \x01aJ>V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x84Wa=\x84a@\xBEV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a=\xAEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a=\xC5\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a>/W\x81\x81\x81Q\x81\x10a=\xF4Wa=\xF4aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a>\x11Wa>\x11aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a=\xD9V[P_\x84`@Q` \x01a>D\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a>\xD6W_\x83\x82\x81Q\x81\x10a>}Wa>}aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a>\x9AWa>\x9AaG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a>\xBB\x92\x91\x90aJbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a>bV[P\x86\x88\x87`@Q` \x01a>\xEC\x93\x92\x91\x90aJ\x86V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a?\x1A\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a?;\x8A`\xFF\x8D\x16aG\xC4V[\x81\x10\x15a?\x9CW\x82\x81\x81Q\x81\x10a?TWa?TaG\xD7V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a?n\x83\x8DaG\xB1V[\x81Q\x81\x10a?~Wa?~aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a?.V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a@\rW\x83\x81\x81Q\x81\x10a?\xCCWa?\xCCaG\xD7V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a?\xE4\x91\x90aH\x19V[a?\xEF\x90`\x02aK\x9CV[a?\xF9\x91\x90aH\x19V[a@\x03\x90\x83aG\xB1V[\x91P`\x01\x01a?\xB1V[P\x92\x91PPV[\x80Q\x15a@$W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a@MW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a<[W__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a@zW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a@\x90W__\xFD[a@\x99\x83a@dV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a@\xB7W__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a@\xF4Wa@\xF4a@\xBEV[`@R\x90V[_\x82`\x1F\x83\x01\x12aA\tW__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15aA(WaA(a@\xBEV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15aAVWaAVa@\xBEV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15aAmW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[__`@\x83\x85\x03\x12\x15aA\x9AW__\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aA\xB6W__\xFD[aA\xC2\x85\x82\x86\x01a@\xFAV[\x91PP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15aA\xDCW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aA\xFEWaA\xFEa@\xBEV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15aB<W__\xFD[aBDa@\xD2V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a@zW__\xFD[____a\x01 \x85\x87\x03\x12\x15aB\x80W__\xFD[aB\x8A\x86\x86aA\xCCV[\x93PaB\x99\x86`\x80\x87\x01aB,V[\x92PaB\xA8\x86`\xC0\x87\x01aB,V[\x91PaB\xB7a\x01\0\x86\x01aB[V[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15aB\xD2W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aB\xE7W__\xFD[aB\xF3\x84\x82\x85\x01a@\xFAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15aC\x0BW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a<[W__\xFD[_` \x82\x84\x03\x12\x15aC1W__\xFD[a<[\x82a@dV[______a\x01`\x87\x89\x03\x12\x15aCPW__\xFD[aCZ\x88\x88aA\xCCV[\x95PaCi\x88`\x80\x89\x01aB,V[\x94PaCx\x88`\xC0\x89\x01aB,V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\x93W__\xFD[aC\x9F\x89\x82\x8A\x01a@\xFAV[\x93PPaC\xAFa\x01 \x88\x01aB[V[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\xCAW__\xFD[aC\xD6\x89\x82\x8A\x01a@\xFAV[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15aC\xF3W__\xFD[a<[\x82aB[V[__`@\x83\x85\x03\x12\x15aD\rW__\xFD[\x825\x91PaD\x1D` \x84\x01a@dV[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15aD7W__\xFD[aD@\x83a@dV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aA\xB6W__\xFD[_____`\x80\x86\x88\x03\x12\x15aDnW__\xFD[aDw\x86a@dV[\x94PaD\x85` \x87\x01a@dV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xA6W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aD\xB6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xCBW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15aD\xDFW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15aE\x03W__\xFD[aE\r\x85\x85aA\xCCV[\x92PaE\x1C\x85`\x80\x86\x01aB,V[\x91PaE+\x85`\xC0\x86\x01aB,V[\x90P\x92P\x92P\x92V[________a\x01\xA0\x89\x8B\x03\x12\x15aELW__\xFD[aEV\x8A\x8AaA\xCCV[\x97PaEe\x8A`\x80\x8B\x01aB,V[\x96PaEt\x8A`\xC0\x8B\x01aB,V[\x95Pa\x01\0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\x8FW__\xFD[aE\x9B\x8B\x82\x8C\x01a@\xFAV[\x95PPaE\xABa\x01 \x8A\x01aB[V[\x93Pa\x01@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xC6W__\xFD[aE\xD2\x8B\x82\x8C\x01a@\xFAV[\x93PPa\x01`\x89\x015\x91Pa\x01\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xF6W__\xFD[aF\x02\x8B\x82\x8C\x01a@\xFAV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[_`\x80\x82\x84\x03\x12\x15aF\"W__\xFD[a<[\x83\x83aA\xCCV[__`@\x83\x85\x03\x12\x15aF=W__\xFD[aFF\x83a@dV[\x91PaD\x1D` \x84\x01a@dV[____a\x01 \x85\x87\x03\x12\x15aFhW__\xFD[aFr\x86\x86aA\xCCV[\x93PaF\x81\x86`\x80\x87\x01aB,V[\x92PaF\x90\x86`\xC0\x87\x01aB,V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aF\xABW__\xFD[aF\xB7\x87\x82\x88\x01a@\xFAV[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a<[` \x83\x01\x84aF\xC3V[____`\x80\x85\x87\x03\x12\x15aG\x16W__\xFD[aG\x1F\x85a@dV[\x93PaG-` \x86\x01a@dV[\x92P`@\x85\x015\x91PaB\xB7``\x86\x01a@dV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10aGyWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aG\x96W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[\x81\x81\x03\x81\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81aG\xF9WaG\xF9aG\x9DV[P_\x19\x01\x90V[`\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\xB6Wa\x0C\xB6aG\x9DV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03aHkWaHkaG\x9DV[`\x01\x01\x92\x91PPV[\x88Q\x81R` \x80\x8A\x01Q\x90\x82\x01R`@\x80\x8A\x01Q\x90\x82\x01R``\x80\x8A\x01Q\x90\x82\x01R\x87Q`\x80\x82\x01R` \x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x87\x16`\xC0\x82\x01R\x85Q`\xE0\x82\x01R` \x86\x01Qa\x01\0\x82\x01Ra\x01\xA0a\x01 \x82\x01R_aH\xDBa\x01\xA0\x83\x01\x87aF\xC3V[\x82\x81\x03a\x01@\x84\x01RaH\xEE\x81\x87aF\xC3V[\x90P\x84a\x01`\x84\x01R\x82\x81\x03a\x01\x80\x84\x01RaI\n\x81\x85aF\xC3V[\x9B\x9APPPPPPPPPPPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aIua\x01 \x83\x01\x84aF\xC3V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_aB\xF3aI\xA4\x83\x86aI\x7FV[\x84aI\x7FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aI\xD8WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_a<[\x82\x84aI\x7FV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_aJ\x07\x82\x85aI\x7FV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aJ1\x82\x84aI\x7FV[_\x81R`\x01\x01\x93\x92PPPV[_aJI\x82\x85aI\x7FV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aJm\x82\x85aI\x7FV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aJ\x91\x82\x86aI\x7FV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[`\x01\x81[`\x01\x84\x11\x15aJ\xF4W\x80\x85\x04\x81\x11\x15aJ\xD8WaJ\xD8aG\x9DV[`\x01\x84\x16\x15aJ\xE6W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aJ\xBDV[\x93P\x93\x91PPV[_\x82aK\nWP`\x01a\x0C\xB6V[\x81aK\x16WP_a\x0C\xB6V[\x81`\x01\x81\x14aK,W`\x02\x81\x14aK6WaKRV[`\x01\x91PPa\x0C\xB6V[`\xFF\x84\x11\x15aKGWaKGaG\x9DV[PP`\x01\x82\x1Ba\x0C\xB6V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aKuWP\x81\x81\na\x0C\xB6V[aK\x81_\x19\x84\x84aJ\xB9V[\x80_\x19\x04\x82\x11\x15aK\x94WaK\x94aG\x9DV[\x02\x93\x92PPPV[_a<[\x83\x83aJ\xFCV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD26\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08#\0\n",
4550    );
4551    /// The runtime bytecode of the contract, as deployed on the network.
4552    ///
4553    /// ```text
4554    ///0x6080604052600436106103c9575f3560e01c80636ad28e9f116101f4578063b3e6ebd511610113578063d9cc7d26116100a8578063e63ab1e911610078578063e63ab1e914610bcb578063f2fde38b14610beb578063f6777a1014610c0a578063fa52c7d814610c24578063fc0c546a14610c67575f5ffd5b8063d9cc7d2614610b6c578063e3f237e614610b81578063e4d1fb9414610ba0578063e62977f814610bb6575f5ffd5b8063bd49c35f116100e3578063bd49c35f14610ae3578063be20309414610af8578063c64814dd14610b17578063d547741f14610b4d575f5ffd5b8063b3e6ebd514610a27578063b5700e6814610a55578063b5ecb34414610a74578063bb60bfb014610a9f575f5ffd5b80639e9a8f3111610189578063a2d78dd511610159578063a2d78dd51461095a578063a3066aab146109ac578063ac5c2ad0146109cb578063ad3cb1cc146109ea575f5ffd5b80639e9a8f31146108c05780639ec9c138146108d55780639ffb6b43146108f4578063a217fddf14610947575f5ffd5b8063870c8f26116101c4578063870c8f26146108375780638da5cb5b1461085657806391d14854146108825780639b30a5e6146108a1575f5ffd5b80636ad28e9f146107cc578063715018a6146107fa57806372e9c9341461080e5780638456cb5914610823575f5ffd5b8063394b348f116102eb57806352780b6e116102805780635c975abb116102505780635c975abb146107335780635f8754a614610756578063617066e5146107845780636887cd36146107995780636a911ccf146107b8575f5ffd5b806352780b6e146106b857806352d1902d146106d75780635544c2f1146106eb5780635a2f51fd14610705575f5ffd5b80633f3bb366116102bb5780633f3bb366146106455780633f4ba83a146106725780634d99dd16146106865780634f1ef286146106a5575f5ffd5b8063394b348f146105d45780633b2b7ffa146105f35780633e732eba146106125780633e9df9b514610631575f5ffd5b80632140fecd116103615780632f2ff15d116103315780632f2ff15d1461056d5780632fe287591461058c57806336568abe146105a157806338e454b1146105c0575f5ffd5b80632140fecd146104e8578063248a9ca3146105075780632b9e5c8a146105345780632dc9bac61461054e575f5ffd5b80630d8e6e2c1161039c5780630d8e6e2c1461046057806313b9057a1461048b57806315f31835146104aa5780631a20cd63146104c9575f5ffd5b806301ffc9a7146103cd578063026e402b14610401578063073d25fc146104225780630cb2976414610441575b5f5ffd5b3480156103d8575f5ffd5b506103ec6103e736600461403d565b610c86565b60405190151581526020015b60405180910390f35b34801561040c575f5ffd5b5061042061041b36600461407f565b610cbc565b005b34801561042d575f5ffd5b5061042061043c3660046140a7565b610ea2565b34801561044c575f5ffd5b5061042061045b366004614189565b610f42565b34801561046b575f5ffd5b5060408051600381525f60208201819052918101919091526060016103f8565b348015610496575f5ffd5b506104206104a536600461426c565b61102d565b3480156104b5575f5ffd5b506104206104c43660046142c2565b611046565b3480156104d4575f5ffd5b506104206104e33660046142fb565b61127c565b3480156104f3575f5ffd5b50610420610502366004614321565b611310565b348015610512575f5ffd5b506105266105213660046140a7565b611460565b6040519081526020016103f8565b34801561053f575f5ffd5b506104206104a536600461433a565b348015610559575f5ffd5b506104206105683660046143e3565b611480565b348015610578575f5ffd5b506104206105873660046143fc565b611504565b348015610597575f5ffd5b5061052661080081565b3480156105ac575f5ffd5b506104206105bb3660046143fc565b611520565b3480156105cb575f5ffd5b50610420611548565b3480156105df575f5ffd5b506104206105ee3660046140a7565b6115eb565b3480156105fe575f5ffd5b5061042061060d3660046143e3565b61165a565b34801561061d575f5ffd5b5061042061062c3660046140a7565b6117c6565b34801561063c575f5ffd5b506105265f5481565b348015610650575f5ffd5b50600a5461065f9061ffff1681565b60405161ffff90911681526020016103f8565b34801561067d575f5ffd5b50610420611827565b348015610691575f5ffd5b506104206106a036600461407f565b611849565b6104206106b3366004614426565b611aba565b3480156106c3575f5ffd5b506104206106d236600461445a565b611ad5565b3480156106e2575f5ffd5b50610526611c87565b3480156106f6575f5ffd5b506104206104a53660046144f0565b348015610710575f5ffd5b506103ec61071f3660046140a7565b60116020525f908152604090205460ff1681565b34801561073e575f5ffd5b505f516020614c6c5f395f51905f525460ff166103ec565b348015610761575f5ffd5b506103ec6107703660046140a7565b600e6020525f908152604090205460ff1681565b34801561078f575f5ffd5b5061052661020081565b3480156107a4575f5ffd5b506104206107b3366004614534565b611ca2565b3480156107c3575f5ffd5b50610420611f0e565b3480156107d7575f5ffd5b506107e26202a30081565b6040516001600160401b0390911681526020016103f8565b348015610805575f5ffd5b50610420611fce565b348015610819575f5ffd5b50610526600c5481565b34801561082e575f5ffd5b50610420611fef565b348015610842575f5ffd5b506104206108513660046142c2565b61200e565b348015610861575f5ffd5b5061086a612062565b6040516001600160a01b0390911681526020016103f8565b34801561088d575f5ffd5b506103ec61089c3660046143fc565b612090565b3480156108ac575f5ffd5b506105266108bb366004614612565b6120c6565b3480156108cb575f5ffd5b5061052660085481565b3480156108e0575f5ffd5b506104206108ef3660046142c2565b612120565b3480156108ff575f5ffd5b5061092d61090e366004614321565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016103f8565b348015610952575f5ffd5b506105265f81565b348015610965575f5ffd5b5061099761097436600461462c565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103f8565b3480156109b7575f5ffd5b506104206109c6366004614321565b612173565b3480156109d6575f5ffd5b506104206109e5366004614654565b6122d8565b3480156109f5575f5ffd5b50610a1a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103f891906146f1565b348015610a32575f5ffd5b506103ec610a413660046140a7565b60046020525f908152604090205460ff1681565b348015610a60575f5ffd5b5060015461086a906001600160a01b031681565b348015610a7f575f5ffd5b50610526610a8e366004614321565b60056020525f908152604090205481565b348015610aaa575f5ffd5b50610abe610ab936600461462c565b612402565b604080516001600160401b0390941684526020840192909252908201526060016103f8565b348015610aee575f5ffd5b50610526600b5481565b348015610b03575f5ffd5b50610420610b12366004614703565b612493565b348015610b22575f5ffd5b50610526610b3136600461462c565b600660209081525f928352604080842090915290825290205481565b348015610b58575f5ffd5b50610420610b673660046143fc565b612597565b348015610b77575f5ffd5b5061052660095481565b348015610b8c575f5ffd5b50610420610b9b3660046142c2565b6125bf565b348015610bab575f5ffd5b506107e26212750081565b348015610bc1575f5ffd5b5061065f61271081565b348015610bd6575f5ffd5b506105265f516020614c2c5f395f51905f5281565b348015610bf6575f5ffd5b50610420610c05366004614321565b6125e4565b348015610c15575f5ffd5b506105266013600160ff1b0381565b348015610c2f575f5ffd5b50610c59610c3e366004614321565b60036020525f90815260409020805460019091015460ff1682565b6040516103f8929190614756565b348015610c72575f5ffd5b5060025461086a906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610cb657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610cc461266c565b610ccd8261269e565b335f829003610cef57604051631f2a200560e01b815260040160405180910390fd5b600c54821015610d1257604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610d60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d849190614786565b905082811015610db65760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610dce906001600160a01b031683308661271f565b6001600160a01b0384165f9081526003602052604081208054859290610df59084906147b1565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610e309084906147b1565b9250508190555082600b5f828254610e4891906147b1565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610e9491815260200190565b60405180910390a350505050565b610eaa61266c565b610eb33361269e565b610ebc816127bc565b5f8181526011602052604090205460ff1615610eeb57604051632c8d903b60e21b815260040160405180910390fd5b5f8181526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610f379084815260200190565b60405180910390a250565b610f4a61266c565b610f533361269e565b610f5c826127bc565b5f8281526011602052604090205460ff1615610f8b57604051632c8d903b60e21b815260040160405180910390fd5b610f9481611046565b5f8281526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610fe09085815260200190565b60405180910390a2336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb228260405161102191906146f1565b60405180910390a25050565b60405163c2d7f81360e01b815260040160405180910390fd5b805181901580159061105b5750610200815111155b61107857604051631e5e435f60e21b815260040160405180910390fd5b80515f19905b80156110dd57826110906001836147c4565b815181106110a0576110a06147d7565b01602001516001600160f81b031916601d60f91b036110cb576110c46001826147c4565b91506110dd565b806110d5816147eb565b91505061107e565b505f1981141580156110ee57505f81115b61110b57604051631e5e435f60e21b815260040160405180910390fd5b5f600182845161111b91906147c4565b61112591906147c4565b90505f81118015611137575060058111155b61115457604051631e5e435f60e21b815260040160405180910390fd5b5f806111618460016147b1565b90505b84518110156111ea575f858281518110611180576111806147d7565b016020015160f81c90506030811080159061119f575060398160ff1611155b6111bc57604051631e5e435f60e21b815260040160405180910390fd5b6111c7603082614800565b60ff166111d584600a614819565b6111df91906147b1565b925050600101611164565b506001821180156112295750836112028460016147b1565b81518110611212576112126147d7565b6020910101516001600160f81b031916600360fc1b145b1561124757604051631e5e435f60e21b815260040160405180910390fd5b5f81118015611258575061ffff8111155b61127557604051631e5e435f60e21b815260040160405180910390fd5b5050505050565b5f61128681612833565b6202a3006001600160401b03831610806112ab5750621275006001600160401b038316115b156112c95760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b61131861266c565b6001600160a01b0381165f908152600560205260408120543391819003611352576040516379298a5360e11b815260040160405180910390fd5b8042101561137357604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938616835292905290812054908190036113bb57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f8181526006602090815260408083209488168352938152838220829055918152600390915290812080548392906113ff9084906147c4565b909155505060025461141b906001600160a01b0316848361283d565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610e9491815260200190565b5f9081525f516020614c4c5f395f51905f52602052604090206001015490565b5f61148a81612833565b5f8261ffff161180156114a3575061271061ffff831611155b6114c05760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001611304565b8161151657611512816125e4565b5050565b61151282826128c6565b8161153e57604051638b78631d60e01b815260040160405180910390fd5b61151282826128e2565b611550612915565b5f516020614c8c5f395f51905f52805460039190600160401b900460ff1680611586575080546001600160401b03808416911610155b156115a45760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b038316908117600160401b1760ff60401b191682556040519081525f516020614bec5f395f51905f5290602001611304565b5f6115f581612833565b5f8211801561160857506301e133808211155b6116255760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001611304565b61166261266c565b3361166c8161269e565b61271061ffff831611156116935760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff9081169084168190036116d557604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff16111561176157600182015480158061170357506009546116ff90826147b1565b4210155b611720576040516316eb94cb60e01b815260040160405180910390fd5b600a546117319061ffff1683614830565b61ffff168561ffff161115611759576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f6117d081612833565b60018210156117f25760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001611304565b5f516020614c2c5f395f51905f5261183e81612833565b611846612947565b50565b61185161266c565b61185a8261269e565b335f82900361187c57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156118bf5760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561190857604051639266535160e01b815260048101829052602401610dad565b600f80545f916001600160401b0390911690826119248361484a565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f82825461199d91906147c4565b90915550506008545f906119b190426147b1565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611a419084906147c4565b9250508190555084600b5f828254611a5991906147c4565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611ac26129a6565b611acb82612a4a565b6115128282612a54565b611add612915565b5f516020614c8c5f395f51905f52805460029190600160401b900460ff1680611b13575080546001600160401b03808416911610155b15611b315760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b038616611b795760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038716611ba05760405163d92e233d60e01b815260040160405180910390fd5b611ba8612b10565b611bb0612b18565b611bc75f516020614c2c5f395f51905f5288612b28565b50611bd25f87612b28565b505f611bdc612062565b9050806001600160a01b0316876001600160a01b031614611c0057611c0087612bc9565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c55611c408585612c39565b611c4986612dce565b50805460ff60401b191681556040516001600160401b03831681525f516020614bec5f395f51905f529060200160405180910390a150505050505050565b5f611c90612e5d565b505f516020614c0c5f395f51905f5290565b611caa61266c565b33611cb481612ea6565b611cbd88612ef3565b611cc78989612f86565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cf981898c612fff565b8651604014611d1b57604051634247068760e01b815260040160405180910390fd5b61271061ffff87161115611d425760405163dc81db8560e01b815260040160405180910390fd5b611d4b856125bf565b611d54846127bc565b5f8481526011602052604090205460ff1615611d8357604051632c8d903b60e21b815260040160405180910390fd5b611d8c83611046565b600160045f611d9a8d6120c6565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611dcb8c613108565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115611e1257611e12614742565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e5857611e58614742565b02179055505060408051808201825261ffff89811682525f60208084018281526001600160a01b038916808452600d83528684209551865461ffff191695169490941785555160019485015589825260119052839020805460ff191690921790915590519091507fbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec1490611efa908d908d908b908e908e908d908d908d90614874565b60405180910390a250505050505050505050565b611f1661266c565b33611f208161269e565b6001600160a01b0381165f908152600360205260408120600101805460ff19166002179055600854611f5290426147b1565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b80549394509092909190611f8e9084906147c4565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab90602001611021565b611fd6612915565b6040516317d5c96560e11b815260040160405180910390fd5b5f516020614c2c5f395f51905f5261200681612833565b61184661312c565b61201661266c565b336120208161269e565b612029826125bf565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c348360405161102191906146f1565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f516020614c4c5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001612103949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b61212861266c565b6121313361269e565b61213a81611046565b336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb2282604051610f3791906146f1565b61217b61266c565b6001600160a01b0381165f90815260076020908152604080832033808552925282205490918190036121c057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209386168352929052206001015442101561220857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b039091169161227b9116848461283d565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522856040516122ca91815260200190565b60405180910390a450505050565b6122e061266c565b336122ea8161269e565b6122f384612ef3565b6122fd8585612f86565b604080516001600160a01b03831660208201525f9101604051602081830303815290604052905061232f818588612fff565b825160401461235157604051634247068760e01b815260040160405180910390fd5b600160045f61235f896120c6565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61239088613108565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5878787876040516123f29493929190614919565b60405180910390a2505050505050565b6001600160a01b038083165f9081526007602090815260408083209385168352929052908120805482918291820361244d57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f516020614c8c5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156124c45750825b90505f826001600160401b031660011480156124df5750303b155b9050811580156124ed575080155b1561250b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561253557845460ff60401b1916600160401b1785555b61253e86613174565b612546612b10565b61254e613185565b612559898989613263565b831561258c57845460ff60401b19168555604051600181525f516020614bec5f395f51905f529060200160405180910390a15b505050505050505050565b816125b55760405163b0b5fb9960e01b815260040160405180910390fd5b611512828261330e565b80516108008111156115125760405163239ff57f60e01b815260040160405180910390fd5b5f6125ee81612833565b6001600160a01b03821661261757604051631e4fbdf760e01b81525f6004820152602401610dad565b5f612620612062565b9050826001600160a01b0316816001600160a01b031603612649576126448361332a565b505050565b6126535f846128c6565b61265c8361332a565b6126665f82613364565b50505050565b5f516020614c6c5f395f51905f525460ff161561269c5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff16908160028111156126cf576126cf614742565b036126ed5760405163508a793f60e01b815260040160405180910390fd5b600281600281111561270157612701614742565b036115125760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156127785750833b153d17155b806112755760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610dad565b5f60205b801561280057826127d26001836147c4565b602081106127e2576127e26147d7565b1a60089290921b9190911790806127f8816147eb565b9150506127c0565b50801580159061281657506013600160ff1b0381105b61151257604051633e4ba13f60e01b815260040160405180910390fd5b61184681336133dd565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156128875750823b153d17155b806126665760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610dad565b6128cf82611460565b6128d881612833565b6126668383612b28565b6001600160a01b038116331461290b5760405163334bd91960e11b815260040160405180910390fd5b6126448282613364565b3361291e612062565b6001600160a01b03161461269c5760405163118cdaa760e01b8152336004820152602401610dad565b61294f613416565b5f516020614c6c5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a2c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a205f516020614c0c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561269c5760405163703e46dd60e11b815260040160405180910390fd5b5f61151281612833565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612aae575060408051601f3d908101601f19168201909252612aab91810190614786565b60015b612ad657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610dad565b5f516020614c0c5f395f51905f528114612b0657604051632a87526960e21b815260048101829052602401610dad565b6126448383613445565b61269c61349a565b612b2061349a565b61269c6134d0565b5f5f516020614c4c5f395f51905f52612b418484612090565b612bc0575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612b763390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cb6565b5f915050610cb6565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015612644575f838383818110612c5657612c566147d7565b612c6c9260206040909202019081019150614321565b90505f848484818110612c8157612c816147d7565b9050604002016020016020810190612c9991906143e3565b905061271061ffff82161115612cc25760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff1690816002811115612cf357612cf3614742565b03612d115760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d6020526040902060010154158015612d5257506001600160a01b0383165f908152600d602052604090205461ffff16155b8390612d7d5760405163050814e160e41b81526001600160a01b039091166004820152602401610dad565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612c3b565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612e14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e389190614786565b811115612e5857604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461269c5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115612ed557612ed5614742565b146118465760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111580612f4757507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b15612f65576040516306cf438f60e01b815260040160405180910390fd5b80515f03611846576040516306cf438f60e01b815260040160405180910390fd5b60045f612f92846120c6565b815260208101919091526040015f205460ff1615612fc25760405162da8a5760e11b815260040160405180910390fd5b600e5f612fce83613108565b815260208101919091526040015f205460ff16156115125760405163ae493b0360e01b815260040160405180910390fd5b81516020830151159015161561302857604051633a13919960e11b815260040160405180910390fd5b805115801561303957506020810151155b801561304757506040810151155b801561305557506060810151155b1561307357604051635e4362cd60e11b815260040160405180910390fd5b61307c826134f0565b5f604051806060016040528060248152602001614ba86024913990505f84826040516020016130ac929190614996565b60405160208183030381529060405290505f6130c782613557565b90506130e481856130d788613644565b6130df6136bb565b613788565b6131005760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001612103929190918252602082015260400190565b61313461266c565b5f516020614c6c5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612988565b61317c61349a565b61184681613837565b5f516020614c8c5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156131b65750825b90505f826001600160401b031660011480156131d15750303b155b9050811580156131df575080155b156131fd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561322757845460ff60401b1916600160401b1785555b435f55831561127557845460ff60401b19168555604051600181525f516020614bec5f395f51905f529060200160405180910390a15050505050565b6001600160a01b03831661328a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166132b15760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156133065760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b61331782611460565b61332081612833565b6126668383613364565b613332612915565b6001600160a01b03811661335b57604051631e4fbdf760e01b81525f6004820152602401610dad565b61184681612bc9565b5f5f516020614c4c5f395f51905f5261337d8484612090565b15612bc0575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cb6565b6133e78282612090565b6115125760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610dad565b5f516020614c6c5f395f51905f525460ff1661269c57604051638dfc202b60e01b815260040160405180910390fd5b61344e8261383f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156134925761264482826138a2565b611512613914565b5f516020614c8c5f395f51905f5254600160401b900460ff1661269c57604051631afcd79f60e31b815260040160405180910390fd5b6134d861349a565b5f516020614c6c5f395f51905f52805460ff19169055565b805160208201515f915f516020614bcc5f395f51905f5291159015161561351657505050565b8251602084015182600384858586098509088382830914838210848410161693505050816126445760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f61357483613933565b90505f516020614bcc5f395f51905f5260035f828485099050828061359b5761359b6149aa565b848209905082806135ae576135ae6149aa565b82820890505f5f6135be83613b3b565b925090505b806136275784806135d6576135d66149aa565b60018708955084806135ea576135ea6149aa565b868709925084806135fd576135fd6149aa565b86840992508480613610576136106149aa565b848408925061361e83613b3b565b925090506135c3565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f808252602082015281516020830151159015161561366b575090565b6040518060400160405280835f015181526020015f516020614bcc5f395f51905f52846020015161369c91906149be565b6136b3905f516020614bcc5f395f51905f526147c4565b905292915050565b6136e260405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061382b5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b61333261349a565b806001600160a01b03163b5f0361387457604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610dad565b5f516020614c0c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516138be91906149dd565b5f60405180830381855af49150503d805f81146138f6576040519150601f19603f3d011682016040523d82523d5f602084013e6138fb565b606091505b509150915061390b858383613c03565b95945050505050565b341561269c5760405163b398979f60e01b815260040160405180910390fd5b5f5f61393e83613c62565b805190915060308114613953576139536149e8565b5f816001600160401b0381111561396c5761396c6140be565b6040519080825280601f01601f191660200182016040528015613996576020820181803683370190505b5090505f5b82811015613a05578360016139b083866147c4565b6139ba91906147c4565b815181106139ca576139ca6147d7565b602001015160f81c60f81b8282815181106139e7576139e76147d7565b60200101906001600160f81b03191690815f1a90535060010161399b565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015613a95578381613a4185886147c4565b613a4b91906147b1565b81518110613a5b57613a5b6147d7565b602001015160f81c60f81b60f81c828281518110613a7b57613a7b6147d7565b60ff90921660209283029190910190910152600101613a2d565b505f613aa082613fad565b90506101005f516020614bcc5f395f51905f525f613abe86896147c4565b90505f5b81811015613b2b575f886001613ad884866147c4565b613ae291906147c4565b81518110613af257613af26147d7565b016020015160f81c90508380613b0a57613b0a6149aa565b85870995508380613b1d57613b1d6149aa565b818708955050600101613ac2565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020614bcc5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083613bc957604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613be257613bdf83826147c4565b92505b8080613bf057613bf06149aa565b8384099690961496919550909350505050565b606082613c1857613c1382614014565b613c5b565b8151158015613c2f57506001600160a01b0384163b155b15613c5857604051639996b31560e01b81526001600160a01b0385166004820152602401610dad565b50805b9392505050565b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001613ca2929190614996565b6040516020818303038152906040529050808460f81b604051602001613cc99291906149fc565b604051602081830303815290604052905080604051602001613ceb9190614a26565b60408051601f1981840301815290829052915061010160f01b90613d159083908390602001614a3e565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b03811115613d8457613d846140be565b6040519080825280601f01601f191660200182016040528015613dae576020820181803683370190505b5090505f82604051602001613dc591815260200190565b60408051601f1981840301815291905290505f5b8151811015613e2f57818181518110613df457613df46147d7565b602001015160f81c60f81b838281518110613e1157613e116147d7565b60200101906001600160f81b03191690815f1a905350600101613dd9565b505f84604051602001613e4491815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613ed6575f838281518110613e7d57613e7d6147d7565b602001015160f81c60f81b838381518110613e9a57613e9a6147d7565b602001015160f81c60f81b1890508881604051602001613ebb929190614a62565b60408051601f19818403018152919052985050600101613e62565b50868887604051602001613eec93929190614a86565b60405160208183030381529060405296508680519060200120935083604051602001613f1a91815260200190565b60408051601f1981840301815291905291505f5b613f3b8a60ff8d166147c4565b811015613f9c57828181518110613f5457613f546147d7565b01602001516001600160f81b03191684613f6e838d6147b1565b81518110613f7e57613f7e6147d7565b60200101906001600160f81b03191690815f1a905350600101613f2e565b50919b9a5050505050505050505050565b5f80805b835181101561400d57838181518110613fcc57613fcc6147d7565b602002602001015160ff16816008613fe49190614819565b613fef906002614b9c565b613ff99190614819565b61400390836147b1565b9150600101613fb1565b5092915050565b8051156140245780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f6020828403121561404d575f5ffd5b81356001600160e01b031981168114613c5b575f5ffd5b80356001600160a01b038116811461407a575f5ffd5b919050565b5f5f60408385031215614090575f5ffd5b61409983614064565b946020939093013593505050565b5f602082840312156140b7575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156140f4576140f46140be565b60405290565b5f82601f830112614109575f5ffd5b8135602083015f5f6001600160401b03841115614128576141286140be565b50604051601f19601f85018116603f011681018181106001600160401b0382111715614156576141566140be565b60405283815290508082840187101561416d575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f6040838503121561419a575f5ffd5b8235915060208301356001600160401b038111156141b6575f5ffd5b6141c2858286016140fa565b9150509250929050565b5f608082840312156141dc575f5ffd5b604051608081016001600160401b03811182821017156141fe576141fe6140be565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561423c575f5ffd5b6142446140d2565b823581526020928301359281019290925250919050565b803561ffff8116811461407a575f5ffd5b5f5f5f5f6101208587031215614280575f5ffd5b61428a86866141cc565b9350614299866080870161422c565b92506142a88660c0870161422c565b91506142b7610100860161425b565b905092959194509250565b5f602082840312156142d2575f5ffd5b81356001600160401b038111156142e7575f5ffd5b6142f3848285016140fa565b949350505050565b5f6020828403121561430b575f5ffd5b81356001600160401b0381168114613c5b575f5ffd5b5f60208284031215614331575f5ffd5b613c5b82614064565b5f5f5f5f5f5f6101608789031215614350575f5ffd5b61435a88886141cc565b9550614369886080890161422c565b94506143788860c0890161422c565b93506101008701356001600160401b03811115614393575f5ffd5b61439f89828a016140fa565b9350506143af610120880161425b565b91506101408701356001600160401b038111156143ca575f5ffd5b6143d689828a016140fa565b9150509295509295509295565b5f602082840312156143f3575f5ffd5b613c5b8261425b565b5f5f6040838503121561440d575f5ffd5b8235915061441d60208401614064565b90509250929050565b5f5f60408385031215614437575f5ffd5b61444083614064565b915060208301356001600160401b038111156141b6575f5ffd5b5f5f5f5f5f6080868803121561446e575f5ffd5b61447786614064565b945061448560208701614064565b93506040860135925060608601356001600160401b038111156144a6575f5ffd5b8601601f810188136144b6575f5ffd5b80356001600160401b038111156144cb575f5ffd5b8860208260061b84010111156144df575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215614503575f5ffd5b61450d85856141cc565b925061451c856080860161422c565b915061452b8560c0860161422c565b90509250925092565b5f5f5f5f5f5f5f5f6101a0898b03121561454c575f5ffd5b6145568a8a6141cc565b97506145658a60808b0161422c565b96506145748a60c08b0161422c565b95506101008901356001600160401b0381111561458f575f5ffd5b61459b8b828c016140fa565b9550506145ab6101208a0161425b565b93506101408901356001600160401b038111156145c6575f5ffd5b6145d28b828c016140fa565b93505061016089013591506101808901356001600160401b038111156145f6575f5ffd5b6146028b828c016140fa565b9150509295985092959890939650565b5f60808284031215614622575f5ffd5b613c5b83836141cc565b5f5f6040838503121561463d575f5ffd5b61464683614064565b915061441d60208401614064565b5f5f5f5f6101208587031215614668575f5ffd5b61467286866141cc565b9350614681866080870161422c565b92506146908660c0870161422c565b91506101008501356001600160401b038111156146ab575f5ffd5b6146b7878288016140fa565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613c5b60208301846146c3565b5f5f5f5f60808587031215614716575f5ffd5b61471f85614064565b935061472d60208601614064565b9250604085013591506142b760608601614064565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061477957634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215614796575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cb657610cb661479d565b81810381811115610cb657610cb661479d565b634e487b7160e01b5f52603260045260245ffd5b5f816147f9576147f961479d565b505f190190565b60ff8281168282160390811115610cb657610cb661479d565b8082028115828204841417610cb657610cb661479d565b61ffff8181168382160190811115610cb657610cb661479d565b5f6001600160401b0382166001600160401b03810361486b5761486b61479d565b60010192915050565b885181526020808a0151908201526040808a0151908201526060808a01519082015287516080820152602088015160a082015261ffff871660c0820152855160e082015260208601516101008201526101a06101208201525f6148db6101a08301876146c3565b8281036101408401526148ee81876146c3565b90508461016084015282810361018084015261490a81856146c3565b9b9a5050505050505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f6149756101208301846146c3565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f6142f36149a4838661497f565b8461497f565b634e487b7160e01b5f52601260045260245ffd5b5f826149d857634e487b7160e01b5f52601260045260245ffd5b500690565b5f613c5b828461497f565b634e487b7160e01b5f52600160045260245ffd5b5f614a07828561497f565b5f81526001600160f81b03199390931660018401525050600201919050565b5f614a31828461497f565b5f81526001019392505050565b5f614a49828561497f565b6001600160f01b03199390931683525050600201919050565b5f614a6d828561497f565b6001600160f81b03199390931683525050600101919050565b5f614a91828661497f565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b6001815b6001841115614af457808504811115614ad857614ad861479d565b6001841615614ae657908102905b60019390931c928002614abd565b935093915050565b5f82614b0a57506001610cb6565b81614b1657505f610cb6565b8160018114614b2c5760028114614b3657614b52565b6001915050610cb6565b60ff841115614b4757614b4761479d565b50506001821b610cb6565b5060208310610133831016604e8410600b8410161715614b75575081810a610cb6565b614b815f198484614ab9565b805f1904821115614b9457614b9461479d565b029392505050565b5f613c5b8383614afc56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
4555    /// ```
4556    #[rustfmt::skip]
4557    #[allow(clippy::all)]
4558    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4559        b"`\x80`@R`\x046\x10a\x03\xC9W_5`\xE0\x1C\x80cj\xD2\x8E\x9F\x11a\x01\xF4W\x80c\xB3\xE6\xEB\xD5\x11a\x01\x13W\x80c\xD9\xCC}&\x11a\0\xA8W\x80c\xE6:\xB1\xE9\x11a\0xW\x80c\xE6:\xB1\xE9\x14a\x0B\xCBW\x80c\xF2\xFD\xE3\x8B\x14a\x0B\xEBW\x80c\xF6wz\x10\x14a\x0C\nW\x80c\xFAR\xC7\xD8\x14a\x0C$W\x80c\xFC\x0CTj\x14a\x0CgW__\xFD[\x80c\xD9\xCC}&\x14a\x0BlW\x80c\xE3\xF27\xE6\x14a\x0B\x81W\x80c\xE4\xD1\xFB\x94\x14a\x0B\xA0W\x80c\xE6)w\xF8\x14a\x0B\xB6W__\xFD[\x80c\xBDI\xC3_\x11a\0\xE3W\x80c\xBDI\xC3_\x14a\n\xE3W\x80c\xBE 0\x94\x14a\n\xF8W\x80c\xC6H\x14\xDD\x14a\x0B\x17W\x80c\xD5Gt\x1F\x14a\x0BMW__\xFD[\x80c\xB3\xE6\xEB\xD5\x14a\n'W\x80c\xB5p\x0Eh\x14a\nUW\x80c\xB5\xEC\xB3D\x14a\ntW\x80c\xBB`\xBF\xB0\x14a\n\x9FW__\xFD[\x80c\x9E\x9A\x8F1\x11a\x01\x89W\x80c\xA2\xD7\x8D\xD5\x11a\x01YW\x80c\xA2\xD7\x8D\xD5\x14a\tZW\x80c\xA3\x06j\xAB\x14a\t\xACW\x80c\xAC\\*\xD0\x14a\t\xCBW\x80c\xAD<\xB1\xCC\x14a\t\xEAW__\xFD[\x80c\x9E\x9A\x8F1\x14a\x08\xC0W\x80c\x9E\xC9\xC18\x14a\x08\xD5W\x80c\x9F\xFBkC\x14a\x08\xF4W\x80c\xA2\x17\xFD\xDF\x14a\tGW__\xFD[\x80c\x87\x0C\x8F&\x11a\x01\xC4W\x80c\x87\x0C\x8F&\x14a\x087W\x80c\x8D\xA5\xCB[\x14a\x08VW\x80c\x91\xD1HT\x14a\x08\x82W\x80c\x9B0\xA5\xE6\x14a\x08\xA1W__\xFD[\x80cj\xD2\x8E\x9F\x14a\x07\xCCW\x80cqP\x18\xA6\x14a\x07\xFAW\x80cr\xE9\xC94\x14a\x08\x0EW\x80c\x84V\xCBY\x14a\x08#W__\xFD[\x80c9K4\x8F\x11a\x02\xEBW\x80cRx\x0Bn\x11a\x02\x80W\x80c\\\x97Z\xBB\x11a\x02PW\x80c\\\x97Z\xBB\x14a\x073W\x80c_\x87T\xA6\x14a\x07VW\x80capf\xE5\x14a\x07\x84W\x80ch\x87\xCD6\x14a\x07\x99W\x80cj\x91\x1C\xCF\x14a\x07\xB8W__\xFD[\x80cRx\x0Bn\x14a\x06\xB8W\x80cR\xD1\x90-\x14a\x06\xD7W\x80cUD\xC2\xF1\x14a\x06\xEBW\x80cZ/Q\xFD\x14a\x07\x05W__\xFD[\x80c?;\xB3f\x11a\x02\xBBW\x80c?;\xB3f\x14a\x06EW\x80c?K\xA8:\x14a\x06rW\x80cM\x99\xDD\x16\x14a\x06\x86W\x80cO\x1E\xF2\x86\x14a\x06\xA5W__\xFD[\x80c9K4\x8F\x14a\x05\xD4W\x80c;+\x7F\xFA\x14a\x05\xF3W\x80c>s.\xBA\x14a\x06\x12W\x80c>\x9D\xF9\xB5\x14a\x061W__\xFD[\x80c!@\xFE\xCD\x11a\x03aW\x80c//\xF1]\x11a\x031W\x80c//\xF1]\x14a\x05mW\x80c/\xE2\x87Y\x14a\x05\x8CW\x80c6V\x8A\xBE\x14a\x05\xA1W\x80c8\xE4T\xB1\x14a\x05\xC0W__\xFD[\x80c!@\xFE\xCD\x14a\x04\xE8W\x80c$\x8A\x9C\xA3\x14a\x05\x07W\x80c+\x9E\\\x8A\x14a\x054W\x80c-\xC9\xBA\xC6\x14a\x05NW__\xFD[\x80c\r\x8En,\x11a\x03\x9CW\x80c\r\x8En,\x14a\x04`W\x80c\x13\xB9\x05z\x14a\x04\x8BW\x80c\x15\xF3\x185\x14a\x04\xAAW\x80c\x1A \xCDc\x14a\x04\xC9W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03\xCDW\x80c\x02n@+\x14a\x04\x01W\x80c\x07=%\xFC\x14a\x04\"W\x80c\x0C\xB2\x97d\x14a\x04AW[__\xFD[4\x80\x15a\x03\xD8W__\xFD[Pa\x03\xECa\x03\xE76`\x04a@=V[a\x0C\x86V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x04\x0CW__\xFD[Pa\x04 a\x04\x1B6`\x04a@\x7FV[a\x0C\xBCV[\0[4\x80\x15a\x04-W__\xFD[Pa\x04 a\x04<6`\x04a@\xA7V[a\x0E\xA2V[4\x80\x15a\x04LW__\xFD[Pa\x04 a\x04[6`\x04aA\x89V[a\x0FBV[4\x80\x15a\x04kW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\xF8V[4\x80\x15a\x04\x96W__\xFD[Pa\x04 a\x04\xA56`\x04aBlV[a\x10-V[4\x80\x15a\x04\xB5W__\xFD[Pa\x04 a\x04\xC46`\x04aB\xC2V[a\x10FV[4\x80\x15a\x04\xD4W__\xFD[Pa\x04 a\x04\xE36`\x04aB\xFBV[a\x12|V[4\x80\x15a\x04\xF3W__\xFD[Pa\x04 a\x05\x026`\x04aC!V[a\x13\x10V[4\x80\x15a\x05\x12W__\xFD[Pa\x05&a\x05!6`\x04a@\xA7V[a\x14`V[`@Q\x90\x81R` \x01a\x03\xF8V[4\x80\x15a\x05?W__\xFD[Pa\x04 a\x04\xA56`\x04aC:V[4\x80\x15a\x05YW__\xFD[Pa\x04 a\x05h6`\x04aC\xE3V[a\x14\x80V[4\x80\x15a\x05xW__\xFD[Pa\x04 a\x05\x876`\x04aC\xFCV[a\x15\x04V[4\x80\x15a\x05\x97W__\xFD[Pa\x05&a\x08\0\x81V[4\x80\x15a\x05\xACW__\xFD[Pa\x04 a\x05\xBB6`\x04aC\xFCV[a\x15 V[4\x80\x15a\x05\xCBW__\xFD[Pa\x04 a\x15HV[4\x80\x15a\x05\xDFW__\xFD[Pa\x04 a\x05\xEE6`\x04a@\xA7V[a\x15\xEBV[4\x80\x15a\x05\xFEW__\xFD[Pa\x04 a\x06\r6`\x04aC\xE3V[a\x16ZV[4\x80\x15a\x06\x1DW__\xFD[Pa\x04 a\x06,6`\x04a@\xA7V[a\x17\xC6V[4\x80\x15a\x06<W__\xFD[Pa\x05&_T\x81V[4\x80\x15a\x06PW__\xFD[P`\nTa\x06_\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x06}W__\xFD[Pa\x04 a\x18'V[4\x80\x15a\x06\x91W__\xFD[Pa\x04 a\x06\xA06`\x04a@\x7FV[a\x18IV[a\x04 a\x06\xB36`\x04aD&V[a\x1A\xBAV[4\x80\x15a\x06\xC3W__\xFD[Pa\x04 a\x06\xD26`\x04aDZV[a\x1A\xD5V[4\x80\x15a\x06\xE2W__\xFD[Pa\x05&a\x1C\x87V[4\x80\x15a\x06\xF6W__\xFD[Pa\x04 a\x04\xA56`\x04aD\xF0V[4\x80\x15a\x07\x10W__\xFD[Pa\x03\xECa\x07\x1F6`\x04a@\xA7V[`\x11` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07>W__\xFD[P_Q` aLl_9_Q\x90_RT`\xFF\x16a\x03\xECV[4\x80\x15a\x07aW__\xFD[Pa\x03\xECa\x07p6`\x04a@\xA7V[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07\x8FW__\xFD[Pa\x05&a\x02\0\x81V[4\x80\x15a\x07\xA4W__\xFD[Pa\x04 a\x07\xB36`\x04aE4V[a\x1C\xA2V[4\x80\x15a\x07\xC3W__\xFD[Pa\x04 a\x1F\x0EV[4\x80\x15a\x07\xD7W__\xFD[Pa\x07\xE2b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x08\x05W__\xFD[Pa\x04 a\x1F\xCEV[4\x80\x15a\x08\x19W__\xFD[Pa\x05&`\x0CT\x81V[4\x80\x15a\x08.W__\xFD[Pa\x04 a\x1F\xEFV[4\x80\x15a\x08BW__\xFD[Pa\x04 a\x08Q6`\x04aB\xC2V[a \x0EV[4\x80\x15a\x08aW__\xFD[Pa\x08ja bV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xF8V[4\x80\x15a\x08\x8DW__\xFD[Pa\x03\xECa\x08\x9C6`\x04aC\xFCV[a \x90V[4\x80\x15a\x08\xACW__\xFD[Pa\x05&a\x08\xBB6`\x04aF\x12V[a \xC6V[4\x80\x15a\x08\xCBW__\xFD[Pa\x05&`\x08T\x81V[4\x80\x15a\x08\xE0W__\xFD[Pa\x04 a\x08\xEF6`\x04aB\xC2V[a! V[4\x80\x15a\x08\xFFW__\xFD[Pa\t-a\t\x0E6`\x04aC!V[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xF8V[4\x80\x15a\tRW__\xFD[Pa\x05&_\x81V[4\x80\x15a\teW__\xFD[Pa\t\x97a\tt6`\x04aF,V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xF8V[4\x80\x15a\t\xB7W__\xFD[Pa\x04 a\t\xC66`\x04aC!V[a!sV[4\x80\x15a\t\xD6W__\xFD[Pa\x04 a\t\xE56`\x04aFTV[a\"\xD8V[4\x80\x15a\t\xF5W__\xFD[Pa\n\x1A`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\xF8\x91\x90aF\xF1V[4\x80\x15a\n2W__\xFD[Pa\x03\xECa\nA6`\x04a@\xA7V[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\n`W__\xFD[P`\x01Ta\x08j\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\n\x7FW__\xFD[Pa\x05&a\n\x8E6`\x04aC!V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\n\xAAW__\xFD[Pa\n\xBEa\n\xB96`\x04aF,V[a$\x02V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\xF8V[4\x80\x15a\n\xEEW__\xFD[Pa\x05&`\x0BT\x81V[4\x80\x15a\x0B\x03W__\xFD[Pa\x04 a\x0B\x126`\x04aG\x03V[a$\x93V[4\x80\x15a\x0B\"W__\xFD[Pa\x05&a\x0B16`\x04aF,V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x0BXW__\xFD[Pa\x04 a\x0Bg6`\x04aC\xFCV[a%\x97V[4\x80\x15a\x0BwW__\xFD[Pa\x05&`\tT\x81V[4\x80\x15a\x0B\x8CW__\xFD[Pa\x04 a\x0B\x9B6`\x04aB\xC2V[a%\xBFV[4\x80\x15a\x0B\xABW__\xFD[Pa\x07\xE2b\x12u\0\x81V[4\x80\x15a\x0B\xC1W__\xFD[Pa\x06_a'\x10\x81V[4\x80\x15a\x0B\xD6W__\xFD[Pa\x05&_Q` aL,_9_Q\x90_R\x81V[4\x80\x15a\x0B\xF6W__\xFD[Pa\x04 a\x0C\x056`\x04aC!V[a%\xE4V[4\x80\x15a\x0C\x15W__\xFD[Pa\x05&`\x13`\x01`\xFF\x1B\x03\x81V[4\x80\x15a\x0C/W__\xFD[Pa\x0CYa\x0C>6`\x04aC!V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\xF8\x92\x91\x90aGVV[4\x80\x15a\x0CrW__\xFD[P`\x02Ta\x08j\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0C\xB6WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0C\xC4a&lV[a\x0C\xCD\x82a&\x9EV[3_\x82\x90\x03a\x0C\xEFW`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\r\x12W`@Qc})\x871`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r`W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x84\x91\x90aG\x86V[\x90P\x82\x81\x10\x15a\r\xB6W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\r\xCE\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a'\x1FV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\r\xF5\x90\x84\x90aG\xB1V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x0E0\x90\x84\x90aG\xB1V[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0EH\x91\x90aG\xB1V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\x0E\x94\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0E\xAAa&lV[a\x0E\xB33a&\x9EV[a\x0E\xBC\x81a'\xBCV[_\x81\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0E\xEBW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F7\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PV[a\x0FJa&lV[a\x0FS3a&\x9EV[a\x0F\\\x82a'\xBCV[_\x82\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0F\x8BW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x94\x81a\x10FV[_\x82\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F\xE0\x90\x85\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x10!\x91\x90aF\xF1V[`@Q\x80\x91\x03\x90\xA2PPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x81\x90\x15\x80\x15\x90a\x10[WPa\x02\0\x81Q\x11\x15[a\x10xW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x19\x90[\x80\x15a\x10\xDDW\x82a\x10\x90`\x01\x83aG\xC4V[\x81Q\x81\x10a\x10\xA0Wa\x10\xA0aG\xD7V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x1D`\xF9\x1B\x03a\x10\xCBWa\x10\xC4`\x01\x82aG\xC4V[\x91Pa\x10\xDDV[\x80a\x10\xD5\x81aG\xEBV[\x91PPa\x10~V[P_\x19\x81\x14\x15\x80\x15a\x10\xEEWP_\x81\x11[a\x11\x0BW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01\x82\x84Qa\x11\x1B\x91\x90aG\xC4V[a\x11%\x91\x90aG\xC4V[\x90P_\x81\x11\x80\x15a\x117WP`\x05\x81\x11\x15[a\x11TW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80a\x11a\x84`\x01aG\xB1V[\x90P[\x84Q\x81\x10\x15a\x11\xEAW_\x85\x82\x81Q\x81\x10a\x11\x80Wa\x11\x80aG\xD7V[\x01` \x01Q`\xF8\x1C\x90P`0\x81\x10\x80\x15\x90a\x11\x9FWP`9\x81`\xFF\x16\x11\x15[a\x11\xBCW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xC7`0\x82aH\0V[`\xFF\x16a\x11\xD5\x84`\naH\x19V[a\x11\xDF\x91\x90aG\xB1V[\x92PP`\x01\x01a\x11dV[P`\x01\x82\x11\x80\x15a\x12)WP\x83a\x12\x02\x84`\x01aG\xB1V[\x81Q\x81\x10a\x12\x12Wa\x12\x12aG\xD7V[` \x91\x01\x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x03`\xFC\x1B\x14[\x15a\x12GW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x11\x80\x15a\x12XWPa\xFF\xFF\x81\x11\x15[a\x12uW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[_a\x12\x86\x81a(3V[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\x12\xABWPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\x12\xC9W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x18a&lV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x13RW`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x13sW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x13\xBBW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x13\xFF\x90\x84\x90aG\xC4V[\x90\x91UPP`\x02Ta\x14\x1B\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a(=V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\x0E\x94\x91\x81R` \x01\x90V[_\x90\x81R_Q` aLL_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[_a\x14\x8A\x81a(3V[_\x82a\xFF\xFF\x16\x11\x80\x15a\x14\xA3WPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x14\xC0W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\x13\x04V[\x81a\x15\x16Wa\x15\x12\x81a%\xE4V[PPV[a\x15\x12\x82\x82a(\xC6V[\x81a\x15>W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x12\x82\x82a(\xE2V[a\x15Pa)\x15V[_Q` aL\x8C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x15\x86WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x15\xA4W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x90\x81\x17`\x01`@\x1B\x17`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01a\x13\x04V[_a\x15\xF5\x81a(3V[_\x82\x11\x80\x15a\x16\x08WPc\x01\xE13\x80\x82\x11\x15[a\x16%W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\x13\x04V[a\x16ba&lV[3a\x16l\x81a&\x9EV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x16\x93W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x16\xD5W`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x17aW`\x01\x82\x01T\x80\x15\x80a\x17\x03WP`\tTa\x16\xFF\x90\x82aG\xB1V[B\x10\x15[a\x17 W`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x171\x90a\xFF\xFF\x16\x83aH0V[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x17YW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x17\xD0\x81a(3V[`\x01\x82\x10\x15a\x17\xF2W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\x13\x04V[_Q` aL,_9_Q\x90_Ra\x18>\x81a(3V[a\x18Fa)GV[PV[a\x18Qa&lV[a\x18Z\x82a&\x9EV[3_\x82\x90\x03a\x18|W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x18\xBFW`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x19\x08W`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\xADV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x19$\x83aHJV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x19\x9D\x91\x90aG\xC4V[\x90\x91UPP`\x08T_\x90a\x19\xB1\x90BaG\xB1V[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x1AA\x90\x84\x90aG\xC4V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x1AY\x91\x90aG\xC4V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x1A\xC2a)\xA6V[a\x1A\xCB\x82a*JV[a\x15\x12\x82\x82a*TV[a\x1A\xDDa)\x15V[_Q` aL\x8C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1B\x13WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1B1W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x1ByW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1B\xA0W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xA8a+\x10V[a\x1B\xB0a+\x18V[a\x1B\xC7_Q` aL,_9_Q\x90_R\x88a+(V[Pa\x1B\xD2_\x87a+(V[P_a\x1B\xDCa bV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1C\0Wa\x1C\0\x87a+\xC9V[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x1C@\x85\x85a,9V[a\x1CI\x86a-\xCEV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x1C\x90a.]V[P_Q` aL\x0C_9_Q\x90_R\x90V[a\x1C\xAAa&lV[3a\x1C\xB4\x81a.\xA6V[a\x1C\xBD\x88a.\xF3V[a\x1C\xC7\x89\x89a/\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xF9\x81\x89\x8Ca/\xFFV[\x86Q`@\x14a\x1D\x1BW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x87\x16\x11\x15a\x1DBW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1DK\x85a%\xBFV[a\x1DT\x84a'\xBCV[_\x84\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x1D\x83W`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x8C\x83a\x10FV[`\x01`\x04_a\x1D\x9A\x8Da \xC6V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D\xCB\x8Ca1\x08V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x1E\x12Wa\x1E\x12aGBV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x1EXWa\x1EXaGBV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x89\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x83R\x86\x84 \x95Q\x86Ta\xFF\xFF\x19\x16\x95\x16\x94\x90\x94\x17\x85UQ`\x01\x94\x85\x01U\x89\x82R`\x11\x90R\x83\x90 \x80T`\xFF\x19\x16\x90\x92\x17\x90\x91U\x90Q\x90\x91P\x7F\xBF\x14\xCD\x7F\xEApC]BO\x92\xF7\xA3\xD0\x11\t\xA5\x83D\x9Dq\x88\x98\xA6\xA9i\x87\x9CTv\xEC\x14\x90a\x1E\xFA\x90\x8D\x90\x8D\x90\x8B\x90\x8E\x90\x8E\x90\x8D\x90\x8D\x90\x8D\x90aHtV[`@Q\x80\x91\x03\x90\xA2PPPPPPPPPPV[a\x1F\x16a&lV[3a\x1F \x81a&\x9EV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x1FR\x90BaG\xB1V[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x1F\x8E\x90\x84\x90aG\xC4V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01a\x10!V[a\x1F\xD6a)\x15V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aL,_9_Q\x90_Ra \x06\x81a(3V[a\x18Fa1,V[a \x16a&lV[3a  \x81a&\x9EV[a )\x82a%\xBFV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x10!\x91\x90aF\xF1V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[_\x91\x82R_Q` aLL_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a!\x03\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a!(a&lV[a!13a&\x9EV[a!:\x81a\x10FV[3`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x0F7\x91\x90aF\xF1V[a!{a&lV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a!\xC0W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\"\x08W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\"{\x91\x16\x84\x84a(=V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\"\xCA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\"\xE0a&lV[3a\"\xEA\x81a&\x9EV[a\"\xF3\x84a.\xF3V[a\"\xFD\x85\x85a/\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa#/\x81\x85\x88a/\xFFV[\x82Q`@\x14a#QW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a#_\x89a \xC6V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a#\x90\x88a1\x08V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa#\xF2\x94\x93\x92\x91\x90aI\x19V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a$MW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aL\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a$\xC4WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a$\xDFWP0;\x15[\x90P\x81\x15\x80\x15a$\xEDWP\x80\x15[\x15a%\x0BW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a%5W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a%>\x86a1tV[a%Fa+\x10V[a%Na1\x85V[a%Y\x89\x89\x89a2cV[\x83\x15a%\x8CW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a%\xB5W`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x12\x82\x82a3\x0EV[\x80Qa\x08\0\x81\x11\x15a\x15\x12W`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a%\xEE\x81a(3V[`\x01`\x01`\xA0\x1B\x03\x82\x16a&\x17W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\xADV[_a& a bV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a&IWa&D\x83a3*V[PPPV[a&S_\x84a(\xC6V[a&\\\x83a3*V[a&f_\x82a3dV[PPPPV[_Q` aLl_9_Q\x90_RT`\xFF\x16\x15a&\x9CW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a&\xCFWa&\xCFaGBV[\x03a&\xEDW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a'\x01Wa'\x01aGBV[\x03a\x15\x12W`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a'xWP\x83;\x15=\x17\x15[\x80a\x12uW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\r\xADV[_` [\x80\x15a(\0W\x82a'\xD2`\x01\x83aG\xC4V[` \x81\x10a'\xE2Wa'\xE2aG\xD7V[\x1A`\x08\x92\x90\x92\x1B\x91\x90\x91\x17\x90\x80a'\xF8\x81aG\xEBV[\x91PPa'\xC0V[P\x80\x15\x80\x15\x90a(\x16WP`\x13`\x01`\xFF\x1B\x03\x81\x10[a\x15\x12W`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18F\x813a3\xDDV[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a(\x87WP\x82;\x15=\x17\x15[\x80a&fW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\r\xADV[a(\xCF\x82a\x14`V[a(\xD8\x81a(3V[a&f\x83\x83a+(V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a)\x0BW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a&D\x82\x82a3dV[3a)\x1Ea bV[`\x01`\x01`\xA0\x1B\x03\x16\x14a&\x9CW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\xADV[a)Oa4\x16V[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a*,WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a* _Q` aL\x0C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a&\x9CW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x15\x12\x81a(3V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a*\xAEWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra*\xAB\x91\x81\x01\x90aG\x86V[`\x01[a*\xD6W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\xADV[_Q` aL\x0C_9_Q\x90_R\x81\x14a+\x06W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\xADV[a&D\x83\x83a4EV[a&\x9Ca4\x9AV[a+ a4\x9AV[a&\x9Ca4\xD0V[__Q` aLL_9_Q\x90_Ra+A\x84\x84a \x90V[a+\xC0W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua+v3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0C\xB6V[_\x91PPa\x0C\xB6V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[_[\x81\x81\x10\x15a&DW_\x83\x83\x83\x81\x81\x10a,VWa,VaG\xD7V[a,l\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91PaC!V[\x90P_\x84\x84\x84\x81\x81\x10a,\x81Wa,\x81aG\xD7V[\x90P`@\x02\x01` \x01` \x81\x01\x90a,\x99\x91\x90aC\xE3V[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a,\xC2W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a,\xF3Wa,\xF3aGBV[\x03a-\x11W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a-RWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a-}W`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\r\xADV[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a,;V[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a.\x14W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.8\x91\x90aG\x86V[\x81\x11\x15a.XW`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a&\x9CW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a.\xD5Wa.\xD5aGBV[\x14a\x18FW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a/GWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a/eW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x18FW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a/\x92\x84a \xC6V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a/\xC2W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a/\xCE\x83a1\x08V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x15\x12W`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a0(W`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a09WP` \x81\x01Q\x15[\x80\x15a0GWP`@\x81\x01Q\x15[\x80\x15a0UWP``\x81\x01Q\x15[\x15a0sW`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0|\x82a4\xF0V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aK\xA8`$\x919\x90P_\x84\x82`@Q` \x01a0\xAC\x92\x91\x90aI\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a0\xC7\x82a5WV[\x90Pa0\xE4\x81\x85a0\xD7\x88a6DV[a0\xDFa6\xBBV[a7\x88V[a1\0W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a!\x03\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a14a&lV[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a)\x88V[a1|a4\x9AV[a\x18F\x81a87V[_Q` aL\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a1\xB6WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a1\xD1WP0;\x15[\x90P\x81\x15\x80\x15a1\xDFWP\x80\x15[\x15a1\xFDW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a2'W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x12uW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\xEC_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a2\x8AW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a2\xB1W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a3\x06W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a3\x17\x82a\x14`V[a3 \x81a(3V[a&f\x83\x83a3dV[a32a)\x15V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3[W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\xADV[a\x18F\x81a+\xC9V[__Q` aLL_9_Q\x90_Ra3}\x84\x84a \x90V[\x15a+\xC0W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0C\xB6V[a3\xE7\x82\x82a \x90V[a\x15\x12W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\r\xADV[_Q` aLl_9_Q\x90_RT`\xFF\x16a&\x9CW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4N\x82a8?V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a4\x92Wa&D\x82\x82a8\xA2V[a\x15\x12a9\x14V[_Q` aL\x8C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a&\x9CW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4\xD8a4\x9AV[_Q` aLl_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[\x80Q` \x82\x01Q_\x91_Q` aK\xCC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a5\x16WPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a&DW`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a5t\x83a93V[\x90P_Q` aK\xCC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a5\x9BWa5\x9BaI\xAAV[\x84\x82\t\x90P\x82\x80a5\xAEWa5\xAEaI\xAAV[\x82\x82\x08\x90P__a5\xBE\x83a;;V[\x92P\x90P[\x80a6'W\x84\x80a5\xD6Wa5\xD6aI\xAAV[`\x01\x87\x08\x95P\x84\x80a5\xEAWa5\xEAaI\xAAV[\x86\x87\t\x92P\x84\x80a5\xFDWa5\xFDaI\xAAV[\x86\x84\t\x92P\x84\x80a6\x10Wa6\x10aI\xAAV[\x84\x84\x08\x92Pa6\x1E\x83a;;V[\x92P\x90Pa5\xC3V[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a6kWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aK\xCC_9_Q\x90_R\x84` \x01Qa6\x9C\x91\x90aI\xBEV[a6\xB3\x90_Q` aK\xCC_9_Q\x90_RaG\xC4V[\x90R\x92\x91PPV[a6\xE2`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a8+W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a32a4\x9AV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a8tW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\xADV[_Q` aL\x0C_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa8\xBE\x91\x90aI\xDDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a8\xF6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a8\xFBV[``\x91P[P\x91P\x91Pa9\x0B\x85\x83\x83a<\x03V[\x95\x94PPPPPV[4\x15a&\x9CW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a9>\x83a<bV[\x80Q\x90\x91P`0\x81\x14a9SWa9SaI\xE8V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a9lWa9la@\xBEV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a9\x96W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a:\x05W\x83`\x01a9\xB0\x83\x86aG\xC4V[a9\xBA\x91\x90aG\xC4V[\x81Q\x81\x10a9\xCAWa9\xCAaG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a9\xE7Wa9\xE7aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a9\x9BV[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a:\x95W\x83\x81a:A\x85\x88aG\xC4V[a:K\x91\x90aG\xB1V[\x81Q\x81\x10a:[Wa:[aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a:{Wa:{aG\xD7V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a:-V[P_a:\xA0\x82a?\xADV[\x90Pa\x01\0_Q` aK\xCC_9_Q\x90_R_a:\xBE\x86\x89aG\xC4V[\x90P_[\x81\x81\x10\x15a;+W_\x88`\x01a:\xD8\x84\x86aG\xC4V[a:\xE2\x91\x90aG\xC4V[\x81Q\x81\x10a:\xF2Wa:\xF2aG\xD7V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a;\nWa;\naI\xAAV[\x85\x87\t\x95P\x83\x80a;\x1DWa;\x1DaI\xAAV[\x81\x87\x08\x95PP`\x01\x01a:\xC2V[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` aK\xCC_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a;\xC9W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a;\xE2Wa;\xDF\x83\x82aG\xC4V[\x92P[\x80\x80a;\xF0Wa;\xF0aI\xAAV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[``\x82a<\x18Wa<\x13\x82a@\x14V[a<[V[\x81Q\x15\x80\x15a</WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a<XW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\xADV[P\x80[\x93\x92PPPV[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a<\xA2\x92\x91\x90aI\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a<\xC9\x92\x91\x90aI\xFCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a<\xEB\x91\x90aJ&V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a=\x15\x90\x83\x90\x83\x90` \x01aJ>V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x84Wa=\x84a@\xBEV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a=\xAEW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a=\xC5\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a>/W\x81\x81\x81Q\x81\x10a=\xF4Wa=\xF4aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a>\x11Wa>\x11aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a=\xD9V[P_\x84`@Q` \x01a>D\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a>\xD6W_\x83\x82\x81Q\x81\x10a>}Wa>}aG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a>\x9AWa>\x9AaG\xD7V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a>\xBB\x92\x91\x90aJbV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a>bV[P\x86\x88\x87`@Q` \x01a>\xEC\x93\x92\x91\x90aJ\x86V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a?\x1A\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a?;\x8A`\xFF\x8D\x16aG\xC4V[\x81\x10\x15a?\x9CW\x82\x81\x81Q\x81\x10a?TWa?TaG\xD7V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a?n\x83\x8DaG\xB1V[\x81Q\x81\x10a?~Wa?~aG\xD7V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a?.V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a@\rW\x83\x81\x81Q\x81\x10a?\xCCWa?\xCCaG\xD7V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a?\xE4\x91\x90aH\x19V[a?\xEF\x90`\x02aK\x9CV[a?\xF9\x91\x90aH\x19V[a@\x03\x90\x83aG\xB1V[\x91P`\x01\x01a?\xB1V[P\x92\x91PPV[\x80Q\x15a@$W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a@MW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a<[W__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a@zW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a@\x90W__\xFD[a@\x99\x83a@dV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a@\xB7W__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a@\xF4Wa@\xF4a@\xBEV[`@R\x90V[_\x82`\x1F\x83\x01\x12aA\tW__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15aA(WaA(a@\xBEV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15aAVWaAVa@\xBEV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15aAmW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[__`@\x83\x85\x03\x12\x15aA\x9AW__\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aA\xB6W__\xFD[aA\xC2\x85\x82\x86\x01a@\xFAV[\x91PP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15aA\xDCW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aA\xFEWaA\xFEa@\xBEV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15aB<W__\xFD[aBDa@\xD2V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a@zW__\xFD[____a\x01 \x85\x87\x03\x12\x15aB\x80W__\xFD[aB\x8A\x86\x86aA\xCCV[\x93PaB\x99\x86`\x80\x87\x01aB,V[\x92PaB\xA8\x86`\xC0\x87\x01aB,V[\x91PaB\xB7a\x01\0\x86\x01aB[V[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15aB\xD2W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aB\xE7W__\xFD[aB\xF3\x84\x82\x85\x01a@\xFAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15aC\x0BW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a<[W__\xFD[_` \x82\x84\x03\x12\x15aC1W__\xFD[a<[\x82a@dV[______a\x01`\x87\x89\x03\x12\x15aCPW__\xFD[aCZ\x88\x88aA\xCCV[\x95PaCi\x88`\x80\x89\x01aB,V[\x94PaCx\x88`\xC0\x89\x01aB,V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\x93W__\xFD[aC\x9F\x89\x82\x8A\x01a@\xFAV[\x93PPaC\xAFa\x01 \x88\x01aB[V[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\xCAW__\xFD[aC\xD6\x89\x82\x8A\x01a@\xFAV[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15aC\xF3W__\xFD[a<[\x82aB[V[__`@\x83\x85\x03\x12\x15aD\rW__\xFD[\x825\x91PaD\x1D` \x84\x01a@dV[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15aD7W__\xFD[aD@\x83a@dV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aA\xB6W__\xFD[_____`\x80\x86\x88\x03\x12\x15aDnW__\xFD[aDw\x86a@dV[\x94PaD\x85` \x87\x01a@dV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xA6W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aD\xB6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xCBW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15aD\xDFW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15aE\x03W__\xFD[aE\r\x85\x85aA\xCCV[\x92PaE\x1C\x85`\x80\x86\x01aB,V[\x91PaE+\x85`\xC0\x86\x01aB,V[\x90P\x92P\x92P\x92V[________a\x01\xA0\x89\x8B\x03\x12\x15aELW__\xFD[aEV\x8A\x8AaA\xCCV[\x97PaEe\x8A`\x80\x8B\x01aB,V[\x96PaEt\x8A`\xC0\x8B\x01aB,V[\x95Pa\x01\0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\x8FW__\xFD[aE\x9B\x8B\x82\x8C\x01a@\xFAV[\x95PPaE\xABa\x01 \x8A\x01aB[V[\x93Pa\x01@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xC6W__\xFD[aE\xD2\x8B\x82\x8C\x01a@\xFAV[\x93PPa\x01`\x89\x015\x91Pa\x01\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xF6W__\xFD[aF\x02\x8B\x82\x8C\x01a@\xFAV[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[_`\x80\x82\x84\x03\x12\x15aF\"W__\xFD[a<[\x83\x83aA\xCCV[__`@\x83\x85\x03\x12\x15aF=W__\xFD[aFF\x83a@dV[\x91PaD\x1D` \x84\x01a@dV[____a\x01 \x85\x87\x03\x12\x15aFhW__\xFD[aFr\x86\x86aA\xCCV[\x93PaF\x81\x86`\x80\x87\x01aB,V[\x92PaF\x90\x86`\xC0\x87\x01aB,V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aF\xABW__\xFD[aF\xB7\x87\x82\x88\x01a@\xFAV[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a<[` \x83\x01\x84aF\xC3V[____`\x80\x85\x87\x03\x12\x15aG\x16W__\xFD[aG\x1F\x85a@dV[\x93PaG-` \x86\x01a@dV[\x92P`@\x85\x015\x91PaB\xB7``\x86\x01a@dV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10aGyWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aG\x96W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[\x81\x81\x03\x81\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81aG\xF9WaG\xF9aG\x9DV[P_\x19\x01\x90V[`\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\xB6Wa\x0C\xB6aG\x9DV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\xB6Wa\x0C\xB6aG\x9DV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03aHkWaHkaG\x9DV[`\x01\x01\x92\x91PPV[\x88Q\x81R` \x80\x8A\x01Q\x90\x82\x01R`@\x80\x8A\x01Q\x90\x82\x01R``\x80\x8A\x01Q\x90\x82\x01R\x87Q`\x80\x82\x01R` \x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x87\x16`\xC0\x82\x01R\x85Q`\xE0\x82\x01R` \x86\x01Qa\x01\0\x82\x01Ra\x01\xA0a\x01 \x82\x01R_aH\xDBa\x01\xA0\x83\x01\x87aF\xC3V[\x82\x81\x03a\x01@\x84\x01RaH\xEE\x81\x87aF\xC3V[\x90P\x84a\x01`\x84\x01R\x82\x81\x03a\x01\x80\x84\x01RaI\n\x81\x85aF\xC3V[\x9B\x9APPPPPPPPPPPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aIua\x01 \x83\x01\x84aF\xC3V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_aB\xF3aI\xA4\x83\x86aI\x7FV[\x84aI\x7FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aI\xD8WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_a<[\x82\x84aI\x7FV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_aJ\x07\x82\x85aI\x7FV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aJ1\x82\x84aI\x7FV[_\x81R`\x01\x01\x93\x92PPPV[_aJI\x82\x85aI\x7FV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aJm\x82\x85aI\x7FV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aJ\x91\x82\x86aI\x7FV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[`\x01\x81[`\x01\x84\x11\x15aJ\xF4W\x80\x85\x04\x81\x11\x15aJ\xD8WaJ\xD8aG\x9DV[`\x01\x84\x16\x15aJ\xE6W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aJ\xBDV[\x93P\x93\x91PPV[_\x82aK\nWP`\x01a\x0C\xB6V[\x81aK\x16WP_a\x0C\xB6V[\x81`\x01\x81\x14aK,W`\x02\x81\x14aK6WaKRV[`\x01\x91PPa\x0C\xB6V[`\xFF\x84\x11\x15aKGWaKGaG\x9DV[PP`\x01\x82\x1Ba\x0C\xB6V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aKuWP\x81\x81\na\x0C\xB6V[aK\x81_\x19\x84\x84aJ\xB9V[\x80_\x19\x04\x82\x11\x15aK\x94WaK\x94aG\x9DV[\x02\x93\x92PPPV[_a<[\x83\x83aJ\xFCV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD26\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08#\0\n",
4560    );
4561    #[derive(serde::Serialize, serde::Deserialize)]
4562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4563    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
4564```solidity
4565error AccessControlBadConfirmation();
4566```*/
4567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4568    #[derive(Clone)]
4569    pub struct AccessControlBadConfirmation;
4570    #[allow(
4571        non_camel_case_types,
4572        non_snake_case,
4573        clippy::pub_underscore_fields,
4574        clippy::style
4575    )]
4576    const _: () = {
4577        use alloy::sol_types as alloy_sol_types;
4578        #[doc(hidden)]
4579        #[allow(dead_code)]
4580        type UnderlyingSolTuple<'a> = ();
4581        #[doc(hidden)]
4582        type UnderlyingRustTuple<'a> = ();
4583        #[cfg(test)]
4584        #[allow(dead_code, unreachable_patterns)]
4585        fn _type_assertion(
4586            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4587        ) {
4588            match _t {
4589                alloy_sol_types::private::AssertTypeEq::<
4590                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4591                >(_) => {}
4592            }
4593        }
4594        #[automatically_derived]
4595        #[doc(hidden)]
4596        impl ::core::convert::From<AccessControlBadConfirmation>
4597        for UnderlyingRustTuple<'_> {
4598            fn from(value: AccessControlBadConfirmation) -> Self {
4599                ()
4600            }
4601        }
4602        #[automatically_derived]
4603        #[doc(hidden)]
4604        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4605        for AccessControlBadConfirmation {
4606            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4607                Self
4608            }
4609        }
4610        #[automatically_derived]
4611        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
4612            type Parameters<'a> = UnderlyingSolTuple<'a>;
4613            type Token<'a> = <Self::Parameters<
4614                'a,
4615            > as alloy_sol_types::SolType>::Token<'a>;
4616            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
4617            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
4618            #[inline]
4619            fn new<'a>(
4620                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4621            ) -> Self {
4622                tuple.into()
4623            }
4624            #[inline]
4625            fn tokenize(&self) -> Self::Token<'_> {
4626                ()
4627            }
4628            #[inline]
4629            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4630                Self::abi_decode_raw_with_config(
4631                    data,
4632                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4633                )
4634            }
4635        }
4636    };
4637    #[derive(serde::Serialize, serde::Deserialize)]
4638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4639    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
4640```solidity
4641error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
4642```*/
4643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4644    #[derive(Clone)]
4645    pub struct AccessControlUnauthorizedAccount {
4646        #[allow(missing_docs)]
4647        pub account: alloy::sol_types::private::Address,
4648        #[allow(missing_docs)]
4649        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
4650    }
4651    #[allow(
4652        non_camel_case_types,
4653        non_snake_case,
4654        clippy::pub_underscore_fields,
4655        clippy::style
4656    )]
4657    const _: () = {
4658        use alloy::sol_types as alloy_sol_types;
4659        #[doc(hidden)]
4660        #[allow(dead_code)]
4661        type UnderlyingSolTuple<'a> = (
4662            alloy::sol_types::sol_data::Address,
4663            alloy::sol_types::sol_data::FixedBytes<32>,
4664        );
4665        #[doc(hidden)]
4666        type UnderlyingRustTuple<'a> = (
4667            alloy::sol_types::private::Address,
4668            alloy::sol_types::private::FixedBytes<32>,
4669        );
4670        #[cfg(test)]
4671        #[allow(dead_code, unreachable_patterns)]
4672        fn _type_assertion(
4673            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4674        ) {
4675            match _t {
4676                alloy_sol_types::private::AssertTypeEq::<
4677                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4678                >(_) => {}
4679            }
4680        }
4681        #[automatically_derived]
4682        #[doc(hidden)]
4683        impl ::core::convert::From<AccessControlUnauthorizedAccount>
4684        for UnderlyingRustTuple<'_> {
4685            fn from(value: AccessControlUnauthorizedAccount) -> Self {
4686                (value.account, value.neededRole)
4687            }
4688        }
4689        #[automatically_derived]
4690        #[doc(hidden)]
4691        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4692        for AccessControlUnauthorizedAccount {
4693            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4694                Self {
4695                    account: tuple.0,
4696                    neededRole: tuple.1,
4697                }
4698            }
4699        }
4700        #[automatically_derived]
4701        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
4702            type Parameters<'a> = UnderlyingSolTuple<'a>;
4703            type Token<'a> = <Self::Parameters<
4704                'a,
4705            > as alloy_sol_types::SolType>::Token<'a>;
4706            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
4707            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
4708            #[inline]
4709            fn new<'a>(
4710                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4711            ) -> Self {
4712                tuple.into()
4713            }
4714            #[inline]
4715            fn tokenize(&self) -> Self::Token<'_> {
4716                (
4717                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4718                        &self.account,
4719                    ),
4720                    <alloy::sol_types::sol_data::FixedBytes<
4721                        32,
4722                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
4723                )
4724            }
4725            #[inline]
4726            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4727                Self::abi_decode_raw_with_config(
4728                    data,
4729                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4730                )
4731            }
4732        }
4733    };
4734    #[derive(serde::Serialize, serde::Deserialize)]
4735    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4736    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4737```solidity
4738error AddressEmptyCode(address target);
4739```*/
4740    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4741    #[derive(Clone)]
4742    pub struct AddressEmptyCode {
4743        #[allow(missing_docs)]
4744        pub target: alloy::sol_types::private::Address,
4745    }
4746    #[allow(
4747        non_camel_case_types,
4748        non_snake_case,
4749        clippy::pub_underscore_fields,
4750        clippy::style
4751    )]
4752    const _: () = {
4753        use alloy::sol_types as alloy_sol_types;
4754        #[doc(hidden)]
4755        #[allow(dead_code)]
4756        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4757        #[doc(hidden)]
4758        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4759        #[cfg(test)]
4760        #[allow(dead_code, unreachable_patterns)]
4761        fn _type_assertion(
4762            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4763        ) {
4764            match _t {
4765                alloy_sol_types::private::AssertTypeEq::<
4766                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4767                >(_) => {}
4768            }
4769        }
4770        #[automatically_derived]
4771        #[doc(hidden)]
4772        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4773            fn from(value: AddressEmptyCode) -> Self {
4774                (value.target,)
4775            }
4776        }
4777        #[automatically_derived]
4778        #[doc(hidden)]
4779        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4780            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4781                Self { target: tuple.0 }
4782            }
4783        }
4784        #[automatically_derived]
4785        impl alloy_sol_types::SolError for AddressEmptyCode {
4786            type Parameters<'a> = UnderlyingSolTuple<'a>;
4787            type Token<'a> = <Self::Parameters<
4788                'a,
4789            > as alloy_sol_types::SolType>::Token<'a>;
4790            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4791            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4792            #[inline]
4793            fn new<'a>(
4794                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4795            ) -> Self {
4796                tuple.into()
4797            }
4798            #[inline]
4799            fn tokenize(&self) -> Self::Token<'_> {
4800                (
4801                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4802                        &self.target,
4803                    ),
4804                )
4805            }
4806            #[inline]
4807            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4808                Self::abi_decode_raw_with_config(
4809                    data,
4810                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4811                )
4812            }
4813        }
4814    };
4815    #[derive(serde::Serialize, serde::Deserialize)]
4816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4817    /**Custom error with signature `BLSSigIsInfinity()` and selector `0x74272332`.
4818```solidity
4819error BLSSigIsInfinity();
4820```*/
4821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4822    #[derive(Clone)]
4823    pub struct BLSSigIsInfinity;
4824    #[allow(
4825        non_camel_case_types,
4826        non_snake_case,
4827        clippy::pub_underscore_fields,
4828        clippy::style
4829    )]
4830    const _: () = {
4831        use alloy::sol_types as alloy_sol_types;
4832        #[doc(hidden)]
4833        #[allow(dead_code)]
4834        type UnderlyingSolTuple<'a> = ();
4835        #[doc(hidden)]
4836        type UnderlyingRustTuple<'a> = ();
4837        #[cfg(test)]
4838        #[allow(dead_code, unreachable_patterns)]
4839        fn _type_assertion(
4840            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4841        ) {
4842            match _t {
4843                alloy_sol_types::private::AssertTypeEq::<
4844                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4845                >(_) => {}
4846            }
4847        }
4848        #[automatically_derived]
4849        #[doc(hidden)]
4850        impl ::core::convert::From<BLSSigIsInfinity> for UnderlyingRustTuple<'_> {
4851            fn from(value: BLSSigIsInfinity) -> Self {
4852                ()
4853            }
4854        }
4855        #[automatically_derived]
4856        #[doc(hidden)]
4857        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSSigIsInfinity {
4858            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4859                Self
4860            }
4861        }
4862        #[automatically_derived]
4863        impl alloy_sol_types::SolError for BLSSigIsInfinity {
4864            type Parameters<'a> = UnderlyingSolTuple<'a>;
4865            type Token<'a> = <Self::Parameters<
4866                'a,
4867            > as alloy_sol_types::SolType>::Token<'a>;
4868            const SIGNATURE: &'static str = "BLSSigIsInfinity()";
4869            const SELECTOR: [u8; 4] = [116u8, 39u8, 35u8, 50u8];
4870            #[inline]
4871            fn new<'a>(
4872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4873            ) -> Self {
4874                tuple.into()
4875            }
4876            #[inline]
4877            fn tokenize(&self) -> Self::Token<'_> {
4878                ()
4879            }
4880            #[inline]
4881            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4882                Self::abi_decode_raw_with_config(
4883                    data,
4884                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4885                )
4886            }
4887        }
4888    };
4889    #[derive(serde::Serialize, serde::Deserialize)]
4890    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4891    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
4892```solidity
4893error BLSSigVerificationFailed();
4894```*/
4895    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4896    #[derive(Clone)]
4897    pub struct BLSSigVerificationFailed;
4898    #[allow(
4899        non_camel_case_types,
4900        non_snake_case,
4901        clippy::pub_underscore_fields,
4902        clippy::style
4903    )]
4904    const _: () = {
4905        use alloy::sol_types as alloy_sol_types;
4906        #[doc(hidden)]
4907        #[allow(dead_code)]
4908        type UnderlyingSolTuple<'a> = ();
4909        #[doc(hidden)]
4910        type UnderlyingRustTuple<'a> = ();
4911        #[cfg(test)]
4912        #[allow(dead_code, unreachable_patterns)]
4913        fn _type_assertion(
4914            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4915        ) {
4916            match _t {
4917                alloy_sol_types::private::AssertTypeEq::<
4918                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4919                >(_) => {}
4920            }
4921        }
4922        #[automatically_derived]
4923        #[doc(hidden)]
4924        impl ::core::convert::From<BLSSigVerificationFailed>
4925        for UnderlyingRustTuple<'_> {
4926            fn from(value: BLSSigVerificationFailed) -> Self {
4927                ()
4928            }
4929        }
4930        #[automatically_derived]
4931        #[doc(hidden)]
4932        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4933        for BLSSigVerificationFailed {
4934            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4935                Self
4936            }
4937        }
4938        #[automatically_derived]
4939        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
4940            type Parameters<'a> = UnderlyingSolTuple<'a>;
4941            type Token<'a> = <Self::Parameters<
4942                'a,
4943            > as alloy_sol_types::SolType>::Token<'a>;
4944            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
4945            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
4946            #[inline]
4947            fn new<'a>(
4948                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4949            ) -> Self {
4950                tuple.into()
4951            }
4952            #[inline]
4953            fn tokenize(&self) -> Self::Token<'_> {
4954                ()
4955            }
4956            #[inline]
4957            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4958                Self::abi_decode_raw_with_config(
4959                    data,
4960                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4961                )
4962            }
4963        }
4964    };
4965    #[derive(serde::Serialize, serde::Deserialize)]
4966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4967    /**Custom error with signature `BLSVKIsInfinity()` and selector `0xbc86c59a`.
4968```solidity
4969error BLSVKIsInfinity();
4970```*/
4971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4972    #[derive(Clone)]
4973    pub struct BLSVKIsInfinity;
4974    #[allow(
4975        non_camel_case_types,
4976        non_snake_case,
4977        clippy::pub_underscore_fields,
4978        clippy::style
4979    )]
4980    const _: () = {
4981        use alloy::sol_types as alloy_sol_types;
4982        #[doc(hidden)]
4983        #[allow(dead_code)]
4984        type UnderlyingSolTuple<'a> = ();
4985        #[doc(hidden)]
4986        type UnderlyingRustTuple<'a> = ();
4987        #[cfg(test)]
4988        #[allow(dead_code, unreachable_patterns)]
4989        fn _type_assertion(
4990            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4991        ) {
4992            match _t {
4993                alloy_sol_types::private::AssertTypeEq::<
4994                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4995                >(_) => {}
4996            }
4997        }
4998        #[automatically_derived]
4999        #[doc(hidden)]
5000        impl ::core::convert::From<BLSVKIsInfinity> for UnderlyingRustTuple<'_> {
5001            fn from(value: BLSVKIsInfinity) -> Self {
5002                ()
5003            }
5004        }
5005        #[automatically_derived]
5006        #[doc(hidden)]
5007        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSVKIsInfinity {
5008            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5009                Self
5010            }
5011        }
5012        #[automatically_derived]
5013        impl alloy_sol_types::SolError for BLSVKIsInfinity {
5014            type Parameters<'a> = UnderlyingSolTuple<'a>;
5015            type Token<'a> = <Self::Parameters<
5016                'a,
5017            > as alloy_sol_types::SolType>::Token<'a>;
5018            const SIGNATURE: &'static str = "BLSVKIsInfinity()";
5019            const SELECTOR: [u8; 4] = [188u8, 134u8, 197u8, 154u8];
5020            #[inline]
5021            fn new<'a>(
5022                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5023            ) -> Self {
5024                tuple.into()
5025            }
5026            #[inline]
5027            fn tokenize(&self) -> Self::Token<'_> {
5028                ()
5029            }
5030            #[inline]
5031            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5032                Self::abi_decode_raw_with_config(
5033                    data,
5034                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5035                )
5036            }
5037        }
5038    };
5039    #[derive(serde::Serialize, serde::Deserialize)]
5040    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5041    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
5042```solidity
5043error BN254PairingProdFailed();
5044```*/
5045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5046    #[derive(Clone)]
5047    pub struct BN254PairingProdFailed;
5048    #[allow(
5049        non_camel_case_types,
5050        non_snake_case,
5051        clippy::pub_underscore_fields,
5052        clippy::style
5053    )]
5054    const _: () = {
5055        use alloy::sol_types as alloy_sol_types;
5056        #[doc(hidden)]
5057        #[allow(dead_code)]
5058        type UnderlyingSolTuple<'a> = ();
5059        #[doc(hidden)]
5060        type UnderlyingRustTuple<'a> = ();
5061        #[cfg(test)]
5062        #[allow(dead_code, unreachable_patterns)]
5063        fn _type_assertion(
5064            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5065        ) {
5066            match _t {
5067                alloy_sol_types::private::AssertTypeEq::<
5068                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5069                >(_) => {}
5070            }
5071        }
5072        #[automatically_derived]
5073        #[doc(hidden)]
5074        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
5075            fn from(value: BN254PairingProdFailed) -> Self {
5076                ()
5077            }
5078        }
5079        #[automatically_derived]
5080        #[doc(hidden)]
5081        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
5082            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5083                Self
5084            }
5085        }
5086        #[automatically_derived]
5087        impl alloy_sol_types::SolError for BN254PairingProdFailed {
5088            type Parameters<'a> = UnderlyingSolTuple<'a>;
5089            type Token<'a> = <Self::Parameters<
5090                'a,
5091            > as alloy_sol_types::SolType>::Token<'a>;
5092            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
5093            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
5094            #[inline]
5095            fn new<'a>(
5096                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5097            ) -> Self {
5098                tuple.into()
5099            }
5100            #[inline]
5101            fn tokenize(&self) -> Self::Token<'_> {
5102                ()
5103            }
5104            #[inline]
5105            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5106                Self::abi_decode_raw_with_config(
5107                    data,
5108                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5109                )
5110            }
5111        }
5112    };
5113    #[derive(serde::Serialize, serde::Deserialize)]
5114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5115    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
5116```solidity
5117error BlsKeyAlreadyUsed();
5118```*/
5119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5120    #[derive(Clone)]
5121    pub struct BlsKeyAlreadyUsed;
5122    #[allow(
5123        non_camel_case_types,
5124        non_snake_case,
5125        clippy::pub_underscore_fields,
5126        clippy::style
5127    )]
5128    const _: () = {
5129        use alloy::sol_types as alloy_sol_types;
5130        #[doc(hidden)]
5131        #[allow(dead_code)]
5132        type UnderlyingSolTuple<'a> = ();
5133        #[doc(hidden)]
5134        type UnderlyingRustTuple<'a> = ();
5135        #[cfg(test)]
5136        #[allow(dead_code, unreachable_patterns)]
5137        fn _type_assertion(
5138            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5139        ) {
5140            match _t {
5141                alloy_sol_types::private::AssertTypeEq::<
5142                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5143                >(_) => {}
5144            }
5145        }
5146        #[automatically_derived]
5147        #[doc(hidden)]
5148        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
5149            fn from(value: BlsKeyAlreadyUsed) -> Self {
5150                ()
5151            }
5152        }
5153        #[automatically_derived]
5154        #[doc(hidden)]
5155        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
5156            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5157                Self
5158            }
5159        }
5160        #[automatically_derived]
5161        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
5162            type Parameters<'a> = UnderlyingSolTuple<'a>;
5163            type Token<'a> = <Self::Parameters<
5164                'a,
5165            > as alloy_sol_types::SolType>::Token<'a>;
5166            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
5167            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
5168            #[inline]
5169            fn new<'a>(
5170                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5171            ) -> Self {
5172                tuple.into()
5173            }
5174            #[inline]
5175            fn tokenize(&self) -> Self::Token<'_> {
5176                ()
5177            }
5178            #[inline]
5179            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5180                Self::abi_decode_raw_with_config(
5181                    data,
5182                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5183                )
5184            }
5185        }
5186    };
5187    #[derive(serde::Serialize, serde::Deserialize)]
5188    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5189    /**Custom error with signature `CommissionAlreadyInitialized(address)` and selector `0x50814e10`.
5190```solidity
5191error CommissionAlreadyInitialized(address validator);
5192```*/
5193    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5194    #[derive(Clone)]
5195    pub struct CommissionAlreadyInitialized {
5196        #[allow(missing_docs)]
5197        pub validator: alloy::sol_types::private::Address,
5198    }
5199    #[allow(
5200        non_camel_case_types,
5201        non_snake_case,
5202        clippy::pub_underscore_fields,
5203        clippy::style
5204    )]
5205    const _: () = {
5206        use alloy::sol_types as alloy_sol_types;
5207        #[doc(hidden)]
5208        #[allow(dead_code)]
5209        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5210        #[doc(hidden)]
5211        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5212        #[cfg(test)]
5213        #[allow(dead_code, unreachable_patterns)]
5214        fn _type_assertion(
5215            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5216        ) {
5217            match _t {
5218                alloy_sol_types::private::AssertTypeEq::<
5219                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5220                >(_) => {}
5221            }
5222        }
5223        #[automatically_derived]
5224        #[doc(hidden)]
5225        impl ::core::convert::From<CommissionAlreadyInitialized>
5226        for UnderlyingRustTuple<'_> {
5227            fn from(value: CommissionAlreadyInitialized) -> Self {
5228                (value.validator,)
5229            }
5230        }
5231        #[automatically_derived]
5232        #[doc(hidden)]
5233        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5234        for CommissionAlreadyInitialized {
5235            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5236                Self { validator: tuple.0 }
5237            }
5238        }
5239        #[automatically_derived]
5240        impl alloy_sol_types::SolError for CommissionAlreadyInitialized {
5241            type Parameters<'a> = UnderlyingSolTuple<'a>;
5242            type Token<'a> = <Self::Parameters<
5243                'a,
5244            > as alloy_sol_types::SolType>::Token<'a>;
5245            const SIGNATURE: &'static str = "CommissionAlreadyInitialized(address)";
5246            const SELECTOR: [u8; 4] = [80u8, 129u8, 78u8, 16u8];
5247            #[inline]
5248            fn new<'a>(
5249                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5250            ) -> Self {
5251                tuple.into()
5252            }
5253            #[inline]
5254            fn tokenize(&self) -> Self::Token<'_> {
5255                (
5256                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5257                        &self.validator,
5258                    ),
5259                )
5260            }
5261            #[inline]
5262            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5263                Self::abi_decode_raw_with_config(
5264                    data,
5265                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5266                )
5267            }
5268        }
5269    };
5270    #[derive(serde::Serialize, serde::Deserialize)]
5271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5272    /**Custom error with signature `CommissionIncreaseExceedsMax()` and selector `0x25ad48ca`.
5273```solidity
5274error CommissionIncreaseExceedsMax();
5275```*/
5276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5277    #[derive(Clone)]
5278    pub struct CommissionIncreaseExceedsMax;
5279    #[allow(
5280        non_camel_case_types,
5281        non_snake_case,
5282        clippy::pub_underscore_fields,
5283        clippy::style
5284    )]
5285    const _: () = {
5286        use alloy::sol_types as alloy_sol_types;
5287        #[doc(hidden)]
5288        #[allow(dead_code)]
5289        type UnderlyingSolTuple<'a> = ();
5290        #[doc(hidden)]
5291        type UnderlyingRustTuple<'a> = ();
5292        #[cfg(test)]
5293        #[allow(dead_code, unreachable_patterns)]
5294        fn _type_assertion(
5295            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5296        ) {
5297            match _t {
5298                alloy_sol_types::private::AssertTypeEq::<
5299                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5300                >(_) => {}
5301            }
5302        }
5303        #[automatically_derived]
5304        #[doc(hidden)]
5305        impl ::core::convert::From<CommissionIncreaseExceedsMax>
5306        for UnderlyingRustTuple<'_> {
5307            fn from(value: CommissionIncreaseExceedsMax) -> Self {
5308                ()
5309            }
5310        }
5311        #[automatically_derived]
5312        #[doc(hidden)]
5313        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5314        for CommissionIncreaseExceedsMax {
5315            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5316                Self
5317            }
5318        }
5319        #[automatically_derived]
5320        impl alloy_sol_types::SolError for CommissionIncreaseExceedsMax {
5321            type Parameters<'a> = UnderlyingSolTuple<'a>;
5322            type Token<'a> = <Self::Parameters<
5323                'a,
5324            > as alloy_sol_types::SolType>::Token<'a>;
5325            const SIGNATURE: &'static str = "CommissionIncreaseExceedsMax()";
5326            const SELECTOR: [u8; 4] = [37u8, 173u8, 72u8, 202u8];
5327            #[inline]
5328            fn new<'a>(
5329                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5330            ) -> Self {
5331                tuple.into()
5332            }
5333            #[inline]
5334            fn tokenize(&self) -> Self::Token<'_> {
5335                ()
5336            }
5337            #[inline]
5338            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5339                Self::abi_decode_raw_with_config(
5340                    data,
5341                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5342                )
5343            }
5344        }
5345    };
5346    #[derive(serde::Serialize, serde::Deserialize)]
5347    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5348    /**Custom error with signature `CommissionUnchanged()` and selector `0xc20bac94`.
5349```solidity
5350error CommissionUnchanged();
5351```*/
5352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5353    #[derive(Clone)]
5354    pub struct CommissionUnchanged;
5355    #[allow(
5356        non_camel_case_types,
5357        non_snake_case,
5358        clippy::pub_underscore_fields,
5359        clippy::style
5360    )]
5361    const _: () = {
5362        use alloy::sol_types as alloy_sol_types;
5363        #[doc(hidden)]
5364        #[allow(dead_code)]
5365        type UnderlyingSolTuple<'a> = ();
5366        #[doc(hidden)]
5367        type UnderlyingRustTuple<'a> = ();
5368        #[cfg(test)]
5369        #[allow(dead_code, unreachable_patterns)]
5370        fn _type_assertion(
5371            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5372        ) {
5373            match _t {
5374                alloy_sol_types::private::AssertTypeEq::<
5375                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5376                >(_) => {}
5377            }
5378        }
5379        #[automatically_derived]
5380        #[doc(hidden)]
5381        impl ::core::convert::From<CommissionUnchanged> for UnderlyingRustTuple<'_> {
5382            fn from(value: CommissionUnchanged) -> Self {
5383                ()
5384            }
5385        }
5386        #[automatically_derived]
5387        #[doc(hidden)]
5388        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUnchanged {
5389            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5390                Self
5391            }
5392        }
5393        #[automatically_derived]
5394        impl alloy_sol_types::SolError for CommissionUnchanged {
5395            type Parameters<'a> = UnderlyingSolTuple<'a>;
5396            type Token<'a> = <Self::Parameters<
5397                'a,
5398            > as alloy_sol_types::SolType>::Token<'a>;
5399            const SIGNATURE: &'static str = "CommissionUnchanged()";
5400            const SELECTOR: [u8; 4] = [194u8, 11u8, 172u8, 148u8];
5401            #[inline]
5402            fn new<'a>(
5403                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5404            ) -> Self {
5405                tuple.into()
5406            }
5407            #[inline]
5408            fn tokenize(&self) -> Self::Token<'_> {
5409                ()
5410            }
5411            #[inline]
5412            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5413                Self::abi_decode_raw_with_config(
5414                    data,
5415                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5416                )
5417            }
5418        }
5419    };
5420    #[derive(serde::Serialize, serde::Deserialize)]
5421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5422    /**Custom error with signature `CommissionUpdateTooSoon()` and selector `0x16eb94cb`.
5423```solidity
5424error CommissionUpdateTooSoon();
5425```*/
5426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5427    #[derive(Clone)]
5428    pub struct CommissionUpdateTooSoon;
5429    #[allow(
5430        non_camel_case_types,
5431        non_snake_case,
5432        clippy::pub_underscore_fields,
5433        clippy::style
5434    )]
5435    const _: () = {
5436        use alloy::sol_types as alloy_sol_types;
5437        #[doc(hidden)]
5438        #[allow(dead_code)]
5439        type UnderlyingSolTuple<'a> = ();
5440        #[doc(hidden)]
5441        type UnderlyingRustTuple<'a> = ();
5442        #[cfg(test)]
5443        #[allow(dead_code, unreachable_patterns)]
5444        fn _type_assertion(
5445            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5446        ) {
5447            match _t {
5448                alloy_sol_types::private::AssertTypeEq::<
5449                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5450                >(_) => {}
5451            }
5452        }
5453        #[automatically_derived]
5454        #[doc(hidden)]
5455        impl ::core::convert::From<CommissionUpdateTooSoon> for UnderlyingRustTuple<'_> {
5456            fn from(value: CommissionUpdateTooSoon) -> Self {
5457                ()
5458            }
5459        }
5460        #[automatically_derived]
5461        #[doc(hidden)]
5462        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUpdateTooSoon {
5463            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5464                Self
5465            }
5466        }
5467        #[automatically_derived]
5468        impl alloy_sol_types::SolError for CommissionUpdateTooSoon {
5469            type Parameters<'a> = UnderlyingSolTuple<'a>;
5470            type Token<'a> = <Self::Parameters<
5471                'a,
5472            > as alloy_sol_types::SolType>::Token<'a>;
5473            const SIGNATURE: &'static str = "CommissionUpdateTooSoon()";
5474            const SELECTOR: [u8; 4] = [22u8, 235u8, 148u8, 203u8];
5475            #[inline]
5476            fn new<'a>(
5477                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5478            ) -> Self {
5479                tuple.into()
5480            }
5481            #[inline]
5482            fn tokenize(&self) -> Self::Token<'_> {
5483                ()
5484            }
5485            #[inline]
5486            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5487                Self::abi_decode_raw_with_config(
5488                    data,
5489                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5490                )
5491            }
5492        }
5493    };
5494    #[derive(serde::Serialize, serde::Deserialize)]
5495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5496    /**Custom error with signature `DefaultAdminCannotBeRenounced()` and selector `0x8b78631d`.
5497```solidity
5498error DefaultAdminCannotBeRenounced();
5499```*/
5500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5501    #[derive(Clone)]
5502    pub struct DefaultAdminCannotBeRenounced;
5503    #[allow(
5504        non_camel_case_types,
5505        non_snake_case,
5506        clippy::pub_underscore_fields,
5507        clippy::style
5508    )]
5509    const _: () = {
5510        use alloy::sol_types as alloy_sol_types;
5511        #[doc(hidden)]
5512        #[allow(dead_code)]
5513        type UnderlyingSolTuple<'a> = ();
5514        #[doc(hidden)]
5515        type UnderlyingRustTuple<'a> = ();
5516        #[cfg(test)]
5517        #[allow(dead_code, unreachable_patterns)]
5518        fn _type_assertion(
5519            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5520        ) {
5521            match _t {
5522                alloy_sol_types::private::AssertTypeEq::<
5523                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5524                >(_) => {}
5525            }
5526        }
5527        #[automatically_derived]
5528        #[doc(hidden)]
5529        impl ::core::convert::From<DefaultAdminCannotBeRenounced>
5530        for UnderlyingRustTuple<'_> {
5531            fn from(value: DefaultAdminCannotBeRenounced) -> Self {
5532                ()
5533            }
5534        }
5535        #[automatically_derived]
5536        #[doc(hidden)]
5537        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5538        for DefaultAdminCannotBeRenounced {
5539            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5540                Self
5541            }
5542        }
5543        #[automatically_derived]
5544        impl alloy_sol_types::SolError for DefaultAdminCannotBeRenounced {
5545            type Parameters<'a> = UnderlyingSolTuple<'a>;
5546            type Token<'a> = <Self::Parameters<
5547                'a,
5548            > as alloy_sol_types::SolType>::Token<'a>;
5549            const SIGNATURE: &'static str = "DefaultAdminCannotBeRenounced()";
5550            const SELECTOR: [u8; 4] = [139u8, 120u8, 99u8, 29u8];
5551            #[inline]
5552            fn new<'a>(
5553                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5554            ) -> Self {
5555                tuple.into()
5556            }
5557            #[inline]
5558            fn tokenize(&self) -> Self::Token<'_> {
5559                ()
5560            }
5561            #[inline]
5562            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5563                Self::abi_decode_raw_with_config(
5564                    data,
5565                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5566                )
5567            }
5568        }
5569    };
5570    #[derive(serde::Serialize, serde::Deserialize)]
5571    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5572    /**Custom error with signature `DefaultAdminCannotBeRevoked()` and selector `0xb0b5fb99`.
5573```solidity
5574error DefaultAdminCannotBeRevoked();
5575```*/
5576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5577    #[derive(Clone)]
5578    pub struct DefaultAdminCannotBeRevoked;
5579    #[allow(
5580        non_camel_case_types,
5581        non_snake_case,
5582        clippy::pub_underscore_fields,
5583        clippy::style
5584    )]
5585    const _: () = {
5586        use alloy::sol_types as alloy_sol_types;
5587        #[doc(hidden)]
5588        #[allow(dead_code)]
5589        type UnderlyingSolTuple<'a> = ();
5590        #[doc(hidden)]
5591        type UnderlyingRustTuple<'a> = ();
5592        #[cfg(test)]
5593        #[allow(dead_code, unreachable_patterns)]
5594        fn _type_assertion(
5595            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5596        ) {
5597            match _t {
5598                alloy_sol_types::private::AssertTypeEq::<
5599                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5600                >(_) => {}
5601            }
5602        }
5603        #[automatically_derived]
5604        #[doc(hidden)]
5605        impl ::core::convert::From<DefaultAdminCannotBeRevoked>
5606        for UnderlyingRustTuple<'_> {
5607            fn from(value: DefaultAdminCannotBeRevoked) -> Self {
5608                ()
5609            }
5610        }
5611        #[automatically_derived]
5612        #[doc(hidden)]
5613        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5614        for DefaultAdminCannotBeRevoked {
5615            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5616                Self
5617            }
5618        }
5619        #[automatically_derived]
5620        impl alloy_sol_types::SolError for DefaultAdminCannotBeRevoked {
5621            type Parameters<'a> = UnderlyingSolTuple<'a>;
5622            type Token<'a> = <Self::Parameters<
5623                'a,
5624            > as alloy_sol_types::SolType>::Token<'a>;
5625            const SIGNATURE: &'static str = "DefaultAdminCannotBeRevoked()";
5626            const SELECTOR: [u8; 4] = [176u8, 181u8, 251u8, 153u8];
5627            #[inline]
5628            fn new<'a>(
5629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5630            ) -> Self {
5631                tuple.into()
5632            }
5633            #[inline]
5634            fn tokenize(&self) -> Self::Token<'_> {
5635                ()
5636            }
5637            #[inline]
5638            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5639                Self::abi_decode_raw_with_config(
5640                    data,
5641                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5642                )
5643            }
5644        }
5645    };
5646    #[derive(serde::Serialize, serde::Deserialize)]
5647    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5648    /**Custom error with signature `DelegateAmountTooSmall()` and selector `0x7d298731`.
5649```solidity
5650error DelegateAmountTooSmall();
5651```*/
5652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5653    #[derive(Clone)]
5654    pub struct DelegateAmountTooSmall;
5655    #[allow(
5656        non_camel_case_types,
5657        non_snake_case,
5658        clippy::pub_underscore_fields,
5659        clippy::style
5660    )]
5661    const _: () = {
5662        use alloy::sol_types as alloy_sol_types;
5663        #[doc(hidden)]
5664        #[allow(dead_code)]
5665        type UnderlyingSolTuple<'a> = ();
5666        #[doc(hidden)]
5667        type UnderlyingRustTuple<'a> = ();
5668        #[cfg(test)]
5669        #[allow(dead_code, unreachable_patterns)]
5670        fn _type_assertion(
5671            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5672        ) {
5673            match _t {
5674                alloy_sol_types::private::AssertTypeEq::<
5675                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5676                >(_) => {}
5677            }
5678        }
5679        #[automatically_derived]
5680        #[doc(hidden)]
5681        impl ::core::convert::From<DelegateAmountTooSmall> for UnderlyingRustTuple<'_> {
5682            fn from(value: DelegateAmountTooSmall) -> Self {
5683                ()
5684            }
5685        }
5686        #[automatically_derived]
5687        #[doc(hidden)]
5688        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DelegateAmountTooSmall {
5689            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5690                Self
5691            }
5692        }
5693        #[automatically_derived]
5694        impl alloy_sol_types::SolError for DelegateAmountTooSmall {
5695            type Parameters<'a> = UnderlyingSolTuple<'a>;
5696            type Token<'a> = <Self::Parameters<
5697                'a,
5698            > as alloy_sol_types::SolType>::Token<'a>;
5699            const SIGNATURE: &'static str = "DelegateAmountTooSmall()";
5700            const SELECTOR: [u8; 4] = [125u8, 41u8, 135u8, 49u8];
5701            #[inline]
5702            fn new<'a>(
5703                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5704            ) -> Self {
5705                tuple.into()
5706            }
5707            #[inline]
5708            fn tokenize(&self) -> Self::Token<'_> {
5709                ()
5710            }
5711            #[inline]
5712            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5713                Self::abi_decode_raw_with_config(
5714                    data,
5715                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5716                )
5717            }
5718        }
5719    };
5720    #[derive(serde::Serialize, serde::Deserialize)]
5721    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5722    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
5723```solidity
5724error DeprecatedFunction();
5725```*/
5726    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5727    #[derive(Clone)]
5728    pub struct DeprecatedFunction;
5729    #[allow(
5730        non_camel_case_types,
5731        non_snake_case,
5732        clippy::pub_underscore_fields,
5733        clippy::style
5734    )]
5735    const _: () = {
5736        use alloy::sol_types as alloy_sol_types;
5737        #[doc(hidden)]
5738        #[allow(dead_code)]
5739        type UnderlyingSolTuple<'a> = ();
5740        #[doc(hidden)]
5741        type UnderlyingRustTuple<'a> = ();
5742        #[cfg(test)]
5743        #[allow(dead_code, unreachable_patterns)]
5744        fn _type_assertion(
5745            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5746        ) {
5747            match _t {
5748                alloy_sol_types::private::AssertTypeEq::<
5749                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5750                >(_) => {}
5751            }
5752        }
5753        #[automatically_derived]
5754        #[doc(hidden)]
5755        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
5756            fn from(value: DeprecatedFunction) -> Self {
5757                ()
5758            }
5759        }
5760        #[automatically_derived]
5761        #[doc(hidden)]
5762        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
5763            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5764                Self
5765            }
5766        }
5767        #[automatically_derived]
5768        impl alloy_sol_types::SolError for DeprecatedFunction {
5769            type Parameters<'a> = UnderlyingSolTuple<'a>;
5770            type Token<'a> = <Self::Parameters<
5771                'a,
5772            > as alloy_sol_types::SolType>::Token<'a>;
5773            const SIGNATURE: &'static str = "DeprecatedFunction()";
5774            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
5775            #[inline]
5776            fn new<'a>(
5777                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5778            ) -> Self {
5779                tuple.into()
5780            }
5781            #[inline]
5782            fn tokenize(&self) -> Self::Token<'_> {
5783                ()
5784            }
5785            #[inline]
5786            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5787                Self::abi_decode_raw_with_config(
5788                    data,
5789                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5790                )
5791            }
5792        }
5793    };
5794    #[derive(serde::Serialize, serde::Deserialize)]
5795    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5796    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5797```solidity
5798error ERC1967InvalidImplementation(address implementation);
5799```*/
5800    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5801    #[derive(Clone)]
5802    pub struct ERC1967InvalidImplementation {
5803        #[allow(missing_docs)]
5804        pub implementation: alloy::sol_types::private::Address,
5805    }
5806    #[allow(
5807        non_camel_case_types,
5808        non_snake_case,
5809        clippy::pub_underscore_fields,
5810        clippy::style
5811    )]
5812    const _: () = {
5813        use alloy::sol_types as alloy_sol_types;
5814        #[doc(hidden)]
5815        #[allow(dead_code)]
5816        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5817        #[doc(hidden)]
5818        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5819        #[cfg(test)]
5820        #[allow(dead_code, unreachable_patterns)]
5821        fn _type_assertion(
5822            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5823        ) {
5824            match _t {
5825                alloy_sol_types::private::AssertTypeEq::<
5826                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5827                >(_) => {}
5828            }
5829        }
5830        #[automatically_derived]
5831        #[doc(hidden)]
5832        impl ::core::convert::From<ERC1967InvalidImplementation>
5833        for UnderlyingRustTuple<'_> {
5834            fn from(value: ERC1967InvalidImplementation) -> Self {
5835                (value.implementation,)
5836            }
5837        }
5838        #[automatically_derived]
5839        #[doc(hidden)]
5840        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5841        for ERC1967InvalidImplementation {
5842            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5843                Self { implementation: tuple.0 }
5844            }
5845        }
5846        #[automatically_derived]
5847        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5848            type Parameters<'a> = UnderlyingSolTuple<'a>;
5849            type Token<'a> = <Self::Parameters<
5850                'a,
5851            > as alloy_sol_types::SolType>::Token<'a>;
5852            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5853            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5854            #[inline]
5855            fn new<'a>(
5856                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5857            ) -> Self {
5858                tuple.into()
5859            }
5860            #[inline]
5861            fn tokenize(&self) -> Self::Token<'_> {
5862                (
5863                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5864                        &self.implementation,
5865                    ),
5866                )
5867            }
5868            #[inline]
5869            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5870                Self::abi_decode_raw_with_config(
5871                    data,
5872                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5873                )
5874            }
5875        }
5876    };
5877    #[derive(serde::Serialize, serde::Deserialize)]
5878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5879    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5880```solidity
5881error ERC1967NonPayable();
5882```*/
5883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5884    #[derive(Clone)]
5885    pub struct ERC1967NonPayable;
5886    #[allow(
5887        non_camel_case_types,
5888        non_snake_case,
5889        clippy::pub_underscore_fields,
5890        clippy::style
5891    )]
5892    const _: () = {
5893        use alloy::sol_types as alloy_sol_types;
5894        #[doc(hidden)]
5895        #[allow(dead_code)]
5896        type UnderlyingSolTuple<'a> = ();
5897        #[doc(hidden)]
5898        type UnderlyingRustTuple<'a> = ();
5899        #[cfg(test)]
5900        #[allow(dead_code, unreachable_patterns)]
5901        fn _type_assertion(
5902            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5903        ) {
5904            match _t {
5905                alloy_sol_types::private::AssertTypeEq::<
5906                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5907                >(_) => {}
5908            }
5909        }
5910        #[automatically_derived]
5911        #[doc(hidden)]
5912        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5913            fn from(value: ERC1967NonPayable) -> Self {
5914                ()
5915            }
5916        }
5917        #[automatically_derived]
5918        #[doc(hidden)]
5919        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5920            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5921                Self
5922            }
5923        }
5924        #[automatically_derived]
5925        impl alloy_sol_types::SolError for ERC1967NonPayable {
5926            type Parameters<'a> = UnderlyingSolTuple<'a>;
5927            type Token<'a> = <Self::Parameters<
5928                'a,
5929            > as alloy_sol_types::SolType>::Token<'a>;
5930            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5931            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5932            #[inline]
5933            fn new<'a>(
5934                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5935            ) -> Self {
5936                tuple.into()
5937            }
5938            #[inline]
5939            fn tokenize(&self) -> Self::Token<'_> {
5940                ()
5941            }
5942            #[inline]
5943            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5944                Self::abi_decode_raw_with_config(
5945                    data,
5946                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5947                )
5948            }
5949        }
5950    };
5951    #[derive(serde::Serialize, serde::Deserialize)]
5952    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5953    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
5954```solidity
5955error EnforcedPause();
5956```*/
5957    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5958    #[derive(Clone)]
5959    pub struct EnforcedPause;
5960    #[allow(
5961        non_camel_case_types,
5962        non_snake_case,
5963        clippy::pub_underscore_fields,
5964        clippy::style
5965    )]
5966    const _: () = {
5967        use alloy::sol_types as alloy_sol_types;
5968        #[doc(hidden)]
5969        #[allow(dead_code)]
5970        type UnderlyingSolTuple<'a> = ();
5971        #[doc(hidden)]
5972        type UnderlyingRustTuple<'a> = ();
5973        #[cfg(test)]
5974        #[allow(dead_code, unreachable_patterns)]
5975        fn _type_assertion(
5976            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5977        ) {
5978            match _t {
5979                alloy_sol_types::private::AssertTypeEq::<
5980                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5981                >(_) => {}
5982            }
5983        }
5984        #[automatically_derived]
5985        #[doc(hidden)]
5986        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
5987            fn from(value: EnforcedPause) -> Self {
5988                ()
5989            }
5990        }
5991        #[automatically_derived]
5992        #[doc(hidden)]
5993        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
5994            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5995                Self
5996            }
5997        }
5998        #[automatically_derived]
5999        impl alloy_sol_types::SolError for EnforcedPause {
6000            type Parameters<'a> = UnderlyingSolTuple<'a>;
6001            type Token<'a> = <Self::Parameters<
6002                'a,
6003            > as alloy_sol_types::SolType>::Token<'a>;
6004            const SIGNATURE: &'static str = "EnforcedPause()";
6005            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
6006            #[inline]
6007            fn new<'a>(
6008                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6009            ) -> Self {
6010                tuple.into()
6011            }
6012            #[inline]
6013            fn tokenize(&self) -> Self::Token<'_> {
6014                ()
6015            }
6016            #[inline]
6017            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6018                Self::abi_decode_raw_with_config(
6019                    data,
6020                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6021                )
6022            }
6023        }
6024    };
6025    #[derive(serde::Serialize, serde::Deserialize)]
6026    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6027    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
6028```solidity
6029error ExitEscrowPeriodInvalid();
6030```*/
6031    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6032    #[derive(Clone)]
6033    pub struct ExitEscrowPeriodInvalid;
6034    #[allow(
6035        non_camel_case_types,
6036        non_snake_case,
6037        clippy::pub_underscore_fields,
6038        clippy::style
6039    )]
6040    const _: () = {
6041        use alloy::sol_types as alloy_sol_types;
6042        #[doc(hidden)]
6043        #[allow(dead_code)]
6044        type UnderlyingSolTuple<'a> = ();
6045        #[doc(hidden)]
6046        type UnderlyingRustTuple<'a> = ();
6047        #[cfg(test)]
6048        #[allow(dead_code, unreachable_patterns)]
6049        fn _type_assertion(
6050            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6051        ) {
6052            match _t {
6053                alloy_sol_types::private::AssertTypeEq::<
6054                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6055                >(_) => {}
6056            }
6057        }
6058        #[automatically_derived]
6059        #[doc(hidden)]
6060        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
6061            fn from(value: ExitEscrowPeriodInvalid) -> Self {
6062                ()
6063            }
6064        }
6065        #[automatically_derived]
6066        #[doc(hidden)]
6067        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
6068            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6069                Self
6070            }
6071        }
6072        #[automatically_derived]
6073        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
6074            type Parameters<'a> = UnderlyingSolTuple<'a>;
6075            type Token<'a> = <Self::Parameters<
6076                'a,
6077            > as alloy_sol_types::SolType>::Token<'a>;
6078            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
6079            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
6080            #[inline]
6081            fn new<'a>(
6082                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6083            ) -> Self {
6084                tuple.into()
6085            }
6086            #[inline]
6087            fn tokenize(&self) -> Self::Token<'_> {
6088                ()
6089            }
6090            #[inline]
6091            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6092                Self::abi_decode_raw_with_config(
6093                    data,
6094                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6095                )
6096            }
6097        }
6098    };
6099    #[derive(serde::Serialize, serde::Deserialize)]
6100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6101    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
6102```solidity
6103error ExpectedPause();
6104```*/
6105    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6106    #[derive(Clone)]
6107    pub struct ExpectedPause;
6108    #[allow(
6109        non_camel_case_types,
6110        non_snake_case,
6111        clippy::pub_underscore_fields,
6112        clippy::style
6113    )]
6114    const _: () = {
6115        use alloy::sol_types as alloy_sol_types;
6116        #[doc(hidden)]
6117        #[allow(dead_code)]
6118        type UnderlyingSolTuple<'a> = ();
6119        #[doc(hidden)]
6120        type UnderlyingRustTuple<'a> = ();
6121        #[cfg(test)]
6122        #[allow(dead_code, unreachable_patterns)]
6123        fn _type_assertion(
6124            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6125        ) {
6126            match _t {
6127                alloy_sol_types::private::AssertTypeEq::<
6128                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6129                >(_) => {}
6130            }
6131        }
6132        #[automatically_derived]
6133        #[doc(hidden)]
6134        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
6135            fn from(value: ExpectedPause) -> Self {
6136                ()
6137            }
6138        }
6139        #[automatically_derived]
6140        #[doc(hidden)]
6141        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
6142            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6143                Self
6144            }
6145        }
6146        #[automatically_derived]
6147        impl alloy_sol_types::SolError for ExpectedPause {
6148            type Parameters<'a> = UnderlyingSolTuple<'a>;
6149            type Token<'a> = <Self::Parameters<
6150                'a,
6151            > as alloy_sol_types::SolType>::Token<'a>;
6152            const SIGNATURE: &'static str = "ExpectedPause()";
6153            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
6154            #[inline]
6155            fn new<'a>(
6156                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6157            ) -> Self {
6158                tuple.into()
6159            }
6160            #[inline]
6161            fn tokenize(&self) -> Self::Token<'_> {
6162                ()
6163            }
6164            #[inline]
6165            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6166                Self::abi_decode_raw_with_config(
6167                    data,
6168                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6169                )
6170            }
6171        }
6172    };
6173    #[derive(serde::Serialize, serde::Deserialize)]
6174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6175    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
6176```solidity
6177error FailedInnerCall();
6178```*/
6179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6180    #[derive(Clone)]
6181    pub struct FailedInnerCall;
6182    #[allow(
6183        non_camel_case_types,
6184        non_snake_case,
6185        clippy::pub_underscore_fields,
6186        clippy::style
6187    )]
6188    const _: () = {
6189        use alloy::sol_types as alloy_sol_types;
6190        #[doc(hidden)]
6191        #[allow(dead_code)]
6192        type UnderlyingSolTuple<'a> = ();
6193        #[doc(hidden)]
6194        type UnderlyingRustTuple<'a> = ();
6195        #[cfg(test)]
6196        #[allow(dead_code, unreachable_patterns)]
6197        fn _type_assertion(
6198            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6199        ) {
6200            match _t {
6201                alloy_sol_types::private::AssertTypeEq::<
6202                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6203                >(_) => {}
6204            }
6205        }
6206        #[automatically_derived]
6207        #[doc(hidden)]
6208        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
6209            fn from(value: FailedInnerCall) -> Self {
6210                ()
6211            }
6212        }
6213        #[automatically_derived]
6214        #[doc(hidden)]
6215        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
6216            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6217                Self
6218            }
6219        }
6220        #[automatically_derived]
6221        impl alloy_sol_types::SolError for FailedInnerCall {
6222            type Parameters<'a> = UnderlyingSolTuple<'a>;
6223            type Token<'a> = <Self::Parameters<
6224                'a,
6225            > as alloy_sol_types::SolType>::Token<'a>;
6226            const SIGNATURE: &'static str = "FailedInnerCall()";
6227            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
6228            #[inline]
6229            fn new<'a>(
6230                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6231            ) -> Self {
6232                tuple.into()
6233            }
6234            #[inline]
6235            fn tokenize(&self) -> Self::Token<'_> {
6236                ()
6237            }
6238            #[inline]
6239            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6240                Self::abi_decode_raw_with_config(
6241                    data,
6242                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6243                )
6244            }
6245        }
6246    };
6247    #[derive(serde::Serialize, serde::Deserialize)]
6248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6249    /**Custom error with signature `InitialActiveStakeExceedsBalance()` and selector `0x7b269e92`.
6250```solidity
6251error InitialActiveStakeExceedsBalance();
6252```*/
6253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6254    #[derive(Clone)]
6255    pub struct InitialActiveStakeExceedsBalance;
6256    #[allow(
6257        non_camel_case_types,
6258        non_snake_case,
6259        clippy::pub_underscore_fields,
6260        clippy::style
6261    )]
6262    const _: () = {
6263        use alloy::sol_types as alloy_sol_types;
6264        #[doc(hidden)]
6265        #[allow(dead_code)]
6266        type UnderlyingSolTuple<'a> = ();
6267        #[doc(hidden)]
6268        type UnderlyingRustTuple<'a> = ();
6269        #[cfg(test)]
6270        #[allow(dead_code, unreachable_patterns)]
6271        fn _type_assertion(
6272            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6273        ) {
6274            match _t {
6275                alloy_sol_types::private::AssertTypeEq::<
6276                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6277                >(_) => {}
6278            }
6279        }
6280        #[automatically_derived]
6281        #[doc(hidden)]
6282        impl ::core::convert::From<InitialActiveStakeExceedsBalance>
6283        for UnderlyingRustTuple<'_> {
6284            fn from(value: InitialActiveStakeExceedsBalance) -> Self {
6285                ()
6286            }
6287        }
6288        #[automatically_derived]
6289        #[doc(hidden)]
6290        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6291        for InitialActiveStakeExceedsBalance {
6292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6293                Self
6294            }
6295        }
6296        #[automatically_derived]
6297        impl alloy_sol_types::SolError for InitialActiveStakeExceedsBalance {
6298            type Parameters<'a> = UnderlyingSolTuple<'a>;
6299            type Token<'a> = <Self::Parameters<
6300                'a,
6301            > as alloy_sol_types::SolType>::Token<'a>;
6302            const SIGNATURE: &'static str = "InitialActiveStakeExceedsBalance()";
6303            const SELECTOR: [u8; 4] = [123u8, 38u8, 158u8, 146u8];
6304            #[inline]
6305            fn new<'a>(
6306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6307            ) -> Self {
6308                tuple.into()
6309            }
6310            #[inline]
6311            fn tokenize(&self) -> Self::Token<'_> {
6312                ()
6313            }
6314            #[inline]
6315            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6316                Self::abi_decode_raw_with_config(
6317                    data,
6318                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6319                )
6320            }
6321        }
6322    };
6323    #[derive(serde::Serialize, serde::Deserialize)]
6324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6325    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
6326```solidity
6327error InsufficientAllowance(uint256, uint256);
6328```*/
6329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6330    #[derive(Clone)]
6331    pub struct InsufficientAllowance {
6332        #[allow(missing_docs)]
6333        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6334        #[allow(missing_docs)]
6335        pub _1: alloy::sol_types::private::primitives::aliases::U256,
6336    }
6337    #[allow(
6338        non_camel_case_types,
6339        non_snake_case,
6340        clippy::pub_underscore_fields,
6341        clippy::style
6342    )]
6343    const _: () = {
6344        use alloy::sol_types as alloy_sol_types;
6345        #[doc(hidden)]
6346        #[allow(dead_code)]
6347        type UnderlyingSolTuple<'a> = (
6348            alloy::sol_types::sol_data::Uint<256>,
6349            alloy::sol_types::sol_data::Uint<256>,
6350        );
6351        #[doc(hidden)]
6352        type UnderlyingRustTuple<'a> = (
6353            alloy::sol_types::private::primitives::aliases::U256,
6354            alloy::sol_types::private::primitives::aliases::U256,
6355        );
6356        #[cfg(test)]
6357        #[allow(dead_code, unreachable_patterns)]
6358        fn _type_assertion(
6359            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6360        ) {
6361            match _t {
6362                alloy_sol_types::private::AssertTypeEq::<
6363                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6364                >(_) => {}
6365            }
6366        }
6367        #[automatically_derived]
6368        #[doc(hidden)]
6369        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
6370            fn from(value: InsufficientAllowance) -> Self {
6371                (value._0, value._1)
6372            }
6373        }
6374        #[automatically_derived]
6375        #[doc(hidden)]
6376        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
6377            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6378                Self { _0: tuple.0, _1: tuple.1 }
6379            }
6380        }
6381        #[automatically_derived]
6382        impl alloy_sol_types::SolError for InsufficientAllowance {
6383            type Parameters<'a> = UnderlyingSolTuple<'a>;
6384            type Token<'a> = <Self::Parameters<
6385                'a,
6386            > as alloy_sol_types::SolType>::Token<'a>;
6387            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
6388            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
6389            #[inline]
6390            fn new<'a>(
6391                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6392            ) -> Self {
6393                tuple.into()
6394            }
6395            #[inline]
6396            fn tokenize(&self) -> Self::Token<'_> {
6397                (
6398                    <alloy::sol_types::sol_data::Uint<
6399                        256,
6400                    > as alloy_sol_types::SolType>::tokenize(&self._0),
6401                    <alloy::sol_types::sol_data::Uint<
6402                        256,
6403                    > as alloy_sol_types::SolType>::tokenize(&self._1),
6404                )
6405            }
6406            #[inline]
6407            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6408                Self::abi_decode_raw_with_config(
6409                    data,
6410                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6411                )
6412            }
6413        }
6414    };
6415    #[derive(serde::Serialize, serde::Deserialize)]
6416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6417    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
6418```solidity
6419error InsufficientBalance(uint256);
6420```*/
6421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6422    #[derive(Clone)]
6423    pub struct InsufficientBalance(
6424        pub alloy::sol_types::private::primitives::aliases::U256,
6425    );
6426    #[allow(
6427        non_camel_case_types,
6428        non_snake_case,
6429        clippy::pub_underscore_fields,
6430        clippy::style
6431    )]
6432    const _: () = {
6433        use alloy::sol_types as alloy_sol_types;
6434        #[doc(hidden)]
6435        #[allow(dead_code)]
6436        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6437        #[doc(hidden)]
6438        type UnderlyingRustTuple<'a> = (
6439            alloy::sol_types::private::primitives::aliases::U256,
6440        );
6441        #[cfg(test)]
6442        #[allow(dead_code, unreachable_patterns)]
6443        fn _type_assertion(
6444            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6445        ) {
6446            match _t {
6447                alloy_sol_types::private::AssertTypeEq::<
6448                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6449                >(_) => {}
6450            }
6451        }
6452        #[automatically_derived]
6453        #[doc(hidden)]
6454        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
6455            fn from(value: InsufficientBalance) -> Self {
6456                (value.0,)
6457            }
6458        }
6459        #[automatically_derived]
6460        #[doc(hidden)]
6461        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
6462            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6463                Self(tuple.0)
6464            }
6465        }
6466        #[automatically_derived]
6467        impl alloy_sol_types::SolError for InsufficientBalance {
6468            type Parameters<'a> = UnderlyingSolTuple<'a>;
6469            type Token<'a> = <Self::Parameters<
6470                'a,
6471            > as alloy_sol_types::SolType>::Token<'a>;
6472            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
6473            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
6474            #[inline]
6475            fn new<'a>(
6476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6477            ) -> Self {
6478                tuple.into()
6479            }
6480            #[inline]
6481            fn tokenize(&self) -> Self::Token<'_> {
6482                (
6483                    <alloy::sol_types::sol_data::Uint<
6484                        256,
6485                    > as alloy_sol_types::SolType>::tokenize(&self.0),
6486                )
6487            }
6488            #[inline]
6489            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6490                Self::abi_decode_raw_with_config(
6491                    data,
6492                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6493                )
6494            }
6495        }
6496    };
6497    #[derive(serde::Serialize, serde::Deserialize)]
6498    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6499    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
6500```solidity
6501error InvalidCommission();
6502```*/
6503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6504    #[derive(Clone)]
6505    pub struct InvalidCommission;
6506    #[allow(
6507        non_camel_case_types,
6508        non_snake_case,
6509        clippy::pub_underscore_fields,
6510        clippy::style
6511    )]
6512    const _: () = {
6513        use alloy::sol_types as alloy_sol_types;
6514        #[doc(hidden)]
6515        #[allow(dead_code)]
6516        type UnderlyingSolTuple<'a> = ();
6517        #[doc(hidden)]
6518        type UnderlyingRustTuple<'a> = ();
6519        #[cfg(test)]
6520        #[allow(dead_code, unreachable_patterns)]
6521        fn _type_assertion(
6522            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6523        ) {
6524            match _t {
6525                alloy_sol_types::private::AssertTypeEq::<
6526                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6527                >(_) => {}
6528            }
6529        }
6530        #[automatically_derived]
6531        #[doc(hidden)]
6532        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
6533            fn from(value: InvalidCommission) -> Self {
6534                ()
6535            }
6536        }
6537        #[automatically_derived]
6538        #[doc(hidden)]
6539        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
6540            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6541                Self
6542            }
6543        }
6544        #[automatically_derived]
6545        impl alloy_sol_types::SolError for InvalidCommission {
6546            type Parameters<'a> = UnderlyingSolTuple<'a>;
6547            type Token<'a> = <Self::Parameters<
6548                'a,
6549            > as alloy_sol_types::SolType>::Token<'a>;
6550            const SIGNATURE: &'static str = "InvalidCommission()";
6551            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
6552            #[inline]
6553            fn new<'a>(
6554                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6555            ) -> Self {
6556                tuple.into()
6557            }
6558            #[inline]
6559            fn tokenize(&self) -> Self::Token<'_> {
6560                ()
6561            }
6562            #[inline]
6563            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6564                Self::abi_decode_raw_with_config(
6565                    data,
6566                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6567                )
6568            }
6569        }
6570    };
6571    #[derive(serde::Serialize, serde::Deserialize)]
6572    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6573    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
6574```solidity
6575error InvalidG1();
6576```*/
6577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6578    #[derive(Clone)]
6579    pub struct InvalidG1;
6580    #[allow(
6581        non_camel_case_types,
6582        non_snake_case,
6583        clippy::pub_underscore_fields,
6584        clippy::style
6585    )]
6586    const _: () = {
6587        use alloy::sol_types as alloy_sol_types;
6588        #[doc(hidden)]
6589        #[allow(dead_code)]
6590        type UnderlyingSolTuple<'a> = ();
6591        #[doc(hidden)]
6592        type UnderlyingRustTuple<'a> = ();
6593        #[cfg(test)]
6594        #[allow(dead_code, unreachable_patterns)]
6595        fn _type_assertion(
6596            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6597        ) {
6598            match _t {
6599                alloy_sol_types::private::AssertTypeEq::<
6600                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6601                >(_) => {}
6602            }
6603        }
6604        #[automatically_derived]
6605        #[doc(hidden)]
6606        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
6607            fn from(value: InvalidG1) -> Self {
6608                ()
6609            }
6610        }
6611        #[automatically_derived]
6612        #[doc(hidden)]
6613        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
6614            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6615                Self
6616            }
6617        }
6618        #[automatically_derived]
6619        impl alloy_sol_types::SolError for InvalidG1 {
6620            type Parameters<'a> = UnderlyingSolTuple<'a>;
6621            type Token<'a> = <Self::Parameters<
6622                'a,
6623            > as alloy_sol_types::SolType>::Token<'a>;
6624            const SIGNATURE: &'static str = "InvalidG1()";
6625            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
6626            #[inline]
6627            fn new<'a>(
6628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6629            ) -> Self {
6630                tuple.into()
6631            }
6632            #[inline]
6633            fn tokenize(&self) -> Self::Token<'_> {
6634                ()
6635            }
6636            #[inline]
6637            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6638                Self::abi_decode_raw_with_config(
6639                    data,
6640                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6641                )
6642            }
6643        }
6644    };
6645    #[derive(serde::Serialize, serde::Deserialize)]
6646    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6647    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6648```solidity
6649error InvalidInitialization();
6650```*/
6651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6652    #[derive(Clone)]
6653    pub struct InvalidInitialization;
6654    #[allow(
6655        non_camel_case_types,
6656        non_snake_case,
6657        clippy::pub_underscore_fields,
6658        clippy::style
6659    )]
6660    const _: () = {
6661        use alloy::sol_types as alloy_sol_types;
6662        #[doc(hidden)]
6663        #[allow(dead_code)]
6664        type UnderlyingSolTuple<'a> = ();
6665        #[doc(hidden)]
6666        type UnderlyingRustTuple<'a> = ();
6667        #[cfg(test)]
6668        #[allow(dead_code, unreachable_patterns)]
6669        fn _type_assertion(
6670            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6671        ) {
6672            match _t {
6673                alloy_sol_types::private::AssertTypeEq::<
6674                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6675                >(_) => {}
6676            }
6677        }
6678        #[automatically_derived]
6679        #[doc(hidden)]
6680        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6681            fn from(value: InvalidInitialization) -> Self {
6682                ()
6683            }
6684        }
6685        #[automatically_derived]
6686        #[doc(hidden)]
6687        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6688            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6689                Self
6690            }
6691        }
6692        #[automatically_derived]
6693        impl alloy_sol_types::SolError for InvalidInitialization {
6694            type Parameters<'a> = UnderlyingSolTuple<'a>;
6695            type Token<'a> = <Self::Parameters<
6696                'a,
6697            > as alloy_sol_types::SolType>::Token<'a>;
6698            const SIGNATURE: &'static str = "InvalidInitialization()";
6699            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6700            #[inline]
6701            fn new<'a>(
6702                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6703            ) -> Self {
6704                tuple.into()
6705            }
6706            #[inline]
6707            fn tokenize(&self) -> Self::Token<'_> {
6708                ()
6709            }
6710            #[inline]
6711            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6712                Self::abi_decode_raw_with_config(
6713                    data,
6714                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6715                )
6716            }
6717        }
6718    };
6719    #[derive(serde::Serialize, serde::Deserialize)]
6720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6721    /**Custom error with signature `InvalidMetadataUriLength()` and selector `0x239ff57f`.
6722```solidity
6723error InvalidMetadataUriLength();
6724```*/
6725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6726    #[derive(Clone)]
6727    pub struct InvalidMetadataUriLength;
6728    #[allow(
6729        non_camel_case_types,
6730        non_snake_case,
6731        clippy::pub_underscore_fields,
6732        clippy::style
6733    )]
6734    const _: () = {
6735        use alloy::sol_types as alloy_sol_types;
6736        #[doc(hidden)]
6737        #[allow(dead_code)]
6738        type UnderlyingSolTuple<'a> = ();
6739        #[doc(hidden)]
6740        type UnderlyingRustTuple<'a> = ();
6741        #[cfg(test)]
6742        #[allow(dead_code, unreachable_patterns)]
6743        fn _type_assertion(
6744            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6745        ) {
6746            match _t {
6747                alloy_sol_types::private::AssertTypeEq::<
6748                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6749                >(_) => {}
6750            }
6751        }
6752        #[automatically_derived]
6753        #[doc(hidden)]
6754        impl ::core::convert::From<InvalidMetadataUriLength>
6755        for UnderlyingRustTuple<'_> {
6756            fn from(value: InvalidMetadataUriLength) -> Self {
6757                ()
6758            }
6759        }
6760        #[automatically_derived]
6761        #[doc(hidden)]
6762        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6763        for InvalidMetadataUriLength {
6764            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6765                Self
6766            }
6767        }
6768        #[automatically_derived]
6769        impl alloy_sol_types::SolError for InvalidMetadataUriLength {
6770            type Parameters<'a> = UnderlyingSolTuple<'a>;
6771            type Token<'a> = <Self::Parameters<
6772                'a,
6773            > as alloy_sol_types::SolType>::Token<'a>;
6774            const SIGNATURE: &'static str = "InvalidMetadataUriLength()";
6775            const SELECTOR: [u8; 4] = [35u8, 159u8, 245u8, 127u8];
6776            #[inline]
6777            fn new<'a>(
6778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6779            ) -> Self {
6780                tuple.into()
6781            }
6782            #[inline]
6783            fn tokenize(&self) -> Self::Token<'_> {
6784                ()
6785            }
6786            #[inline]
6787            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6788                Self::abi_decode_raw_with_config(
6789                    data,
6790                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6791                )
6792            }
6793        }
6794    };
6795    #[derive(serde::Serialize, serde::Deserialize)]
6796    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6797    /**Custom error with signature `InvalidP2pAddr()` and selector `0x79790d7c`.
6798```solidity
6799error InvalidP2pAddr();
6800```*/
6801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6802    #[derive(Clone)]
6803    pub struct InvalidP2pAddr;
6804    #[allow(
6805        non_camel_case_types,
6806        non_snake_case,
6807        clippy::pub_underscore_fields,
6808        clippy::style
6809    )]
6810    const _: () = {
6811        use alloy::sol_types as alloy_sol_types;
6812        #[doc(hidden)]
6813        #[allow(dead_code)]
6814        type UnderlyingSolTuple<'a> = ();
6815        #[doc(hidden)]
6816        type UnderlyingRustTuple<'a> = ();
6817        #[cfg(test)]
6818        #[allow(dead_code, unreachable_patterns)]
6819        fn _type_assertion(
6820            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6821        ) {
6822            match _t {
6823                alloy_sol_types::private::AssertTypeEq::<
6824                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6825                >(_) => {}
6826            }
6827        }
6828        #[automatically_derived]
6829        #[doc(hidden)]
6830        impl ::core::convert::From<InvalidP2pAddr> for UnderlyingRustTuple<'_> {
6831            fn from(value: InvalidP2pAddr) -> Self {
6832                ()
6833            }
6834        }
6835        #[automatically_derived]
6836        #[doc(hidden)]
6837        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidP2pAddr {
6838            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6839                Self
6840            }
6841        }
6842        #[automatically_derived]
6843        impl alloy_sol_types::SolError for InvalidP2pAddr {
6844            type Parameters<'a> = UnderlyingSolTuple<'a>;
6845            type Token<'a> = <Self::Parameters<
6846                'a,
6847            > as alloy_sol_types::SolType>::Token<'a>;
6848            const SIGNATURE: &'static str = "InvalidP2pAddr()";
6849            const SELECTOR: [u8; 4] = [121u8, 121u8, 13u8, 124u8];
6850            #[inline]
6851            fn new<'a>(
6852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6853            ) -> Self {
6854                tuple.into()
6855            }
6856            #[inline]
6857            fn tokenize(&self) -> Self::Token<'_> {
6858                ()
6859            }
6860            #[inline]
6861            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6862                Self::abi_decode_raw_with_config(
6863                    data,
6864                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6865                )
6866            }
6867        }
6868    };
6869    #[derive(serde::Serialize, serde::Deserialize)]
6870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6871    /**Custom error with signature `InvalidRateLimitParameters()` and selector `0x674e8ef3`.
6872```solidity
6873error InvalidRateLimitParameters();
6874```*/
6875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6876    #[derive(Clone)]
6877    pub struct InvalidRateLimitParameters;
6878    #[allow(
6879        non_camel_case_types,
6880        non_snake_case,
6881        clippy::pub_underscore_fields,
6882        clippy::style
6883    )]
6884    const _: () = {
6885        use alloy::sol_types as alloy_sol_types;
6886        #[doc(hidden)]
6887        #[allow(dead_code)]
6888        type UnderlyingSolTuple<'a> = ();
6889        #[doc(hidden)]
6890        type UnderlyingRustTuple<'a> = ();
6891        #[cfg(test)]
6892        #[allow(dead_code, unreachable_patterns)]
6893        fn _type_assertion(
6894            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6895        ) {
6896            match _t {
6897                alloy_sol_types::private::AssertTypeEq::<
6898                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6899                >(_) => {}
6900            }
6901        }
6902        #[automatically_derived]
6903        #[doc(hidden)]
6904        impl ::core::convert::From<InvalidRateLimitParameters>
6905        for UnderlyingRustTuple<'_> {
6906            fn from(value: InvalidRateLimitParameters) -> Self {
6907                ()
6908            }
6909        }
6910        #[automatically_derived]
6911        #[doc(hidden)]
6912        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6913        for InvalidRateLimitParameters {
6914            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6915                Self
6916            }
6917        }
6918        #[automatically_derived]
6919        impl alloy_sol_types::SolError for InvalidRateLimitParameters {
6920            type Parameters<'a> = UnderlyingSolTuple<'a>;
6921            type Token<'a> = <Self::Parameters<
6922                'a,
6923            > as alloy_sol_types::SolType>::Token<'a>;
6924            const SIGNATURE: &'static str = "InvalidRateLimitParameters()";
6925            const SELECTOR: [u8; 4] = [103u8, 78u8, 142u8, 243u8];
6926            #[inline]
6927            fn new<'a>(
6928                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6929            ) -> Self {
6930                tuple.into()
6931            }
6932            #[inline]
6933            fn tokenize(&self) -> Self::Token<'_> {
6934                ()
6935            }
6936            #[inline]
6937            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6938                Self::abi_decode_raw_with_config(
6939                    data,
6940                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6941                )
6942            }
6943        }
6944    };
6945    #[derive(serde::Serialize, serde::Deserialize)]
6946    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6947    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
6948```solidity
6949error InvalidSchnorrSig();
6950```*/
6951    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6952    #[derive(Clone)]
6953    pub struct InvalidSchnorrSig;
6954    #[allow(
6955        non_camel_case_types,
6956        non_snake_case,
6957        clippy::pub_underscore_fields,
6958        clippy::style
6959    )]
6960    const _: () = {
6961        use alloy::sol_types as alloy_sol_types;
6962        #[doc(hidden)]
6963        #[allow(dead_code)]
6964        type UnderlyingSolTuple<'a> = ();
6965        #[doc(hidden)]
6966        type UnderlyingRustTuple<'a> = ();
6967        #[cfg(test)]
6968        #[allow(dead_code, unreachable_patterns)]
6969        fn _type_assertion(
6970            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6971        ) {
6972            match _t {
6973                alloy_sol_types::private::AssertTypeEq::<
6974                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6975                >(_) => {}
6976            }
6977        }
6978        #[automatically_derived]
6979        #[doc(hidden)]
6980        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
6981            fn from(value: InvalidSchnorrSig) -> Self {
6982                ()
6983            }
6984        }
6985        #[automatically_derived]
6986        #[doc(hidden)]
6987        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
6988            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6989                Self
6990            }
6991        }
6992        #[automatically_derived]
6993        impl alloy_sol_types::SolError for InvalidSchnorrSig {
6994            type Parameters<'a> = UnderlyingSolTuple<'a>;
6995            type Token<'a> = <Self::Parameters<
6996                'a,
6997            > as alloy_sol_types::SolType>::Token<'a>;
6998            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
6999            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
7000            #[inline]
7001            fn new<'a>(
7002                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7003            ) -> Self {
7004                tuple.into()
7005            }
7006            #[inline]
7007            fn tokenize(&self) -> Self::Token<'_> {
7008                ()
7009            }
7010            #[inline]
7011            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7012                Self::abi_decode_raw_with_config(
7013                    data,
7014                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7015                )
7016            }
7017        }
7018    };
7019    #[derive(serde::Serialize, serde::Deserialize)]
7020    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7021    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
7022```solidity
7023error InvalidSchnorrVK();
7024```*/
7025    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7026    #[derive(Clone)]
7027    pub struct InvalidSchnorrVK;
7028    #[allow(
7029        non_camel_case_types,
7030        non_snake_case,
7031        clippy::pub_underscore_fields,
7032        clippy::style
7033    )]
7034    const _: () = {
7035        use alloy::sol_types as alloy_sol_types;
7036        #[doc(hidden)]
7037        #[allow(dead_code)]
7038        type UnderlyingSolTuple<'a> = ();
7039        #[doc(hidden)]
7040        type UnderlyingRustTuple<'a> = ();
7041        #[cfg(test)]
7042        #[allow(dead_code, unreachable_patterns)]
7043        fn _type_assertion(
7044            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7045        ) {
7046            match _t {
7047                alloy_sol_types::private::AssertTypeEq::<
7048                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7049                >(_) => {}
7050            }
7051        }
7052        #[automatically_derived]
7053        #[doc(hidden)]
7054        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
7055            fn from(value: InvalidSchnorrVK) -> Self {
7056                ()
7057            }
7058        }
7059        #[automatically_derived]
7060        #[doc(hidden)]
7061        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
7062            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7063                Self
7064            }
7065        }
7066        #[automatically_derived]
7067        impl alloy_sol_types::SolError for InvalidSchnorrVK {
7068            type Parameters<'a> = UnderlyingSolTuple<'a>;
7069            type Token<'a> = <Self::Parameters<
7070                'a,
7071            > as alloy_sol_types::SolType>::Token<'a>;
7072            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
7073            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
7074            #[inline]
7075            fn new<'a>(
7076                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7077            ) -> Self {
7078                tuple.into()
7079            }
7080            #[inline]
7081            fn tokenize(&self) -> Self::Token<'_> {
7082                ()
7083            }
7084            #[inline]
7085            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7086                Self::abi_decode_raw_with_config(
7087                    data,
7088                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7089                )
7090            }
7091        }
7092    };
7093    #[derive(serde::Serialize, serde::Deserialize)]
7094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7095    /**Custom error with signature `InvalidX25519Key()` and selector `0x3e4ba13f`.
7096```solidity
7097error InvalidX25519Key();
7098```*/
7099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7100    #[derive(Clone)]
7101    pub struct InvalidX25519Key;
7102    #[allow(
7103        non_camel_case_types,
7104        non_snake_case,
7105        clippy::pub_underscore_fields,
7106        clippy::style
7107    )]
7108    const _: () = {
7109        use alloy::sol_types as alloy_sol_types;
7110        #[doc(hidden)]
7111        #[allow(dead_code)]
7112        type UnderlyingSolTuple<'a> = ();
7113        #[doc(hidden)]
7114        type UnderlyingRustTuple<'a> = ();
7115        #[cfg(test)]
7116        #[allow(dead_code, unreachable_patterns)]
7117        fn _type_assertion(
7118            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7119        ) {
7120            match _t {
7121                alloy_sol_types::private::AssertTypeEq::<
7122                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7123                >(_) => {}
7124            }
7125        }
7126        #[automatically_derived]
7127        #[doc(hidden)]
7128        impl ::core::convert::From<InvalidX25519Key> for UnderlyingRustTuple<'_> {
7129            fn from(value: InvalidX25519Key) -> Self {
7130                ()
7131            }
7132        }
7133        #[automatically_derived]
7134        #[doc(hidden)]
7135        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidX25519Key {
7136            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7137                Self
7138            }
7139        }
7140        #[automatically_derived]
7141        impl alloy_sol_types::SolError for InvalidX25519Key {
7142            type Parameters<'a> = UnderlyingSolTuple<'a>;
7143            type Token<'a> = <Self::Parameters<
7144                'a,
7145            > as alloy_sol_types::SolType>::Token<'a>;
7146            const SIGNATURE: &'static str = "InvalidX25519Key()";
7147            const SELECTOR: [u8; 4] = [62u8, 75u8, 161u8, 63u8];
7148            #[inline]
7149            fn new<'a>(
7150                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7151            ) -> Self {
7152                tuple.into()
7153            }
7154            #[inline]
7155            fn tokenize(&self) -> Self::Token<'_> {
7156                ()
7157            }
7158            #[inline]
7159            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7160                Self::abi_decode_raw_with_config(
7161                    data,
7162                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7163                )
7164            }
7165        }
7166    };
7167    #[derive(serde::Serialize, serde::Deserialize)]
7168    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7169    /**Custom error with signature `MinDelegateAmountTooSmall()` and selector `0x90b8678a`.
7170```solidity
7171error MinDelegateAmountTooSmall();
7172```*/
7173    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7174    #[derive(Clone)]
7175    pub struct MinDelegateAmountTooSmall;
7176    #[allow(
7177        non_camel_case_types,
7178        non_snake_case,
7179        clippy::pub_underscore_fields,
7180        clippy::style
7181    )]
7182    const _: () = {
7183        use alloy::sol_types as alloy_sol_types;
7184        #[doc(hidden)]
7185        #[allow(dead_code)]
7186        type UnderlyingSolTuple<'a> = ();
7187        #[doc(hidden)]
7188        type UnderlyingRustTuple<'a> = ();
7189        #[cfg(test)]
7190        #[allow(dead_code, unreachable_patterns)]
7191        fn _type_assertion(
7192            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7193        ) {
7194            match _t {
7195                alloy_sol_types::private::AssertTypeEq::<
7196                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7197                >(_) => {}
7198            }
7199        }
7200        #[automatically_derived]
7201        #[doc(hidden)]
7202        impl ::core::convert::From<MinDelegateAmountTooSmall>
7203        for UnderlyingRustTuple<'_> {
7204            fn from(value: MinDelegateAmountTooSmall) -> Self {
7205                ()
7206            }
7207        }
7208        #[automatically_derived]
7209        #[doc(hidden)]
7210        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7211        for MinDelegateAmountTooSmall {
7212            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7213                Self
7214            }
7215        }
7216        #[automatically_derived]
7217        impl alloy_sol_types::SolError for MinDelegateAmountTooSmall {
7218            type Parameters<'a> = UnderlyingSolTuple<'a>;
7219            type Token<'a> = <Self::Parameters<
7220                'a,
7221            > as alloy_sol_types::SolType>::Token<'a>;
7222            const SIGNATURE: &'static str = "MinDelegateAmountTooSmall()";
7223            const SELECTOR: [u8; 4] = [144u8, 184u8, 103u8, 138u8];
7224            #[inline]
7225            fn new<'a>(
7226                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7227            ) -> Self {
7228                tuple.into()
7229            }
7230            #[inline]
7231            fn tokenize(&self) -> Self::Token<'_> {
7232                ()
7233            }
7234            #[inline]
7235            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7236                Self::abi_decode_raw_with_config(
7237                    data,
7238                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7239                )
7240            }
7241        }
7242    };
7243    #[derive(serde::Serialize, serde::Deserialize)]
7244    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7245    /**Custom error with signature `NoUndelegationFound()` and selector `0xb524fd6a`.
7246```solidity
7247error NoUndelegationFound();
7248```*/
7249    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7250    #[derive(Clone)]
7251    pub struct NoUndelegationFound;
7252    #[allow(
7253        non_camel_case_types,
7254        non_snake_case,
7255        clippy::pub_underscore_fields,
7256        clippy::style
7257    )]
7258    const _: () = {
7259        use alloy::sol_types as alloy_sol_types;
7260        #[doc(hidden)]
7261        #[allow(dead_code)]
7262        type UnderlyingSolTuple<'a> = ();
7263        #[doc(hidden)]
7264        type UnderlyingRustTuple<'a> = ();
7265        #[cfg(test)]
7266        #[allow(dead_code, unreachable_patterns)]
7267        fn _type_assertion(
7268            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7269        ) {
7270            match _t {
7271                alloy_sol_types::private::AssertTypeEq::<
7272                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7273                >(_) => {}
7274            }
7275        }
7276        #[automatically_derived]
7277        #[doc(hidden)]
7278        impl ::core::convert::From<NoUndelegationFound> for UnderlyingRustTuple<'_> {
7279            fn from(value: NoUndelegationFound) -> Self {
7280                ()
7281            }
7282        }
7283        #[automatically_derived]
7284        #[doc(hidden)]
7285        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoUndelegationFound {
7286            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7287                Self
7288            }
7289        }
7290        #[automatically_derived]
7291        impl alloy_sol_types::SolError for NoUndelegationFound {
7292            type Parameters<'a> = UnderlyingSolTuple<'a>;
7293            type Token<'a> = <Self::Parameters<
7294                'a,
7295            > as alloy_sol_types::SolType>::Token<'a>;
7296            const SIGNATURE: &'static str = "NoUndelegationFound()";
7297            const SELECTOR: [u8; 4] = [181u8, 36u8, 253u8, 106u8];
7298            #[inline]
7299            fn new<'a>(
7300                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7301            ) -> Self {
7302                tuple.into()
7303            }
7304            #[inline]
7305            fn tokenize(&self) -> Self::Token<'_> {
7306                ()
7307            }
7308            #[inline]
7309            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7310                Self::abi_decode_raw_with_config(
7311                    data,
7312                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7313                )
7314            }
7315        }
7316    };
7317    #[derive(serde::Serialize, serde::Deserialize)]
7318    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7319    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
7320```solidity
7321error NotInitializing();
7322```*/
7323    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7324    #[derive(Clone)]
7325    pub struct NotInitializing;
7326    #[allow(
7327        non_camel_case_types,
7328        non_snake_case,
7329        clippy::pub_underscore_fields,
7330        clippy::style
7331    )]
7332    const _: () = {
7333        use alloy::sol_types as alloy_sol_types;
7334        #[doc(hidden)]
7335        #[allow(dead_code)]
7336        type UnderlyingSolTuple<'a> = ();
7337        #[doc(hidden)]
7338        type UnderlyingRustTuple<'a> = ();
7339        #[cfg(test)]
7340        #[allow(dead_code, unreachable_patterns)]
7341        fn _type_assertion(
7342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7343        ) {
7344            match _t {
7345                alloy_sol_types::private::AssertTypeEq::<
7346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7347                >(_) => {}
7348            }
7349        }
7350        #[automatically_derived]
7351        #[doc(hidden)]
7352        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
7353            fn from(value: NotInitializing) -> Self {
7354                ()
7355            }
7356        }
7357        #[automatically_derived]
7358        #[doc(hidden)]
7359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
7360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7361                Self
7362            }
7363        }
7364        #[automatically_derived]
7365        impl alloy_sol_types::SolError for NotInitializing {
7366            type Parameters<'a> = UnderlyingSolTuple<'a>;
7367            type Token<'a> = <Self::Parameters<
7368                'a,
7369            > as alloy_sol_types::SolType>::Token<'a>;
7370            const SIGNATURE: &'static str = "NotInitializing()";
7371            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
7372            #[inline]
7373            fn new<'a>(
7374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7375            ) -> Self {
7376                tuple.into()
7377            }
7378            #[inline]
7379            fn tokenize(&self) -> Self::Token<'_> {
7380                ()
7381            }
7382            #[inline]
7383            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7384                Self::abi_decode_raw_with_config(
7385                    data,
7386                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7387                )
7388            }
7389        }
7390    };
7391    #[derive(serde::Serialize, serde::Deserialize)]
7392    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7393    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
7394```solidity
7395error NothingToWithdraw();
7396```*/
7397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7398    #[derive(Clone)]
7399    pub struct NothingToWithdraw;
7400    #[allow(
7401        non_camel_case_types,
7402        non_snake_case,
7403        clippy::pub_underscore_fields,
7404        clippy::style
7405    )]
7406    const _: () = {
7407        use alloy::sol_types as alloy_sol_types;
7408        #[doc(hidden)]
7409        #[allow(dead_code)]
7410        type UnderlyingSolTuple<'a> = ();
7411        #[doc(hidden)]
7412        type UnderlyingRustTuple<'a> = ();
7413        #[cfg(test)]
7414        #[allow(dead_code, unreachable_patterns)]
7415        fn _type_assertion(
7416            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7417        ) {
7418            match _t {
7419                alloy_sol_types::private::AssertTypeEq::<
7420                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7421                >(_) => {}
7422            }
7423        }
7424        #[automatically_derived]
7425        #[doc(hidden)]
7426        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
7427            fn from(value: NothingToWithdraw) -> Self {
7428                ()
7429            }
7430        }
7431        #[automatically_derived]
7432        #[doc(hidden)]
7433        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
7434            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7435                Self
7436            }
7437        }
7438        #[automatically_derived]
7439        impl alloy_sol_types::SolError for NothingToWithdraw {
7440            type Parameters<'a> = UnderlyingSolTuple<'a>;
7441            type Token<'a> = <Self::Parameters<
7442                'a,
7443            > as alloy_sol_types::SolType>::Token<'a>;
7444            const SIGNATURE: &'static str = "NothingToWithdraw()";
7445            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
7446            #[inline]
7447            fn new<'a>(
7448                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7449            ) -> Self {
7450                tuple.into()
7451            }
7452            #[inline]
7453            fn tokenize(&self) -> Self::Token<'_> {
7454                ()
7455            }
7456            #[inline]
7457            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7458                Self::abi_decode_raw_with_config(
7459                    data,
7460                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7461                )
7462            }
7463        }
7464    };
7465    #[derive(serde::Serialize, serde::Deserialize)]
7466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7467    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
7468```solidity
7469error OwnableInvalidOwner(address owner);
7470```*/
7471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7472    #[derive(Clone)]
7473    pub struct OwnableInvalidOwner {
7474        #[allow(missing_docs)]
7475        pub owner: alloy::sol_types::private::Address,
7476    }
7477    #[allow(
7478        non_camel_case_types,
7479        non_snake_case,
7480        clippy::pub_underscore_fields,
7481        clippy::style
7482    )]
7483    const _: () = {
7484        use alloy::sol_types as alloy_sol_types;
7485        #[doc(hidden)]
7486        #[allow(dead_code)]
7487        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7488        #[doc(hidden)]
7489        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7490        #[cfg(test)]
7491        #[allow(dead_code, unreachable_patterns)]
7492        fn _type_assertion(
7493            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7494        ) {
7495            match _t {
7496                alloy_sol_types::private::AssertTypeEq::<
7497                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7498                >(_) => {}
7499            }
7500        }
7501        #[automatically_derived]
7502        #[doc(hidden)]
7503        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
7504            fn from(value: OwnableInvalidOwner) -> Self {
7505                (value.owner,)
7506            }
7507        }
7508        #[automatically_derived]
7509        #[doc(hidden)]
7510        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
7511            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7512                Self { owner: tuple.0 }
7513            }
7514        }
7515        #[automatically_derived]
7516        impl alloy_sol_types::SolError for OwnableInvalidOwner {
7517            type Parameters<'a> = UnderlyingSolTuple<'a>;
7518            type Token<'a> = <Self::Parameters<
7519                'a,
7520            > as alloy_sol_types::SolType>::Token<'a>;
7521            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
7522            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
7523            #[inline]
7524            fn new<'a>(
7525                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7526            ) -> Self {
7527                tuple.into()
7528            }
7529            #[inline]
7530            fn tokenize(&self) -> Self::Token<'_> {
7531                (
7532                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7533                        &self.owner,
7534                    ),
7535                )
7536            }
7537            #[inline]
7538            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7539                Self::abi_decode_raw_with_config(
7540                    data,
7541                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7542                )
7543            }
7544        }
7545    };
7546    #[derive(serde::Serialize, serde::Deserialize)]
7547    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7548    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
7549```solidity
7550error OwnableUnauthorizedAccount(address account);
7551```*/
7552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7553    #[derive(Clone)]
7554    pub struct OwnableUnauthorizedAccount {
7555        #[allow(missing_docs)]
7556        pub account: alloy::sol_types::private::Address,
7557    }
7558    #[allow(
7559        non_camel_case_types,
7560        non_snake_case,
7561        clippy::pub_underscore_fields,
7562        clippy::style
7563    )]
7564    const _: () = {
7565        use alloy::sol_types as alloy_sol_types;
7566        #[doc(hidden)]
7567        #[allow(dead_code)]
7568        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7569        #[doc(hidden)]
7570        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7571        #[cfg(test)]
7572        #[allow(dead_code, unreachable_patterns)]
7573        fn _type_assertion(
7574            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7575        ) {
7576            match _t {
7577                alloy_sol_types::private::AssertTypeEq::<
7578                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7579                >(_) => {}
7580            }
7581        }
7582        #[automatically_derived]
7583        #[doc(hidden)]
7584        impl ::core::convert::From<OwnableUnauthorizedAccount>
7585        for UnderlyingRustTuple<'_> {
7586            fn from(value: OwnableUnauthorizedAccount) -> Self {
7587                (value.account,)
7588            }
7589        }
7590        #[automatically_derived]
7591        #[doc(hidden)]
7592        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7593        for OwnableUnauthorizedAccount {
7594            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7595                Self { account: tuple.0 }
7596            }
7597        }
7598        #[automatically_derived]
7599        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
7600            type Parameters<'a> = UnderlyingSolTuple<'a>;
7601            type Token<'a> = <Self::Parameters<
7602                'a,
7603            > as alloy_sol_types::SolType>::Token<'a>;
7604            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
7605            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
7606            #[inline]
7607            fn new<'a>(
7608                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7609            ) -> Self {
7610                tuple.into()
7611            }
7612            #[inline]
7613            fn tokenize(&self) -> Self::Token<'_> {
7614                (
7615                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7616                        &self.account,
7617                    ),
7618                )
7619            }
7620            #[inline]
7621            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7622                Self::abi_decode_raw_with_config(
7623                    data,
7624                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7625                )
7626            }
7627        }
7628    };
7629    #[derive(serde::Serialize, serde::Deserialize)]
7630    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7631    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
7632```solidity
7633error OwnershipCannotBeRenounced();
7634```*/
7635    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7636    #[derive(Clone)]
7637    pub struct OwnershipCannotBeRenounced;
7638    #[allow(
7639        non_camel_case_types,
7640        non_snake_case,
7641        clippy::pub_underscore_fields,
7642        clippy::style
7643    )]
7644    const _: () = {
7645        use alloy::sol_types as alloy_sol_types;
7646        #[doc(hidden)]
7647        #[allow(dead_code)]
7648        type UnderlyingSolTuple<'a> = ();
7649        #[doc(hidden)]
7650        type UnderlyingRustTuple<'a> = ();
7651        #[cfg(test)]
7652        #[allow(dead_code, unreachable_patterns)]
7653        fn _type_assertion(
7654            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7655        ) {
7656            match _t {
7657                alloy_sol_types::private::AssertTypeEq::<
7658                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7659                >(_) => {}
7660            }
7661        }
7662        #[automatically_derived]
7663        #[doc(hidden)]
7664        impl ::core::convert::From<OwnershipCannotBeRenounced>
7665        for UnderlyingRustTuple<'_> {
7666            fn from(value: OwnershipCannotBeRenounced) -> Self {
7667                ()
7668            }
7669        }
7670        #[automatically_derived]
7671        #[doc(hidden)]
7672        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7673        for OwnershipCannotBeRenounced {
7674            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7675                Self
7676            }
7677        }
7678        #[automatically_derived]
7679        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
7680            type Parameters<'a> = UnderlyingSolTuple<'a>;
7681            type Token<'a> = <Self::Parameters<
7682                'a,
7683            > as alloy_sol_types::SolType>::Token<'a>;
7684            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
7685            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
7686            #[inline]
7687            fn new<'a>(
7688                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7689            ) -> Self {
7690                tuple.into()
7691            }
7692            #[inline]
7693            fn tokenize(&self) -> Self::Token<'_> {
7694                ()
7695            }
7696            #[inline]
7697            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7698                Self::abi_decode_raw_with_config(
7699                    data,
7700                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7701                )
7702            }
7703        }
7704    };
7705    #[derive(serde::Serialize, serde::Deserialize)]
7706    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7707    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
7708```solidity
7709error PowPrecompileFailed();
7710```*/
7711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7712    #[derive(Clone)]
7713    pub struct PowPrecompileFailed;
7714    #[allow(
7715        non_camel_case_types,
7716        non_snake_case,
7717        clippy::pub_underscore_fields,
7718        clippy::style
7719    )]
7720    const _: () = {
7721        use alloy::sol_types as alloy_sol_types;
7722        #[doc(hidden)]
7723        #[allow(dead_code)]
7724        type UnderlyingSolTuple<'a> = ();
7725        #[doc(hidden)]
7726        type UnderlyingRustTuple<'a> = ();
7727        #[cfg(test)]
7728        #[allow(dead_code, unreachable_patterns)]
7729        fn _type_assertion(
7730            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7731        ) {
7732            match _t {
7733                alloy_sol_types::private::AssertTypeEq::<
7734                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7735                >(_) => {}
7736            }
7737        }
7738        #[automatically_derived]
7739        #[doc(hidden)]
7740        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
7741            fn from(value: PowPrecompileFailed) -> Self {
7742                ()
7743            }
7744        }
7745        #[automatically_derived]
7746        #[doc(hidden)]
7747        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
7748            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7749                Self
7750            }
7751        }
7752        #[automatically_derived]
7753        impl alloy_sol_types::SolError for PowPrecompileFailed {
7754            type Parameters<'a> = UnderlyingSolTuple<'a>;
7755            type Token<'a> = <Self::Parameters<
7756                'a,
7757            > as alloy_sol_types::SolType>::Token<'a>;
7758            const SIGNATURE: &'static str = "PowPrecompileFailed()";
7759            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
7760            #[inline]
7761            fn new<'a>(
7762                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7763            ) -> Self {
7764                tuple.into()
7765            }
7766            #[inline]
7767            fn tokenize(&self) -> Self::Token<'_> {
7768                ()
7769            }
7770            #[inline]
7771            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7772                Self::abi_decode_raw_with_config(
7773                    data,
7774                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7775                )
7776            }
7777        }
7778    };
7779    #[derive(serde::Serialize, serde::Deserialize)]
7780    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7781    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
7782```solidity
7783error PrematureWithdrawal();
7784```*/
7785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7786    #[derive(Clone)]
7787    pub struct PrematureWithdrawal;
7788    #[allow(
7789        non_camel_case_types,
7790        non_snake_case,
7791        clippy::pub_underscore_fields,
7792        clippy::style
7793    )]
7794    const _: () = {
7795        use alloy::sol_types as alloy_sol_types;
7796        #[doc(hidden)]
7797        #[allow(dead_code)]
7798        type UnderlyingSolTuple<'a> = ();
7799        #[doc(hidden)]
7800        type UnderlyingRustTuple<'a> = ();
7801        #[cfg(test)]
7802        #[allow(dead_code, unreachable_patterns)]
7803        fn _type_assertion(
7804            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7805        ) {
7806            match _t {
7807                alloy_sol_types::private::AssertTypeEq::<
7808                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7809                >(_) => {}
7810            }
7811        }
7812        #[automatically_derived]
7813        #[doc(hidden)]
7814        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
7815            fn from(value: PrematureWithdrawal) -> Self {
7816                ()
7817            }
7818        }
7819        #[automatically_derived]
7820        #[doc(hidden)]
7821        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
7822            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7823                Self
7824            }
7825        }
7826        #[automatically_derived]
7827        impl alloy_sol_types::SolError for PrematureWithdrawal {
7828            type Parameters<'a> = UnderlyingSolTuple<'a>;
7829            type Token<'a> = <Self::Parameters<
7830                'a,
7831            > as alloy_sol_types::SolType>::Token<'a>;
7832            const SIGNATURE: &'static str = "PrematureWithdrawal()";
7833            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
7834            #[inline]
7835            fn new<'a>(
7836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7837            ) -> Self {
7838                tuple.into()
7839            }
7840            #[inline]
7841            fn tokenize(&self) -> Self::Token<'_> {
7842                ()
7843            }
7844            #[inline]
7845            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7846                Self::abi_decode_raw_with_config(
7847                    data,
7848                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7849                )
7850            }
7851        }
7852    };
7853    #[derive(serde::Serialize, serde::Deserialize)]
7854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7855    /**Custom error with signature `SchnorrKeyAlreadyUsed()` and selector `0xae493b03`.
7856```solidity
7857error SchnorrKeyAlreadyUsed();
7858```*/
7859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7860    #[derive(Clone)]
7861    pub struct SchnorrKeyAlreadyUsed;
7862    #[allow(
7863        non_camel_case_types,
7864        non_snake_case,
7865        clippy::pub_underscore_fields,
7866        clippy::style
7867    )]
7868    const _: () = {
7869        use alloy::sol_types as alloy_sol_types;
7870        #[doc(hidden)]
7871        #[allow(dead_code)]
7872        type UnderlyingSolTuple<'a> = ();
7873        #[doc(hidden)]
7874        type UnderlyingRustTuple<'a> = ();
7875        #[cfg(test)]
7876        #[allow(dead_code, unreachable_patterns)]
7877        fn _type_assertion(
7878            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7879        ) {
7880            match _t {
7881                alloy_sol_types::private::AssertTypeEq::<
7882                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7883                >(_) => {}
7884            }
7885        }
7886        #[automatically_derived]
7887        #[doc(hidden)]
7888        impl ::core::convert::From<SchnorrKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
7889            fn from(value: SchnorrKeyAlreadyUsed) -> Self {
7890                ()
7891            }
7892        }
7893        #[automatically_derived]
7894        #[doc(hidden)]
7895        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SchnorrKeyAlreadyUsed {
7896            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7897                Self
7898            }
7899        }
7900        #[automatically_derived]
7901        impl alloy_sol_types::SolError for SchnorrKeyAlreadyUsed {
7902            type Parameters<'a> = UnderlyingSolTuple<'a>;
7903            type Token<'a> = <Self::Parameters<
7904                'a,
7905            > as alloy_sol_types::SolType>::Token<'a>;
7906            const SIGNATURE: &'static str = "SchnorrKeyAlreadyUsed()";
7907            const SELECTOR: [u8; 4] = [174u8, 73u8, 59u8, 3u8];
7908            #[inline]
7909            fn new<'a>(
7910                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7911            ) -> Self {
7912                tuple.into()
7913            }
7914            #[inline]
7915            fn tokenize(&self) -> Self::Token<'_> {
7916                ()
7917            }
7918            #[inline]
7919            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7920                Self::abi_decode_raw_with_config(
7921                    data,
7922                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7923                )
7924            }
7925        }
7926    };
7927    #[derive(serde::Serialize, serde::Deserialize)]
7928    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7929    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7930```solidity
7931error UUPSUnauthorizedCallContext();
7932```*/
7933    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7934    #[derive(Clone)]
7935    pub struct UUPSUnauthorizedCallContext;
7936    #[allow(
7937        non_camel_case_types,
7938        non_snake_case,
7939        clippy::pub_underscore_fields,
7940        clippy::style
7941    )]
7942    const _: () = {
7943        use alloy::sol_types as alloy_sol_types;
7944        #[doc(hidden)]
7945        #[allow(dead_code)]
7946        type UnderlyingSolTuple<'a> = ();
7947        #[doc(hidden)]
7948        type UnderlyingRustTuple<'a> = ();
7949        #[cfg(test)]
7950        #[allow(dead_code, unreachable_patterns)]
7951        fn _type_assertion(
7952            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7953        ) {
7954            match _t {
7955                alloy_sol_types::private::AssertTypeEq::<
7956                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7957                >(_) => {}
7958            }
7959        }
7960        #[automatically_derived]
7961        #[doc(hidden)]
7962        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7963        for UnderlyingRustTuple<'_> {
7964            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7965                ()
7966            }
7967        }
7968        #[automatically_derived]
7969        #[doc(hidden)]
7970        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7971        for UUPSUnauthorizedCallContext {
7972            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7973                Self
7974            }
7975        }
7976        #[automatically_derived]
7977        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7978            type Parameters<'a> = UnderlyingSolTuple<'a>;
7979            type Token<'a> = <Self::Parameters<
7980                'a,
7981            > as alloy_sol_types::SolType>::Token<'a>;
7982            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7983            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7984            #[inline]
7985            fn new<'a>(
7986                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7987            ) -> Self {
7988                tuple.into()
7989            }
7990            #[inline]
7991            fn tokenize(&self) -> Self::Token<'_> {
7992                ()
7993            }
7994            #[inline]
7995            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7996                Self::abi_decode_raw_with_config(
7997                    data,
7998                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7999                )
8000            }
8001        }
8002    };
8003    #[derive(serde::Serialize, serde::Deserialize)]
8004    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8005    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
8006```solidity
8007error UUPSUnsupportedProxiableUUID(bytes32 slot);
8008```*/
8009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8010    #[derive(Clone)]
8011    pub struct UUPSUnsupportedProxiableUUID {
8012        #[allow(missing_docs)]
8013        pub slot: alloy::sol_types::private::FixedBytes<32>,
8014    }
8015    #[allow(
8016        non_camel_case_types,
8017        non_snake_case,
8018        clippy::pub_underscore_fields,
8019        clippy::style
8020    )]
8021    const _: () = {
8022        use alloy::sol_types as alloy_sol_types;
8023        #[doc(hidden)]
8024        #[allow(dead_code)]
8025        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8026        #[doc(hidden)]
8027        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8028        #[cfg(test)]
8029        #[allow(dead_code, unreachable_patterns)]
8030        fn _type_assertion(
8031            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8032        ) {
8033            match _t {
8034                alloy_sol_types::private::AssertTypeEq::<
8035                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8036                >(_) => {}
8037            }
8038        }
8039        #[automatically_derived]
8040        #[doc(hidden)]
8041        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
8042        for UnderlyingRustTuple<'_> {
8043            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
8044                (value.slot,)
8045            }
8046        }
8047        #[automatically_derived]
8048        #[doc(hidden)]
8049        impl ::core::convert::From<UnderlyingRustTuple<'_>>
8050        for UUPSUnsupportedProxiableUUID {
8051            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8052                Self { slot: tuple.0 }
8053            }
8054        }
8055        #[automatically_derived]
8056        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
8057            type Parameters<'a> = UnderlyingSolTuple<'a>;
8058            type Token<'a> = <Self::Parameters<
8059                'a,
8060            > as alloy_sol_types::SolType>::Token<'a>;
8061            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
8062            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
8063            #[inline]
8064            fn new<'a>(
8065                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8066            ) -> Self {
8067                tuple.into()
8068            }
8069            #[inline]
8070            fn tokenize(&self) -> Self::Token<'_> {
8071                (
8072                    <alloy::sol_types::sol_data::FixedBytes<
8073                        32,
8074                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
8075                )
8076            }
8077            #[inline]
8078            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8079                Self::abi_decode_raw_with_config(
8080                    data,
8081                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8082                )
8083            }
8084        }
8085    };
8086    #[derive(serde::Serialize, serde::Deserialize)]
8087    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8088    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
8089```solidity
8090error UndelegationAlreadyExists();
8091```*/
8092    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8093    #[derive(Clone)]
8094    pub struct UndelegationAlreadyExists;
8095    #[allow(
8096        non_camel_case_types,
8097        non_snake_case,
8098        clippy::pub_underscore_fields,
8099        clippy::style
8100    )]
8101    const _: () = {
8102        use alloy::sol_types as alloy_sol_types;
8103        #[doc(hidden)]
8104        #[allow(dead_code)]
8105        type UnderlyingSolTuple<'a> = ();
8106        #[doc(hidden)]
8107        type UnderlyingRustTuple<'a> = ();
8108        #[cfg(test)]
8109        #[allow(dead_code, unreachable_patterns)]
8110        fn _type_assertion(
8111            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8112        ) {
8113            match _t {
8114                alloy_sol_types::private::AssertTypeEq::<
8115                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8116                >(_) => {}
8117            }
8118        }
8119        #[automatically_derived]
8120        #[doc(hidden)]
8121        impl ::core::convert::From<UndelegationAlreadyExists>
8122        for UnderlyingRustTuple<'_> {
8123            fn from(value: UndelegationAlreadyExists) -> Self {
8124                ()
8125            }
8126        }
8127        #[automatically_derived]
8128        #[doc(hidden)]
8129        impl ::core::convert::From<UnderlyingRustTuple<'_>>
8130        for UndelegationAlreadyExists {
8131            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8132                Self
8133            }
8134        }
8135        #[automatically_derived]
8136        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
8137            type Parameters<'a> = UnderlyingSolTuple<'a>;
8138            type Token<'a> = <Self::Parameters<
8139                'a,
8140            > as alloy_sol_types::SolType>::Token<'a>;
8141            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
8142            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
8143            #[inline]
8144            fn new<'a>(
8145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8146            ) -> Self {
8147                tuple.into()
8148            }
8149            #[inline]
8150            fn tokenize(&self) -> Self::Token<'_> {
8151                ()
8152            }
8153            #[inline]
8154            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8155                Self::abi_decode_raw_with_config(
8156                    data,
8157                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8158                )
8159            }
8160        }
8161    };
8162    #[derive(serde::Serialize, serde::Deserialize)]
8163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8164    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
8165```solidity
8166error ValidatorAlreadyExited();
8167```*/
8168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8169    #[derive(Clone)]
8170    pub struct ValidatorAlreadyExited;
8171    #[allow(
8172        non_camel_case_types,
8173        non_snake_case,
8174        clippy::pub_underscore_fields,
8175        clippy::style
8176    )]
8177    const _: () = {
8178        use alloy::sol_types as alloy_sol_types;
8179        #[doc(hidden)]
8180        #[allow(dead_code)]
8181        type UnderlyingSolTuple<'a> = ();
8182        #[doc(hidden)]
8183        type UnderlyingRustTuple<'a> = ();
8184        #[cfg(test)]
8185        #[allow(dead_code, unreachable_patterns)]
8186        fn _type_assertion(
8187            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8188        ) {
8189            match _t {
8190                alloy_sol_types::private::AssertTypeEq::<
8191                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8192                >(_) => {}
8193            }
8194        }
8195        #[automatically_derived]
8196        #[doc(hidden)]
8197        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
8198            fn from(value: ValidatorAlreadyExited) -> Self {
8199                ()
8200            }
8201        }
8202        #[automatically_derived]
8203        #[doc(hidden)]
8204        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
8205            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8206                Self
8207            }
8208        }
8209        #[automatically_derived]
8210        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
8211            type Parameters<'a> = UnderlyingSolTuple<'a>;
8212            type Token<'a> = <Self::Parameters<
8213                'a,
8214            > as alloy_sol_types::SolType>::Token<'a>;
8215            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
8216            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
8217            #[inline]
8218            fn new<'a>(
8219                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8220            ) -> Self {
8221                tuple.into()
8222            }
8223            #[inline]
8224            fn tokenize(&self) -> Self::Token<'_> {
8225                ()
8226            }
8227            #[inline]
8228            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8229                Self::abi_decode_raw_with_config(
8230                    data,
8231                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8232                )
8233            }
8234        }
8235    };
8236    #[derive(serde::Serialize, serde::Deserialize)]
8237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8238    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
8239```solidity
8240error ValidatorAlreadyRegistered();
8241```*/
8242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8243    #[derive(Clone)]
8244    pub struct ValidatorAlreadyRegistered;
8245    #[allow(
8246        non_camel_case_types,
8247        non_snake_case,
8248        clippy::pub_underscore_fields,
8249        clippy::style
8250    )]
8251    const _: () = {
8252        use alloy::sol_types as alloy_sol_types;
8253        #[doc(hidden)]
8254        #[allow(dead_code)]
8255        type UnderlyingSolTuple<'a> = ();
8256        #[doc(hidden)]
8257        type UnderlyingRustTuple<'a> = ();
8258        #[cfg(test)]
8259        #[allow(dead_code, unreachable_patterns)]
8260        fn _type_assertion(
8261            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8262        ) {
8263            match _t {
8264                alloy_sol_types::private::AssertTypeEq::<
8265                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8266                >(_) => {}
8267            }
8268        }
8269        #[automatically_derived]
8270        #[doc(hidden)]
8271        impl ::core::convert::From<ValidatorAlreadyRegistered>
8272        for UnderlyingRustTuple<'_> {
8273            fn from(value: ValidatorAlreadyRegistered) -> Self {
8274                ()
8275            }
8276        }
8277        #[automatically_derived]
8278        #[doc(hidden)]
8279        impl ::core::convert::From<UnderlyingRustTuple<'_>>
8280        for ValidatorAlreadyRegistered {
8281            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8282                Self
8283            }
8284        }
8285        #[automatically_derived]
8286        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
8287            type Parameters<'a> = UnderlyingSolTuple<'a>;
8288            type Token<'a> = <Self::Parameters<
8289                'a,
8290            > as alloy_sol_types::SolType>::Token<'a>;
8291            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
8292            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
8293            #[inline]
8294            fn new<'a>(
8295                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8296            ) -> Self {
8297                tuple.into()
8298            }
8299            #[inline]
8300            fn tokenize(&self) -> Self::Token<'_> {
8301                ()
8302            }
8303            #[inline]
8304            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8305                Self::abi_decode_raw_with_config(
8306                    data,
8307                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8308                )
8309            }
8310        }
8311    };
8312    #[derive(serde::Serialize, serde::Deserialize)]
8313    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8314    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
8315```solidity
8316error ValidatorInactive();
8317```*/
8318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8319    #[derive(Clone)]
8320    pub struct ValidatorInactive;
8321    #[allow(
8322        non_camel_case_types,
8323        non_snake_case,
8324        clippy::pub_underscore_fields,
8325        clippy::style
8326    )]
8327    const _: () = {
8328        use alloy::sol_types as alloy_sol_types;
8329        #[doc(hidden)]
8330        #[allow(dead_code)]
8331        type UnderlyingSolTuple<'a> = ();
8332        #[doc(hidden)]
8333        type UnderlyingRustTuple<'a> = ();
8334        #[cfg(test)]
8335        #[allow(dead_code, unreachable_patterns)]
8336        fn _type_assertion(
8337            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8338        ) {
8339            match _t {
8340                alloy_sol_types::private::AssertTypeEq::<
8341                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8342                >(_) => {}
8343            }
8344        }
8345        #[automatically_derived]
8346        #[doc(hidden)]
8347        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
8348            fn from(value: ValidatorInactive) -> Self {
8349                ()
8350            }
8351        }
8352        #[automatically_derived]
8353        #[doc(hidden)]
8354        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
8355            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8356                Self
8357            }
8358        }
8359        #[automatically_derived]
8360        impl alloy_sol_types::SolError for ValidatorInactive {
8361            type Parameters<'a> = UnderlyingSolTuple<'a>;
8362            type Token<'a> = <Self::Parameters<
8363                'a,
8364            > as alloy_sol_types::SolType>::Token<'a>;
8365            const SIGNATURE: &'static str = "ValidatorInactive()";
8366            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
8367            #[inline]
8368            fn new<'a>(
8369                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8370            ) -> Self {
8371                tuple.into()
8372            }
8373            #[inline]
8374            fn tokenize(&self) -> Self::Token<'_> {
8375                ()
8376            }
8377            #[inline]
8378            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8379                Self::abi_decode_raw_with_config(
8380                    data,
8381                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8382                )
8383            }
8384        }
8385    };
8386    #[derive(serde::Serialize, serde::Deserialize)]
8387    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8388    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
8389```solidity
8390error ValidatorNotExited();
8391```*/
8392    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8393    #[derive(Clone)]
8394    pub struct ValidatorNotExited;
8395    #[allow(
8396        non_camel_case_types,
8397        non_snake_case,
8398        clippy::pub_underscore_fields,
8399        clippy::style
8400    )]
8401    const _: () = {
8402        use alloy::sol_types as alloy_sol_types;
8403        #[doc(hidden)]
8404        #[allow(dead_code)]
8405        type UnderlyingSolTuple<'a> = ();
8406        #[doc(hidden)]
8407        type UnderlyingRustTuple<'a> = ();
8408        #[cfg(test)]
8409        #[allow(dead_code, unreachable_patterns)]
8410        fn _type_assertion(
8411            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8412        ) {
8413            match _t {
8414                alloy_sol_types::private::AssertTypeEq::<
8415                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8416                >(_) => {}
8417            }
8418        }
8419        #[automatically_derived]
8420        #[doc(hidden)]
8421        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
8422            fn from(value: ValidatorNotExited) -> Self {
8423                ()
8424            }
8425        }
8426        #[automatically_derived]
8427        #[doc(hidden)]
8428        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
8429            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8430                Self
8431            }
8432        }
8433        #[automatically_derived]
8434        impl alloy_sol_types::SolError for ValidatorNotExited {
8435            type Parameters<'a> = UnderlyingSolTuple<'a>;
8436            type Token<'a> = <Self::Parameters<
8437                'a,
8438            > as alloy_sol_types::SolType>::Token<'a>;
8439            const SIGNATURE: &'static str = "ValidatorNotExited()";
8440            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
8441            #[inline]
8442            fn new<'a>(
8443                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8444            ) -> Self {
8445                tuple.into()
8446            }
8447            #[inline]
8448            fn tokenize(&self) -> Self::Token<'_> {
8449                ()
8450            }
8451            #[inline]
8452            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8453                Self::abi_decode_raw_with_config(
8454                    data,
8455                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8456                )
8457            }
8458        }
8459    };
8460    #[derive(serde::Serialize, serde::Deserialize)]
8461    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8462    /**Custom error with signature `X25519KeyAlreadyUsed()` and selector `0xb23640ec`.
8463```solidity
8464error X25519KeyAlreadyUsed();
8465```*/
8466    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8467    #[derive(Clone)]
8468    pub struct X25519KeyAlreadyUsed;
8469    #[allow(
8470        non_camel_case_types,
8471        non_snake_case,
8472        clippy::pub_underscore_fields,
8473        clippy::style
8474    )]
8475    const _: () = {
8476        use alloy::sol_types as alloy_sol_types;
8477        #[doc(hidden)]
8478        #[allow(dead_code)]
8479        type UnderlyingSolTuple<'a> = ();
8480        #[doc(hidden)]
8481        type UnderlyingRustTuple<'a> = ();
8482        #[cfg(test)]
8483        #[allow(dead_code, unreachable_patterns)]
8484        fn _type_assertion(
8485            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8486        ) {
8487            match _t {
8488                alloy_sol_types::private::AssertTypeEq::<
8489                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8490                >(_) => {}
8491            }
8492        }
8493        #[automatically_derived]
8494        #[doc(hidden)]
8495        impl ::core::convert::From<X25519KeyAlreadyUsed> for UnderlyingRustTuple<'_> {
8496            fn from(value: X25519KeyAlreadyUsed) -> Self {
8497                ()
8498            }
8499        }
8500        #[automatically_derived]
8501        #[doc(hidden)]
8502        impl ::core::convert::From<UnderlyingRustTuple<'_>> for X25519KeyAlreadyUsed {
8503            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8504                Self
8505            }
8506        }
8507        #[automatically_derived]
8508        impl alloy_sol_types::SolError for X25519KeyAlreadyUsed {
8509            type Parameters<'a> = UnderlyingSolTuple<'a>;
8510            type Token<'a> = <Self::Parameters<
8511                'a,
8512            > as alloy_sol_types::SolType>::Token<'a>;
8513            const SIGNATURE: &'static str = "X25519KeyAlreadyUsed()";
8514            const SELECTOR: [u8; 4] = [178u8, 54u8, 64u8, 236u8];
8515            #[inline]
8516            fn new<'a>(
8517                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8518            ) -> Self {
8519                tuple.into()
8520            }
8521            #[inline]
8522            fn tokenize(&self) -> Self::Token<'_> {
8523                ()
8524            }
8525            #[inline]
8526            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8527                Self::abi_decode_raw_with_config(
8528                    data,
8529                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8530                )
8531            }
8532        }
8533    };
8534    #[derive(serde::Serialize, serde::Deserialize)]
8535    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8536    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
8537```solidity
8538error ZeroAddress();
8539```*/
8540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8541    #[derive(Clone)]
8542    pub struct ZeroAddress;
8543    #[allow(
8544        non_camel_case_types,
8545        non_snake_case,
8546        clippy::pub_underscore_fields,
8547        clippy::style
8548    )]
8549    const _: () = {
8550        use alloy::sol_types as alloy_sol_types;
8551        #[doc(hidden)]
8552        #[allow(dead_code)]
8553        type UnderlyingSolTuple<'a> = ();
8554        #[doc(hidden)]
8555        type UnderlyingRustTuple<'a> = ();
8556        #[cfg(test)]
8557        #[allow(dead_code, unreachable_patterns)]
8558        fn _type_assertion(
8559            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8560        ) {
8561            match _t {
8562                alloy_sol_types::private::AssertTypeEq::<
8563                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8564                >(_) => {}
8565            }
8566        }
8567        #[automatically_derived]
8568        #[doc(hidden)]
8569        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
8570            fn from(value: ZeroAddress) -> Self {
8571                ()
8572            }
8573        }
8574        #[automatically_derived]
8575        #[doc(hidden)]
8576        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
8577            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8578                Self
8579            }
8580        }
8581        #[automatically_derived]
8582        impl alloy_sol_types::SolError for ZeroAddress {
8583            type Parameters<'a> = UnderlyingSolTuple<'a>;
8584            type Token<'a> = <Self::Parameters<
8585                'a,
8586            > as alloy_sol_types::SolType>::Token<'a>;
8587            const SIGNATURE: &'static str = "ZeroAddress()";
8588            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
8589            #[inline]
8590            fn new<'a>(
8591                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8592            ) -> Self {
8593                tuple.into()
8594            }
8595            #[inline]
8596            fn tokenize(&self) -> Self::Token<'_> {
8597                ()
8598            }
8599            #[inline]
8600            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8601                Self::abi_decode_raw_with_config(
8602                    data,
8603                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8604                )
8605            }
8606        }
8607    };
8608    #[derive(serde::Serialize, serde::Deserialize)]
8609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8610    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
8611```solidity
8612error ZeroAmount();
8613```*/
8614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8615    #[derive(Clone)]
8616    pub struct ZeroAmount;
8617    #[allow(
8618        non_camel_case_types,
8619        non_snake_case,
8620        clippy::pub_underscore_fields,
8621        clippy::style
8622    )]
8623    const _: () = {
8624        use alloy::sol_types as alloy_sol_types;
8625        #[doc(hidden)]
8626        #[allow(dead_code)]
8627        type UnderlyingSolTuple<'a> = ();
8628        #[doc(hidden)]
8629        type UnderlyingRustTuple<'a> = ();
8630        #[cfg(test)]
8631        #[allow(dead_code, unreachable_patterns)]
8632        fn _type_assertion(
8633            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8634        ) {
8635            match _t {
8636                alloy_sol_types::private::AssertTypeEq::<
8637                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8638                >(_) => {}
8639            }
8640        }
8641        #[automatically_derived]
8642        #[doc(hidden)]
8643        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
8644            fn from(value: ZeroAmount) -> Self {
8645                ()
8646            }
8647        }
8648        #[automatically_derived]
8649        #[doc(hidden)]
8650        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
8651            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8652                Self
8653            }
8654        }
8655        #[automatically_derived]
8656        impl alloy_sol_types::SolError for ZeroAmount {
8657            type Parameters<'a> = UnderlyingSolTuple<'a>;
8658            type Token<'a> = <Self::Parameters<
8659                'a,
8660            > as alloy_sol_types::SolType>::Token<'a>;
8661            const SIGNATURE: &'static str = "ZeroAmount()";
8662            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
8663            #[inline]
8664            fn new<'a>(
8665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8666            ) -> Self {
8667                tuple.into()
8668            }
8669            #[inline]
8670            fn tokenize(&self) -> Self::Token<'_> {
8671                ()
8672            }
8673            #[inline]
8674            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8675                Self::abi_decode_raw_with_config(
8676                    data,
8677                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8678                )
8679            }
8680        }
8681    };
8682    #[derive(serde::Serialize, serde::Deserialize)]
8683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8684    /**Event with signature `CommissionUpdated(address,uint256,uint16,uint16)` and selector `0xbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd64`.
8685```solidity
8686event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
8687```*/
8688    #[allow(
8689        non_camel_case_types,
8690        non_snake_case,
8691        clippy::pub_underscore_fields,
8692        clippy::style
8693    )]
8694    #[derive(Clone)]
8695    pub struct CommissionUpdated {
8696        #[allow(missing_docs)]
8697        pub validator: alloy::sol_types::private::Address,
8698        #[allow(missing_docs)]
8699        pub timestamp: alloy::sol_types::private::primitives::aliases::U256,
8700        #[allow(missing_docs)]
8701        pub oldCommission: u16,
8702        #[allow(missing_docs)]
8703        pub newCommission: u16,
8704    }
8705    #[allow(
8706        non_camel_case_types,
8707        non_snake_case,
8708        clippy::pub_underscore_fields,
8709        clippy::style
8710    )]
8711    const _: () = {
8712        use alloy::sol_types as alloy_sol_types;
8713        #[automatically_derived]
8714        impl alloy_sol_types::SolEvent for CommissionUpdated {
8715            type DataTuple<'a> = (
8716                alloy::sol_types::sol_data::Uint<256>,
8717                alloy::sol_types::sol_data::Uint<16>,
8718                alloy::sol_types::sol_data::Uint<16>,
8719            );
8720            type DataToken<'a> = <Self::DataTuple<
8721                'a,
8722            > as alloy_sol_types::SolType>::Token<'a>;
8723            type TopicList = (
8724                alloy_sol_types::sol_data::FixedBytes<32>,
8725                alloy::sol_types::sol_data::Address,
8726            );
8727            const SIGNATURE: &'static str = "CommissionUpdated(address,uint256,uint16,uint16)";
8728            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8729                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
8730                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
8731                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
8732            ]);
8733            const ANONYMOUS: bool = false;
8734            #[allow(unused_variables)]
8735            #[inline]
8736            fn new(
8737                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8738                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8739            ) -> Self {
8740                Self {
8741                    validator: topics.1,
8742                    timestamp: data.0,
8743                    oldCommission: data.1,
8744                    newCommission: data.2,
8745                }
8746            }
8747            #[inline]
8748            fn check_signature(
8749                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8750            ) -> alloy_sol_types::Result<()> {
8751                if topics.0 != Self::SIGNATURE_HASH {
8752                    return Err(
8753                        alloy_sol_types::Error::invalid_event_signature_hash(
8754                            Self::SIGNATURE,
8755                            topics.0,
8756                            Self::SIGNATURE_HASH,
8757                        ),
8758                    );
8759                }
8760                Ok(())
8761            }
8762            #[inline]
8763            fn tokenize_body(&self) -> Self::DataToken<'_> {
8764                (
8765                    <alloy::sol_types::sol_data::Uint<
8766                        256,
8767                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
8768                    <alloy::sol_types::sol_data::Uint<
8769                        16,
8770                    > as alloy_sol_types::SolType>::tokenize(&self.oldCommission),
8771                    <alloy::sol_types::sol_data::Uint<
8772                        16,
8773                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
8774                )
8775            }
8776            #[inline]
8777            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8778                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8779            }
8780            #[inline]
8781            fn encode_topics_raw(
8782                &self,
8783                out: &mut [alloy_sol_types::abi::token::WordToken],
8784            ) -> alloy_sol_types::Result<()> {
8785                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8786                    return Err(alloy_sol_types::Error::Overrun);
8787                }
8788                out[0usize] = alloy_sol_types::abi::token::WordToken(
8789                    Self::SIGNATURE_HASH,
8790                );
8791                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8792                    &self.validator,
8793                );
8794                Ok(())
8795            }
8796        }
8797        #[automatically_derived]
8798        impl alloy_sol_types::private::IntoLogData for CommissionUpdated {
8799            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8800                From::from(self)
8801            }
8802            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8803                From::from(&self)
8804            }
8805        }
8806        #[automatically_derived]
8807        impl From<&CommissionUpdated> for alloy_sol_types::private::LogData {
8808            #[inline]
8809            fn from(this: &CommissionUpdated) -> alloy_sol_types::private::LogData {
8810                alloy_sol_types::SolEvent::encode_log_data(this)
8811            }
8812        }
8813    };
8814    #[derive(serde::Serialize, serde::Deserialize)]
8815    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8816    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
8817```solidity
8818event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
8819```*/
8820    #[allow(
8821        non_camel_case_types,
8822        non_snake_case,
8823        clippy::pub_underscore_fields,
8824        clippy::style
8825    )]
8826    #[derive(Clone)]
8827    pub struct ConsensusKeysUpdated {
8828        #[allow(missing_docs)]
8829        pub account: alloy::sol_types::private::Address,
8830        #[allow(missing_docs)]
8831        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8832        #[allow(missing_docs)]
8833        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8834    }
8835    #[allow(
8836        non_camel_case_types,
8837        non_snake_case,
8838        clippy::pub_underscore_fields,
8839        clippy::style
8840    )]
8841    const _: () = {
8842        use alloy::sol_types as alloy_sol_types;
8843        #[automatically_derived]
8844        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
8845            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
8846            type DataToken<'a> = <Self::DataTuple<
8847                'a,
8848            > as alloy_sol_types::SolType>::Token<'a>;
8849            type TopicList = (
8850                alloy_sol_types::sol_data::FixedBytes<32>,
8851                alloy::sol_types::sol_data::Address,
8852            );
8853            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
8854            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8855                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
8856                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
8857                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
8858            ]);
8859            const ANONYMOUS: bool = false;
8860            #[allow(unused_variables)]
8861            #[inline]
8862            fn new(
8863                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8864                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8865            ) -> Self {
8866                Self {
8867                    account: topics.1,
8868                    blsVK: data.0,
8869                    schnorrVK: data.1,
8870                }
8871            }
8872            #[inline]
8873            fn check_signature(
8874                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8875            ) -> alloy_sol_types::Result<()> {
8876                if topics.0 != Self::SIGNATURE_HASH {
8877                    return Err(
8878                        alloy_sol_types::Error::invalid_event_signature_hash(
8879                            Self::SIGNATURE,
8880                            topics.0,
8881                            Self::SIGNATURE_HASH,
8882                        ),
8883                    );
8884                }
8885                Ok(())
8886            }
8887            #[inline]
8888            fn tokenize_body(&self) -> Self::DataToken<'_> {
8889                (
8890                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8891                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8892                        &self.schnorrVK,
8893                    ),
8894                )
8895            }
8896            #[inline]
8897            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8898                (Self::SIGNATURE_HASH.into(), self.account.clone())
8899            }
8900            #[inline]
8901            fn encode_topics_raw(
8902                &self,
8903                out: &mut [alloy_sol_types::abi::token::WordToken],
8904            ) -> alloy_sol_types::Result<()> {
8905                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8906                    return Err(alloy_sol_types::Error::Overrun);
8907                }
8908                out[0usize] = alloy_sol_types::abi::token::WordToken(
8909                    Self::SIGNATURE_HASH,
8910                );
8911                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8912                    &self.account,
8913                );
8914                Ok(())
8915            }
8916        }
8917        #[automatically_derived]
8918        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
8919            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8920                From::from(self)
8921            }
8922            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8923                From::from(&self)
8924            }
8925        }
8926        #[automatically_derived]
8927        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
8928            #[inline]
8929            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
8930                alloy_sol_types::SolEvent::encode_log_data(this)
8931            }
8932        }
8933    };
8934    #[derive(serde::Serialize, serde::Deserialize)]
8935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8936    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
8937```solidity
8938event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
8939```*/
8940    #[allow(
8941        non_camel_case_types,
8942        non_snake_case,
8943        clippy::pub_underscore_fields,
8944        clippy::style
8945    )]
8946    #[derive(Clone)]
8947    pub struct ConsensusKeysUpdatedV2 {
8948        #[allow(missing_docs)]
8949        pub account: alloy::sol_types::private::Address,
8950        #[allow(missing_docs)]
8951        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8952        #[allow(missing_docs)]
8953        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8954        #[allow(missing_docs)]
8955        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8956        #[allow(missing_docs)]
8957        pub schnorrSig: alloy::sol_types::private::Bytes,
8958    }
8959    #[allow(
8960        non_camel_case_types,
8961        non_snake_case,
8962        clippy::pub_underscore_fields,
8963        clippy::style
8964    )]
8965    const _: () = {
8966        use alloy::sol_types as alloy_sol_types;
8967        #[automatically_derived]
8968        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
8969            type DataTuple<'a> = (
8970                BN254::G2Point,
8971                EdOnBN254::EdOnBN254Point,
8972                BN254::G1Point,
8973                alloy::sol_types::sol_data::Bytes,
8974            );
8975            type DataToken<'a> = <Self::DataTuple<
8976                'a,
8977            > as alloy_sol_types::SolType>::Token<'a>;
8978            type TopicList = (
8979                alloy_sol_types::sol_data::FixedBytes<32>,
8980                alloy::sol_types::sol_data::Address,
8981            );
8982            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
8983            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8984                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
8985                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
8986                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
8987            ]);
8988            const ANONYMOUS: bool = false;
8989            #[allow(unused_variables)]
8990            #[inline]
8991            fn new(
8992                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8993                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8994            ) -> Self {
8995                Self {
8996                    account: topics.1,
8997                    blsVK: data.0,
8998                    schnorrVK: data.1,
8999                    blsSig: data.2,
9000                    schnorrSig: data.3,
9001                }
9002            }
9003            #[inline]
9004            fn check_signature(
9005                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9006            ) -> alloy_sol_types::Result<()> {
9007                if topics.0 != Self::SIGNATURE_HASH {
9008                    return Err(
9009                        alloy_sol_types::Error::invalid_event_signature_hash(
9010                            Self::SIGNATURE,
9011                            topics.0,
9012                            Self::SIGNATURE_HASH,
9013                        ),
9014                    );
9015                }
9016                Ok(())
9017            }
9018            #[inline]
9019            fn tokenize_body(&self) -> Self::DataToken<'_> {
9020                (
9021                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
9022                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
9023                        &self.schnorrVK,
9024                    ),
9025                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
9026                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9027                        &self.schnorrSig,
9028                    ),
9029                )
9030            }
9031            #[inline]
9032            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9033                (Self::SIGNATURE_HASH.into(), self.account.clone())
9034            }
9035            #[inline]
9036            fn encode_topics_raw(
9037                &self,
9038                out: &mut [alloy_sol_types::abi::token::WordToken],
9039            ) -> alloy_sol_types::Result<()> {
9040                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9041                    return Err(alloy_sol_types::Error::Overrun);
9042                }
9043                out[0usize] = alloy_sol_types::abi::token::WordToken(
9044                    Self::SIGNATURE_HASH,
9045                );
9046                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9047                    &self.account,
9048                );
9049                Ok(())
9050            }
9051        }
9052        #[automatically_derived]
9053        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
9054            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9055                From::from(self)
9056            }
9057            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9058                From::from(&self)
9059            }
9060        }
9061        #[automatically_derived]
9062        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
9063            #[inline]
9064            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
9065                alloy_sol_types::SolEvent::encode_log_data(this)
9066            }
9067        }
9068    };
9069    #[derive(serde::Serialize, serde::Deserialize)]
9070    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9071    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
9072```solidity
9073event Delegated(address indexed delegator, address indexed validator, uint256 amount);
9074```*/
9075    #[allow(
9076        non_camel_case_types,
9077        non_snake_case,
9078        clippy::pub_underscore_fields,
9079        clippy::style
9080    )]
9081    #[derive(Clone)]
9082    pub struct Delegated {
9083        #[allow(missing_docs)]
9084        pub delegator: alloy::sol_types::private::Address,
9085        #[allow(missing_docs)]
9086        pub validator: alloy::sol_types::private::Address,
9087        #[allow(missing_docs)]
9088        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9089    }
9090    #[allow(
9091        non_camel_case_types,
9092        non_snake_case,
9093        clippy::pub_underscore_fields,
9094        clippy::style
9095    )]
9096    const _: () = {
9097        use alloy::sol_types as alloy_sol_types;
9098        #[automatically_derived]
9099        impl alloy_sol_types::SolEvent for Delegated {
9100            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9101            type DataToken<'a> = <Self::DataTuple<
9102                'a,
9103            > as alloy_sol_types::SolType>::Token<'a>;
9104            type TopicList = (
9105                alloy_sol_types::sol_data::FixedBytes<32>,
9106                alloy::sol_types::sol_data::Address,
9107                alloy::sol_types::sol_data::Address,
9108            );
9109            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
9110            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9111                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
9112                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
9113                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
9114            ]);
9115            const ANONYMOUS: bool = false;
9116            #[allow(unused_variables)]
9117            #[inline]
9118            fn new(
9119                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9120                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9121            ) -> Self {
9122                Self {
9123                    delegator: topics.1,
9124                    validator: topics.2,
9125                    amount: data.0,
9126                }
9127            }
9128            #[inline]
9129            fn check_signature(
9130                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9131            ) -> alloy_sol_types::Result<()> {
9132                if topics.0 != Self::SIGNATURE_HASH {
9133                    return Err(
9134                        alloy_sol_types::Error::invalid_event_signature_hash(
9135                            Self::SIGNATURE,
9136                            topics.0,
9137                            Self::SIGNATURE_HASH,
9138                        ),
9139                    );
9140                }
9141                Ok(())
9142            }
9143            #[inline]
9144            fn tokenize_body(&self) -> Self::DataToken<'_> {
9145                (
9146                    <alloy::sol_types::sol_data::Uint<
9147                        256,
9148                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9149                )
9150            }
9151            #[inline]
9152            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9153                (
9154                    Self::SIGNATURE_HASH.into(),
9155                    self.delegator.clone(),
9156                    self.validator.clone(),
9157                )
9158            }
9159            #[inline]
9160            fn encode_topics_raw(
9161                &self,
9162                out: &mut [alloy_sol_types::abi::token::WordToken],
9163            ) -> alloy_sol_types::Result<()> {
9164                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9165                    return Err(alloy_sol_types::Error::Overrun);
9166                }
9167                out[0usize] = alloy_sol_types::abi::token::WordToken(
9168                    Self::SIGNATURE_HASH,
9169                );
9170                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9171                    &self.delegator,
9172                );
9173                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9174                    &self.validator,
9175                );
9176                Ok(())
9177            }
9178        }
9179        #[automatically_derived]
9180        impl alloy_sol_types::private::IntoLogData for Delegated {
9181            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9182                From::from(self)
9183            }
9184            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9185                From::from(&self)
9186            }
9187        }
9188        #[automatically_derived]
9189        impl From<&Delegated> for alloy_sol_types::private::LogData {
9190            #[inline]
9191            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
9192                alloy_sol_types::SolEvent::encode_log_data(this)
9193            }
9194        }
9195    };
9196    #[derive(serde::Serialize, serde::Deserialize)]
9197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9198    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
9199```solidity
9200event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
9201```*/
9202    #[allow(
9203        non_camel_case_types,
9204        non_snake_case,
9205        clippy::pub_underscore_fields,
9206        clippy::style
9207    )]
9208    #[derive(Clone)]
9209    pub struct ExitEscrowPeriodUpdated {
9210        #[allow(missing_docs)]
9211        pub newExitEscrowPeriod: u64,
9212    }
9213    #[allow(
9214        non_camel_case_types,
9215        non_snake_case,
9216        clippy::pub_underscore_fields,
9217        clippy::style
9218    )]
9219    const _: () = {
9220        use alloy::sol_types as alloy_sol_types;
9221        #[automatically_derived]
9222        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
9223            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9224            type DataToken<'a> = <Self::DataTuple<
9225                'a,
9226            > as alloy_sol_types::SolType>::Token<'a>;
9227            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9228            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
9229            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9230                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
9231                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
9232                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
9233            ]);
9234            const ANONYMOUS: bool = false;
9235            #[allow(unused_variables)]
9236            #[inline]
9237            fn new(
9238                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9239                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9240            ) -> Self {
9241                Self {
9242                    newExitEscrowPeriod: data.0,
9243                }
9244            }
9245            #[inline]
9246            fn check_signature(
9247                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9248            ) -> alloy_sol_types::Result<()> {
9249                if topics.0 != Self::SIGNATURE_HASH {
9250                    return Err(
9251                        alloy_sol_types::Error::invalid_event_signature_hash(
9252                            Self::SIGNATURE,
9253                            topics.0,
9254                            Self::SIGNATURE_HASH,
9255                        ),
9256                    );
9257                }
9258                Ok(())
9259            }
9260            #[inline]
9261            fn tokenize_body(&self) -> Self::DataToken<'_> {
9262                (
9263                    <alloy::sol_types::sol_data::Uint<
9264                        64,
9265                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
9266                )
9267            }
9268            #[inline]
9269            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9270                (Self::SIGNATURE_HASH.into(),)
9271            }
9272            #[inline]
9273            fn encode_topics_raw(
9274                &self,
9275                out: &mut [alloy_sol_types::abi::token::WordToken],
9276            ) -> alloy_sol_types::Result<()> {
9277                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9278                    return Err(alloy_sol_types::Error::Overrun);
9279                }
9280                out[0usize] = alloy_sol_types::abi::token::WordToken(
9281                    Self::SIGNATURE_HASH,
9282                );
9283                Ok(())
9284            }
9285        }
9286        #[automatically_derived]
9287        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
9288            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9289                From::from(self)
9290            }
9291            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9292                From::from(&self)
9293            }
9294        }
9295        #[automatically_derived]
9296        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
9297            #[inline]
9298            fn from(
9299                this: &ExitEscrowPeriodUpdated,
9300            ) -> alloy_sol_types::private::LogData {
9301                alloy_sol_types::SolEvent::encode_log_data(this)
9302            }
9303        }
9304    };
9305    #[derive(serde::Serialize, serde::Deserialize)]
9306    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9307    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
9308```solidity
9309event Initialized(uint64 version);
9310```*/
9311    #[allow(
9312        non_camel_case_types,
9313        non_snake_case,
9314        clippy::pub_underscore_fields,
9315        clippy::style
9316    )]
9317    #[derive(Clone)]
9318    pub struct Initialized {
9319        #[allow(missing_docs)]
9320        pub version: u64,
9321    }
9322    #[allow(
9323        non_camel_case_types,
9324        non_snake_case,
9325        clippy::pub_underscore_fields,
9326        clippy::style
9327    )]
9328    const _: () = {
9329        use alloy::sol_types as alloy_sol_types;
9330        #[automatically_derived]
9331        impl alloy_sol_types::SolEvent for Initialized {
9332            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9333            type DataToken<'a> = <Self::DataTuple<
9334                'a,
9335            > as alloy_sol_types::SolType>::Token<'a>;
9336            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9337            const SIGNATURE: &'static str = "Initialized(uint64)";
9338            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9339                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
9340                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
9341                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
9342            ]);
9343            const ANONYMOUS: bool = false;
9344            #[allow(unused_variables)]
9345            #[inline]
9346            fn new(
9347                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9348                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9349            ) -> Self {
9350                Self { version: data.0 }
9351            }
9352            #[inline]
9353            fn check_signature(
9354                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9355            ) -> alloy_sol_types::Result<()> {
9356                if topics.0 != Self::SIGNATURE_HASH {
9357                    return Err(
9358                        alloy_sol_types::Error::invalid_event_signature_hash(
9359                            Self::SIGNATURE,
9360                            topics.0,
9361                            Self::SIGNATURE_HASH,
9362                        ),
9363                    );
9364                }
9365                Ok(())
9366            }
9367            #[inline]
9368            fn tokenize_body(&self) -> Self::DataToken<'_> {
9369                (
9370                    <alloy::sol_types::sol_data::Uint<
9371                        64,
9372                    > as alloy_sol_types::SolType>::tokenize(&self.version),
9373                )
9374            }
9375            #[inline]
9376            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9377                (Self::SIGNATURE_HASH.into(),)
9378            }
9379            #[inline]
9380            fn encode_topics_raw(
9381                &self,
9382                out: &mut [alloy_sol_types::abi::token::WordToken],
9383            ) -> alloy_sol_types::Result<()> {
9384                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9385                    return Err(alloy_sol_types::Error::Overrun);
9386                }
9387                out[0usize] = alloy_sol_types::abi::token::WordToken(
9388                    Self::SIGNATURE_HASH,
9389                );
9390                Ok(())
9391            }
9392        }
9393        #[automatically_derived]
9394        impl alloy_sol_types::private::IntoLogData for Initialized {
9395            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9396                From::from(self)
9397            }
9398            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9399                From::from(&self)
9400            }
9401        }
9402        #[automatically_derived]
9403        impl From<&Initialized> for alloy_sol_types::private::LogData {
9404            #[inline]
9405            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
9406                alloy_sol_types::SolEvent::encode_log_data(this)
9407            }
9408        }
9409    };
9410    #[derive(serde::Serialize, serde::Deserialize)]
9411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9412    /**Event with signature `MaxCommissionIncreaseUpdated(uint16)` and selector `0xbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd`.
9413```solidity
9414event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
9415```*/
9416    #[allow(
9417        non_camel_case_types,
9418        non_snake_case,
9419        clippy::pub_underscore_fields,
9420        clippy::style
9421    )]
9422    #[derive(Clone)]
9423    pub struct MaxCommissionIncreaseUpdated {
9424        #[allow(missing_docs)]
9425        pub newMaxIncrease: u16,
9426    }
9427    #[allow(
9428        non_camel_case_types,
9429        non_snake_case,
9430        clippy::pub_underscore_fields,
9431        clippy::style
9432    )]
9433    const _: () = {
9434        use alloy::sol_types as alloy_sol_types;
9435        #[automatically_derived]
9436        impl alloy_sol_types::SolEvent for MaxCommissionIncreaseUpdated {
9437            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
9438            type DataToken<'a> = <Self::DataTuple<
9439                'a,
9440            > as alloy_sol_types::SolType>::Token<'a>;
9441            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9442            const SIGNATURE: &'static str = "MaxCommissionIncreaseUpdated(uint16)";
9443            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9444                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
9445                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
9446                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
9447            ]);
9448            const ANONYMOUS: bool = false;
9449            #[allow(unused_variables)]
9450            #[inline]
9451            fn new(
9452                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9453                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9454            ) -> Self {
9455                Self { newMaxIncrease: data.0 }
9456            }
9457            #[inline]
9458            fn check_signature(
9459                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9460            ) -> alloy_sol_types::Result<()> {
9461                if topics.0 != Self::SIGNATURE_HASH {
9462                    return Err(
9463                        alloy_sol_types::Error::invalid_event_signature_hash(
9464                            Self::SIGNATURE,
9465                            topics.0,
9466                            Self::SIGNATURE_HASH,
9467                        ),
9468                    );
9469                }
9470                Ok(())
9471            }
9472            #[inline]
9473            fn tokenize_body(&self) -> Self::DataToken<'_> {
9474                (
9475                    <alloy::sol_types::sol_data::Uint<
9476                        16,
9477                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
9478                )
9479            }
9480            #[inline]
9481            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9482                (Self::SIGNATURE_HASH.into(),)
9483            }
9484            #[inline]
9485            fn encode_topics_raw(
9486                &self,
9487                out: &mut [alloy_sol_types::abi::token::WordToken],
9488            ) -> alloy_sol_types::Result<()> {
9489                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9490                    return Err(alloy_sol_types::Error::Overrun);
9491                }
9492                out[0usize] = alloy_sol_types::abi::token::WordToken(
9493                    Self::SIGNATURE_HASH,
9494                );
9495                Ok(())
9496            }
9497        }
9498        #[automatically_derived]
9499        impl alloy_sol_types::private::IntoLogData for MaxCommissionIncreaseUpdated {
9500            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9501                From::from(self)
9502            }
9503            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9504                From::from(&self)
9505            }
9506        }
9507        #[automatically_derived]
9508        impl From<&MaxCommissionIncreaseUpdated> for alloy_sol_types::private::LogData {
9509            #[inline]
9510            fn from(
9511                this: &MaxCommissionIncreaseUpdated,
9512            ) -> alloy_sol_types::private::LogData {
9513                alloy_sol_types::SolEvent::encode_log_data(this)
9514            }
9515        }
9516    };
9517    #[derive(serde::Serialize, serde::Deserialize)]
9518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9519    /**Event with signature `MetadataUriUpdated(address,string)` and selector `0x20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34`.
9520```solidity
9521event MetadataUriUpdated(address indexed validator, string metadataUri);
9522```*/
9523    #[allow(
9524        non_camel_case_types,
9525        non_snake_case,
9526        clippy::pub_underscore_fields,
9527        clippy::style
9528    )]
9529    #[derive(Clone)]
9530    pub struct MetadataUriUpdated {
9531        #[allow(missing_docs)]
9532        pub validator: alloy::sol_types::private::Address,
9533        #[allow(missing_docs)]
9534        pub metadataUri: alloy::sol_types::private::String,
9535    }
9536    #[allow(
9537        non_camel_case_types,
9538        non_snake_case,
9539        clippy::pub_underscore_fields,
9540        clippy::style
9541    )]
9542    const _: () = {
9543        use alloy::sol_types as alloy_sol_types;
9544        #[automatically_derived]
9545        impl alloy_sol_types::SolEvent for MetadataUriUpdated {
9546            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
9547            type DataToken<'a> = <Self::DataTuple<
9548                'a,
9549            > as alloy_sol_types::SolType>::Token<'a>;
9550            type TopicList = (
9551                alloy_sol_types::sol_data::FixedBytes<32>,
9552                alloy::sol_types::sol_data::Address,
9553            );
9554            const SIGNATURE: &'static str = "MetadataUriUpdated(address,string)";
9555            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9556                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
9557                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
9558                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
9559            ]);
9560            const ANONYMOUS: bool = false;
9561            #[allow(unused_variables)]
9562            #[inline]
9563            fn new(
9564                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9565                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9566            ) -> Self {
9567                Self {
9568                    validator: topics.1,
9569                    metadataUri: data.0,
9570                }
9571            }
9572            #[inline]
9573            fn check_signature(
9574                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9575            ) -> alloy_sol_types::Result<()> {
9576                if topics.0 != Self::SIGNATURE_HASH {
9577                    return Err(
9578                        alloy_sol_types::Error::invalid_event_signature_hash(
9579                            Self::SIGNATURE,
9580                            topics.0,
9581                            Self::SIGNATURE_HASH,
9582                        ),
9583                    );
9584                }
9585                Ok(())
9586            }
9587            #[inline]
9588            fn tokenize_body(&self) -> Self::DataToken<'_> {
9589                (
9590                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
9591                        &self.metadataUri,
9592                    ),
9593                )
9594            }
9595            #[inline]
9596            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9597                (Self::SIGNATURE_HASH.into(), self.validator.clone())
9598            }
9599            #[inline]
9600            fn encode_topics_raw(
9601                &self,
9602                out: &mut [alloy_sol_types::abi::token::WordToken],
9603            ) -> alloy_sol_types::Result<()> {
9604                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9605                    return Err(alloy_sol_types::Error::Overrun);
9606                }
9607                out[0usize] = alloy_sol_types::abi::token::WordToken(
9608                    Self::SIGNATURE_HASH,
9609                );
9610                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9611                    &self.validator,
9612                );
9613                Ok(())
9614            }
9615        }
9616        #[automatically_derived]
9617        impl alloy_sol_types::private::IntoLogData for MetadataUriUpdated {
9618            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9619                From::from(self)
9620            }
9621            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9622                From::from(&self)
9623            }
9624        }
9625        #[automatically_derived]
9626        impl From<&MetadataUriUpdated> for alloy_sol_types::private::LogData {
9627            #[inline]
9628            fn from(this: &MetadataUriUpdated) -> alloy_sol_types::private::LogData {
9629                alloy_sol_types::SolEvent::encode_log_data(this)
9630            }
9631        }
9632    };
9633    #[derive(serde::Serialize, serde::Deserialize)]
9634    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9635    /**Event with signature `MinCommissionUpdateIntervalUpdated(uint256)` and selector `0x51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef259`.
9636```solidity
9637event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
9638```*/
9639    #[allow(
9640        non_camel_case_types,
9641        non_snake_case,
9642        clippy::pub_underscore_fields,
9643        clippy::style
9644    )]
9645    #[derive(Clone)]
9646    pub struct MinCommissionUpdateIntervalUpdated {
9647        #[allow(missing_docs)]
9648        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
9649    }
9650    #[allow(
9651        non_camel_case_types,
9652        non_snake_case,
9653        clippy::pub_underscore_fields,
9654        clippy::style
9655    )]
9656    const _: () = {
9657        use alloy::sol_types as alloy_sol_types;
9658        #[automatically_derived]
9659        impl alloy_sol_types::SolEvent for MinCommissionUpdateIntervalUpdated {
9660            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9661            type DataToken<'a> = <Self::DataTuple<
9662                'a,
9663            > as alloy_sol_types::SolType>::Token<'a>;
9664            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9665            const SIGNATURE: &'static str = "MinCommissionUpdateIntervalUpdated(uint256)";
9666            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9667                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
9668                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
9669                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
9670            ]);
9671            const ANONYMOUS: bool = false;
9672            #[allow(unused_variables)]
9673            #[inline]
9674            fn new(
9675                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9676                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9677            ) -> Self {
9678                Self { newInterval: data.0 }
9679            }
9680            #[inline]
9681            fn check_signature(
9682                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9683            ) -> alloy_sol_types::Result<()> {
9684                if topics.0 != Self::SIGNATURE_HASH {
9685                    return Err(
9686                        alloy_sol_types::Error::invalid_event_signature_hash(
9687                            Self::SIGNATURE,
9688                            topics.0,
9689                            Self::SIGNATURE_HASH,
9690                        ),
9691                    );
9692                }
9693                Ok(())
9694            }
9695            #[inline]
9696            fn tokenize_body(&self) -> Self::DataToken<'_> {
9697                (
9698                    <alloy::sol_types::sol_data::Uint<
9699                        256,
9700                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
9701                )
9702            }
9703            #[inline]
9704            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9705                (Self::SIGNATURE_HASH.into(),)
9706            }
9707            #[inline]
9708            fn encode_topics_raw(
9709                &self,
9710                out: &mut [alloy_sol_types::abi::token::WordToken],
9711            ) -> alloy_sol_types::Result<()> {
9712                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9713                    return Err(alloy_sol_types::Error::Overrun);
9714                }
9715                out[0usize] = alloy_sol_types::abi::token::WordToken(
9716                    Self::SIGNATURE_HASH,
9717                );
9718                Ok(())
9719            }
9720        }
9721        #[automatically_derived]
9722        impl alloy_sol_types::private::IntoLogData
9723        for MinCommissionUpdateIntervalUpdated {
9724            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9725                From::from(self)
9726            }
9727            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9728                From::from(&self)
9729            }
9730        }
9731        #[automatically_derived]
9732        impl From<&MinCommissionUpdateIntervalUpdated>
9733        for alloy_sol_types::private::LogData {
9734            #[inline]
9735            fn from(
9736                this: &MinCommissionUpdateIntervalUpdated,
9737            ) -> alloy_sol_types::private::LogData {
9738                alloy_sol_types::SolEvent::encode_log_data(this)
9739            }
9740        }
9741    };
9742    #[derive(serde::Serialize, serde::Deserialize)]
9743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9744    /**Event with signature `MinDelegateAmountUpdated(uint256)` and selector `0x02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa5`.
9745```solidity
9746event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
9747```*/
9748    #[allow(
9749        non_camel_case_types,
9750        non_snake_case,
9751        clippy::pub_underscore_fields,
9752        clippy::style
9753    )]
9754    #[derive(Clone)]
9755    pub struct MinDelegateAmountUpdated {
9756        #[allow(missing_docs)]
9757        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
9758    }
9759    #[allow(
9760        non_camel_case_types,
9761        non_snake_case,
9762        clippy::pub_underscore_fields,
9763        clippy::style
9764    )]
9765    const _: () = {
9766        use alloy::sol_types as alloy_sol_types;
9767        #[automatically_derived]
9768        impl alloy_sol_types::SolEvent for MinDelegateAmountUpdated {
9769            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9770            type DataToken<'a> = <Self::DataTuple<
9771                'a,
9772            > as alloy_sol_types::SolType>::Token<'a>;
9773            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9774            const SIGNATURE: &'static str = "MinDelegateAmountUpdated(uint256)";
9775            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9776                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
9777                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
9778                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
9779            ]);
9780            const ANONYMOUS: bool = false;
9781            #[allow(unused_variables)]
9782            #[inline]
9783            fn new(
9784                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9785                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9786            ) -> Self {
9787                Self {
9788                    newMinDelegateAmount: data.0,
9789                }
9790            }
9791            #[inline]
9792            fn check_signature(
9793                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9794            ) -> alloy_sol_types::Result<()> {
9795                if topics.0 != Self::SIGNATURE_HASH {
9796                    return Err(
9797                        alloy_sol_types::Error::invalid_event_signature_hash(
9798                            Self::SIGNATURE,
9799                            topics.0,
9800                            Self::SIGNATURE_HASH,
9801                        ),
9802                    );
9803                }
9804                Ok(())
9805            }
9806            #[inline]
9807            fn tokenize_body(&self) -> Self::DataToken<'_> {
9808                (
9809                    <alloy::sol_types::sol_data::Uint<
9810                        256,
9811                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
9812                )
9813            }
9814            #[inline]
9815            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9816                (Self::SIGNATURE_HASH.into(),)
9817            }
9818            #[inline]
9819            fn encode_topics_raw(
9820                &self,
9821                out: &mut [alloy_sol_types::abi::token::WordToken],
9822            ) -> alloy_sol_types::Result<()> {
9823                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9824                    return Err(alloy_sol_types::Error::Overrun);
9825                }
9826                out[0usize] = alloy_sol_types::abi::token::WordToken(
9827                    Self::SIGNATURE_HASH,
9828                );
9829                Ok(())
9830            }
9831        }
9832        #[automatically_derived]
9833        impl alloy_sol_types::private::IntoLogData for MinDelegateAmountUpdated {
9834            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9835                From::from(self)
9836            }
9837            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9838                From::from(&self)
9839            }
9840        }
9841        #[automatically_derived]
9842        impl From<&MinDelegateAmountUpdated> for alloy_sol_types::private::LogData {
9843            #[inline]
9844            fn from(
9845                this: &MinDelegateAmountUpdated,
9846            ) -> alloy_sol_types::private::LogData {
9847                alloy_sol_types::SolEvent::encode_log_data(this)
9848            }
9849        }
9850    };
9851    #[derive(serde::Serialize, serde::Deserialize)]
9852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9853    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
9854```solidity
9855event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
9856```*/
9857    #[allow(
9858        non_camel_case_types,
9859        non_snake_case,
9860        clippy::pub_underscore_fields,
9861        clippy::style
9862    )]
9863    #[derive(Clone)]
9864    pub struct OwnershipTransferred {
9865        #[allow(missing_docs)]
9866        pub previousOwner: alloy::sol_types::private::Address,
9867        #[allow(missing_docs)]
9868        pub newOwner: alloy::sol_types::private::Address,
9869    }
9870    #[allow(
9871        non_camel_case_types,
9872        non_snake_case,
9873        clippy::pub_underscore_fields,
9874        clippy::style
9875    )]
9876    const _: () = {
9877        use alloy::sol_types as alloy_sol_types;
9878        #[automatically_derived]
9879        impl alloy_sol_types::SolEvent for OwnershipTransferred {
9880            type DataTuple<'a> = ();
9881            type DataToken<'a> = <Self::DataTuple<
9882                'a,
9883            > as alloy_sol_types::SolType>::Token<'a>;
9884            type TopicList = (
9885                alloy_sol_types::sol_data::FixedBytes<32>,
9886                alloy::sol_types::sol_data::Address,
9887                alloy::sol_types::sol_data::Address,
9888            );
9889            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
9890            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9891                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
9892                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
9893                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
9894            ]);
9895            const ANONYMOUS: bool = false;
9896            #[allow(unused_variables)]
9897            #[inline]
9898            fn new(
9899                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9900                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9901            ) -> Self {
9902                Self {
9903                    previousOwner: topics.1,
9904                    newOwner: topics.2,
9905                }
9906            }
9907            #[inline]
9908            fn check_signature(
9909                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9910            ) -> alloy_sol_types::Result<()> {
9911                if topics.0 != Self::SIGNATURE_HASH {
9912                    return Err(
9913                        alloy_sol_types::Error::invalid_event_signature_hash(
9914                            Self::SIGNATURE,
9915                            topics.0,
9916                            Self::SIGNATURE_HASH,
9917                        ),
9918                    );
9919                }
9920                Ok(())
9921            }
9922            #[inline]
9923            fn tokenize_body(&self) -> Self::DataToken<'_> {
9924                ()
9925            }
9926            #[inline]
9927            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9928                (
9929                    Self::SIGNATURE_HASH.into(),
9930                    self.previousOwner.clone(),
9931                    self.newOwner.clone(),
9932                )
9933            }
9934            #[inline]
9935            fn encode_topics_raw(
9936                &self,
9937                out: &mut [alloy_sol_types::abi::token::WordToken],
9938            ) -> alloy_sol_types::Result<()> {
9939                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9940                    return Err(alloy_sol_types::Error::Overrun);
9941                }
9942                out[0usize] = alloy_sol_types::abi::token::WordToken(
9943                    Self::SIGNATURE_HASH,
9944                );
9945                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9946                    &self.previousOwner,
9947                );
9948                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9949                    &self.newOwner,
9950                );
9951                Ok(())
9952            }
9953        }
9954        #[automatically_derived]
9955        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
9956            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9957                From::from(self)
9958            }
9959            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9960                From::from(&self)
9961            }
9962        }
9963        #[automatically_derived]
9964        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
9965            #[inline]
9966            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
9967                alloy_sol_types::SolEvent::encode_log_data(this)
9968            }
9969        }
9970    };
9971    #[derive(serde::Serialize, serde::Deserialize)]
9972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9973    /**Event with signature `P2pAddrUpdated(address,string)` and selector `0x43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb22`.
9974```solidity
9975event P2pAddrUpdated(address indexed validator, string p2pAddr);
9976```*/
9977    #[allow(
9978        non_camel_case_types,
9979        non_snake_case,
9980        clippy::pub_underscore_fields,
9981        clippy::style
9982    )]
9983    #[derive(Clone)]
9984    pub struct P2pAddrUpdated {
9985        #[allow(missing_docs)]
9986        pub validator: alloy::sol_types::private::Address,
9987        #[allow(missing_docs)]
9988        pub p2pAddr: alloy::sol_types::private::String,
9989    }
9990    #[allow(
9991        non_camel_case_types,
9992        non_snake_case,
9993        clippy::pub_underscore_fields,
9994        clippy::style
9995    )]
9996    const _: () = {
9997        use alloy::sol_types as alloy_sol_types;
9998        #[automatically_derived]
9999        impl alloy_sol_types::SolEvent for P2pAddrUpdated {
10000            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
10001            type DataToken<'a> = <Self::DataTuple<
10002                'a,
10003            > as alloy_sol_types::SolType>::Token<'a>;
10004            type TopicList = (
10005                alloy_sol_types::sol_data::FixedBytes<32>,
10006                alloy::sol_types::sol_data::Address,
10007            );
10008            const SIGNATURE: &'static str = "P2pAddrUpdated(address,string)";
10009            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10010                67u8, 6u8, 97u8, 130u8, 175u8, 137u8, 242u8, 48u8, 69u8, 34u8, 7u8, 26u8,
10011                87u8, 192u8, 96u8, 99u8, 225u8, 27u8, 38u8, 89u8, 29u8, 109u8, 156u8,
10012                51u8, 241u8, 135u8, 76u8, 45u8, 10u8, 20u8, 187u8, 34u8,
10013            ]);
10014            const ANONYMOUS: bool = false;
10015            #[allow(unused_variables)]
10016            #[inline]
10017            fn new(
10018                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10019                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10020            ) -> Self {
10021                Self {
10022                    validator: topics.1,
10023                    p2pAddr: data.0,
10024                }
10025            }
10026            #[inline]
10027            fn check_signature(
10028                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10029            ) -> alloy_sol_types::Result<()> {
10030                if topics.0 != Self::SIGNATURE_HASH {
10031                    return Err(
10032                        alloy_sol_types::Error::invalid_event_signature_hash(
10033                            Self::SIGNATURE,
10034                            topics.0,
10035                            Self::SIGNATURE_HASH,
10036                        ),
10037                    );
10038                }
10039                Ok(())
10040            }
10041            #[inline]
10042            fn tokenize_body(&self) -> Self::DataToken<'_> {
10043                (
10044                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
10045                        &self.p2pAddr,
10046                    ),
10047                )
10048            }
10049            #[inline]
10050            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10051                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10052            }
10053            #[inline]
10054            fn encode_topics_raw(
10055                &self,
10056                out: &mut [alloy_sol_types::abi::token::WordToken],
10057            ) -> alloy_sol_types::Result<()> {
10058                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10059                    return Err(alloy_sol_types::Error::Overrun);
10060                }
10061                out[0usize] = alloy_sol_types::abi::token::WordToken(
10062                    Self::SIGNATURE_HASH,
10063                );
10064                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10065                    &self.validator,
10066                );
10067                Ok(())
10068            }
10069        }
10070        #[automatically_derived]
10071        impl alloy_sol_types::private::IntoLogData for P2pAddrUpdated {
10072            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10073                From::from(self)
10074            }
10075            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10076                From::from(&self)
10077            }
10078        }
10079        #[automatically_derived]
10080        impl From<&P2pAddrUpdated> for alloy_sol_types::private::LogData {
10081            #[inline]
10082            fn from(this: &P2pAddrUpdated) -> alloy_sol_types::private::LogData {
10083                alloy_sol_types::SolEvent::encode_log_data(this)
10084            }
10085        }
10086    };
10087    #[derive(serde::Serialize, serde::Deserialize)]
10088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10089    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
10090```solidity
10091event Paused(address account);
10092```*/
10093    #[allow(
10094        non_camel_case_types,
10095        non_snake_case,
10096        clippy::pub_underscore_fields,
10097        clippy::style
10098    )]
10099    #[derive(Clone)]
10100    pub struct Paused {
10101        #[allow(missing_docs)]
10102        pub account: alloy::sol_types::private::Address,
10103    }
10104    #[allow(
10105        non_camel_case_types,
10106        non_snake_case,
10107        clippy::pub_underscore_fields,
10108        clippy::style
10109    )]
10110    const _: () = {
10111        use alloy::sol_types as alloy_sol_types;
10112        #[automatically_derived]
10113        impl alloy_sol_types::SolEvent for Paused {
10114            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
10115            type DataToken<'a> = <Self::DataTuple<
10116                'a,
10117            > as alloy_sol_types::SolType>::Token<'a>;
10118            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
10119            const SIGNATURE: &'static str = "Paused(address)";
10120            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10121                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
10122                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
10123                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
10124            ]);
10125            const ANONYMOUS: bool = false;
10126            #[allow(unused_variables)]
10127            #[inline]
10128            fn new(
10129                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10130                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10131            ) -> Self {
10132                Self { account: data.0 }
10133            }
10134            #[inline]
10135            fn check_signature(
10136                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10137            ) -> alloy_sol_types::Result<()> {
10138                if topics.0 != Self::SIGNATURE_HASH {
10139                    return Err(
10140                        alloy_sol_types::Error::invalid_event_signature_hash(
10141                            Self::SIGNATURE,
10142                            topics.0,
10143                            Self::SIGNATURE_HASH,
10144                        ),
10145                    );
10146                }
10147                Ok(())
10148            }
10149            #[inline]
10150            fn tokenize_body(&self) -> Self::DataToken<'_> {
10151                (
10152                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10153                        &self.account,
10154                    ),
10155                )
10156            }
10157            #[inline]
10158            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10159                (Self::SIGNATURE_HASH.into(),)
10160            }
10161            #[inline]
10162            fn encode_topics_raw(
10163                &self,
10164                out: &mut [alloy_sol_types::abi::token::WordToken],
10165            ) -> alloy_sol_types::Result<()> {
10166                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10167                    return Err(alloy_sol_types::Error::Overrun);
10168                }
10169                out[0usize] = alloy_sol_types::abi::token::WordToken(
10170                    Self::SIGNATURE_HASH,
10171                );
10172                Ok(())
10173            }
10174        }
10175        #[automatically_derived]
10176        impl alloy_sol_types::private::IntoLogData for Paused {
10177            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10178                From::from(self)
10179            }
10180            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10181                From::from(&self)
10182            }
10183        }
10184        #[automatically_derived]
10185        impl From<&Paused> for alloy_sol_types::private::LogData {
10186            #[inline]
10187            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
10188                alloy_sol_types::SolEvent::encode_log_data(this)
10189            }
10190        }
10191    };
10192    #[derive(serde::Serialize, serde::Deserialize)]
10193    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10194    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
10195```solidity
10196event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
10197```*/
10198    #[allow(
10199        non_camel_case_types,
10200        non_snake_case,
10201        clippy::pub_underscore_fields,
10202        clippy::style
10203    )]
10204    #[derive(Clone)]
10205    pub struct RoleAdminChanged {
10206        #[allow(missing_docs)]
10207        pub role: alloy::sol_types::private::FixedBytes<32>,
10208        #[allow(missing_docs)]
10209        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
10210        #[allow(missing_docs)]
10211        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
10212    }
10213    #[allow(
10214        non_camel_case_types,
10215        non_snake_case,
10216        clippy::pub_underscore_fields,
10217        clippy::style
10218    )]
10219    const _: () = {
10220        use alloy::sol_types as alloy_sol_types;
10221        #[automatically_derived]
10222        impl alloy_sol_types::SolEvent for RoleAdminChanged {
10223            type DataTuple<'a> = ();
10224            type DataToken<'a> = <Self::DataTuple<
10225                'a,
10226            > as alloy_sol_types::SolType>::Token<'a>;
10227            type TopicList = (
10228                alloy_sol_types::sol_data::FixedBytes<32>,
10229                alloy::sol_types::sol_data::FixedBytes<32>,
10230                alloy::sol_types::sol_data::FixedBytes<32>,
10231                alloy::sol_types::sol_data::FixedBytes<32>,
10232            );
10233            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
10234            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10235                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
10236                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
10237                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
10238            ]);
10239            const ANONYMOUS: bool = false;
10240            #[allow(unused_variables)]
10241            #[inline]
10242            fn new(
10243                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10244                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10245            ) -> Self {
10246                Self {
10247                    role: topics.1,
10248                    previousAdminRole: topics.2,
10249                    newAdminRole: topics.3,
10250                }
10251            }
10252            #[inline]
10253            fn check_signature(
10254                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10255            ) -> alloy_sol_types::Result<()> {
10256                if topics.0 != Self::SIGNATURE_HASH {
10257                    return Err(
10258                        alloy_sol_types::Error::invalid_event_signature_hash(
10259                            Self::SIGNATURE,
10260                            topics.0,
10261                            Self::SIGNATURE_HASH,
10262                        ),
10263                    );
10264                }
10265                Ok(())
10266            }
10267            #[inline]
10268            fn tokenize_body(&self) -> Self::DataToken<'_> {
10269                ()
10270            }
10271            #[inline]
10272            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10273                (
10274                    Self::SIGNATURE_HASH.into(),
10275                    self.role.clone(),
10276                    self.previousAdminRole.clone(),
10277                    self.newAdminRole.clone(),
10278                )
10279            }
10280            #[inline]
10281            fn encode_topics_raw(
10282                &self,
10283                out: &mut [alloy_sol_types::abi::token::WordToken],
10284            ) -> alloy_sol_types::Result<()> {
10285                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10286                    return Err(alloy_sol_types::Error::Overrun);
10287                }
10288                out[0usize] = alloy_sol_types::abi::token::WordToken(
10289                    Self::SIGNATURE_HASH,
10290                );
10291                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10292                    32,
10293                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10294                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
10295                    32,
10296                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
10297                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
10298                    32,
10299                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
10300                Ok(())
10301            }
10302        }
10303        #[automatically_derived]
10304        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
10305            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10306                From::from(self)
10307            }
10308            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10309                From::from(&self)
10310            }
10311        }
10312        #[automatically_derived]
10313        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
10314            #[inline]
10315            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
10316                alloy_sol_types::SolEvent::encode_log_data(this)
10317            }
10318        }
10319    };
10320    #[derive(serde::Serialize, serde::Deserialize)]
10321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10322    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
10323```solidity
10324event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
10325```*/
10326    #[allow(
10327        non_camel_case_types,
10328        non_snake_case,
10329        clippy::pub_underscore_fields,
10330        clippy::style
10331    )]
10332    #[derive(Clone)]
10333    pub struct RoleGranted {
10334        #[allow(missing_docs)]
10335        pub role: alloy::sol_types::private::FixedBytes<32>,
10336        #[allow(missing_docs)]
10337        pub account: alloy::sol_types::private::Address,
10338        #[allow(missing_docs)]
10339        pub sender: alloy::sol_types::private::Address,
10340    }
10341    #[allow(
10342        non_camel_case_types,
10343        non_snake_case,
10344        clippy::pub_underscore_fields,
10345        clippy::style
10346    )]
10347    const _: () = {
10348        use alloy::sol_types as alloy_sol_types;
10349        #[automatically_derived]
10350        impl alloy_sol_types::SolEvent for RoleGranted {
10351            type DataTuple<'a> = ();
10352            type DataToken<'a> = <Self::DataTuple<
10353                'a,
10354            > as alloy_sol_types::SolType>::Token<'a>;
10355            type TopicList = (
10356                alloy_sol_types::sol_data::FixedBytes<32>,
10357                alloy::sol_types::sol_data::FixedBytes<32>,
10358                alloy::sol_types::sol_data::Address,
10359                alloy::sol_types::sol_data::Address,
10360            );
10361            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
10362            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10363                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
10364                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
10365                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
10366            ]);
10367            const ANONYMOUS: bool = false;
10368            #[allow(unused_variables)]
10369            #[inline]
10370            fn new(
10371                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10372                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10373            ) -> Self {
10374                Self {
10375                    role: topics.1,
10376                    account: topics.2,
10377                    sender: topics.3,
10378                }
10379            }
10380            #[inline]
10381            fn check_signature(
10382                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10383            ) -> alloy_sol_types::Result<()> {
10384                if topics.0 != Self::SIGNATURE_HASH {
10385                    return Err(
10386                        alloy_sol_types::Error::invalid_event_signature_hash(
10387                            Self::SIGNATURE,
10388                            topics.0,
10389                            Self::SIGNATURE_HASH,
10390                        ),
10391                    );
10392                }
10393                Ok(())
10394            }
10395            #[inline]
10396            fn tokenize_body(&self) -> Self::DataToken<'_> {
10397                ()
10398            }
10399            #[inline]
10400            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10401                (
10402                    Self::SIGNATURE_HASH.into(),
10403                    self.role.clone(),
10404                    self.account.clone(),
10405                    self.sender.clone(),
10406                )
10407            }
10408            #[inline]
10409            fn encode_topics_raw(
10410                &self,
10411                out: &mut [alloy_sol_types::abi::token::WordToken],
10412            ) -> alloy_sol_types::Result<()> {
10413                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10414                    return Err(alloy_sol_types::Error::Overrun);
10415                }
10416                out[0usize] = alloy_sol_types::abi::token::WordToken(
10417                    Self::SIGNATURE_HASH,
10418                );
10419                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10420                    32,
10421                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10422                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10423                    &self.account,
10424                );
10425                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10426                    &self.sender,
10427                );
10428                Ok(())
10429            }
10430        }
10431        #[automatically_derived]
10432        impl alloy_sol_types::private::IntoLogData for RoleGranted {
10433            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10434                From::from(self)
10435            }
10436            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10437                From::from(&self)
10438            }
10439        }
10440        #[automatically_derived]
10441        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
10442            #[inline]
10443            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
10444                alloy_sol_types::SolEvent::encode_log_data(this)
10445            }
10446        }
10447    };
10448    #[derive(serde::Serialize, serde::Deserialize)]
10449    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10450    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
10451```solidity
10452event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
10453```*/
10454    #[allow(
10455        non_camel_case_types,
10456        non_snake_case,
10457        clippy::pub_underscore_fields,
10458        clippy::style
10459    )]
10460    #[derive(Clone)]
10461    pub struct RoleRevoked {
10462        #[allow(missing_docs)]
10463        pub role: alloy::sol_types::private::FixedBytes<32>,
10464        #[allow(missing_docs)]
10465        pub account: alloy::sol_types::private::Address,
10466        #[allow(missing_docs)]
10467        pub sender: alloy::sol_types::private::Address,
10468    }
10469    #[allow(
10470        non_camel_case_types,
10471        non_snake_case,
10472        clippy::pub_underscore_fields,
10473        clippy::style
10474    )]
10475    const _: () = {
10476        use alloy::sol_types as alloy_sol_types;
10477        #[automatically_derived]
10478        impl alloy_sol_types::SolEvent for RoleRevoked {
10479            type DataTuple<'a> = ();
10480            type DataToken<'a> = <Self::DataTuple<
10481                'a,
10482            > as alloy_sol_types::SolType>::Token<'a>;
10483            type TopicList = (
10484                alloy_sol_types::sol_data::FixedBytes<32>,
10485                alloy::sol_types::sol_data::FixedBytes<32>,
10486                alloy::sol_types::sol_data::Address,
10487                alloy::sol_types::sol_data::Address,
10488            );
10489            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
10490            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10491                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
10492                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
10493                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
10494            ]);
10495            const ANONYMOUS: bool = false;
10496            #[allow(unused_variables)]
10497            #[inline]
10498            fn new(
10499                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10500                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10501            ) -> Self {
10502                Self {
10503                    role: topics.1,
10504                    account: topics.2,
10505                    sender: topics.3,
10506                }
10507            }
10508            #[inline]
10509            fn check_signature(
10510                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10511            ) -> alloy_sol_types::Result<()> {
10512                if topics.0 != Self::SIGNATURE_HASH {
10513                    return Err(
10514                        alloy_sol_types::Error::invalid_event_signature_hash(
10515                            Self::SIGNATURE,
10516                            topics.0,
10517                            Self::SIGNATURE_HASH,
10518                        ),
10519                    );
10520                }
10521                Ok(())
10522            }
10523            #[inline]
10524            fn tokenize_body(&self) -> Self::DataToken<'_> {
10525                ()
10526            }
10527            #[inline]
10528            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10529                (
10530                    Self::SIGNATURE_HASH.into(),
10531                    self.role.clone(),
10532                    self.account.clone(),
10533                    self.sender.clone(),
10534                )
10535            }
10536            #[inline]
10537            fn encode_topics_raw(
10538                &self,
10539                out: &mut [alloy_sol_types::abi::token::WordToken],
10540            ) -> alloy_sol_types::Result<()> {
10541                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10542                    return Err(alloy_sol_types::Error::Overrun);
10543                }
10544                out[0usize] = alloy_sol_types::abi::token::WordToken(
10545                    Self::SIGNATURE_HASH,
10546                );
10547                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10548                    32,
10549                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10550                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10551                    &self.account,
10552                );
10553                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10554                    &self.sender,
10555                );
10556                Ok(())
10557            }
10558        }
10559        #[automatically_derived]
10560        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
10561            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10562                From::from(self)
10563            }
10564            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10565                From::from(&self)
10566            }
10567        }
10568        #[automatically_derived]
10569        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
10570            #[inline]
10571            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
10572                alloy_sol_types::SolEvent::encode_log_data(this)
10573            }
10574        }
10575    };
10576    #[derive(serde::Serialize, serde::Deserialize)]
10577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10578    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
10579```solidity
10580event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
10581```*/
10582    #[allow(
10583        non_camel_case_types,
10584        non_snake_case,
10585        clippy::pub_underscore_fields,
10586        clippy::style
10587    )]
10588    #[derive(Clone)]
10589    pub struct Undelegated {
10590        #[allow(missing_docs)]
10591        pub delegator: alloy::sol_types::private::Address,
10592        #[allow(missing_docs)]
10593        pub validator: alloy::sol_types::private::Address,
10594        #[allow(missing_docs)]
10595        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10596    }
10597    #[allow(
10598        non_camel_case_types,
10599        non_snake_case,
10600        clippy::pub_underscore_fields,
10601        clippy::style
10602    )]
10603    const _: () = {
10604        use alloy::sol_types as alloy_sol_types;
10605        #[automatically_derived]
10606        impl alloy_sol_types::SolEvent for Undelegated {
10607            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10608            type DataToken<'a> = <Self::DataTuple<
10609                'a,
10610            > as alloy_sol_types::SolType>::Token<'a>;
10611            type TopicList = (
10612                alloy_sol_types::sol_data::FixedBytes<32>,
10613                alloy::sol_types::sol_data::Address,
10614                alloy::sol_types::sol_data::Address,
10615            );
10616            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
10617            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10618                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
10619                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
10620                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
10621            ]);
10622            const ANONYMOUS: bool = false;
10623            #[allow(unused_variables)]
10624            #[inline]
10625            fn new(
10626                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10627                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10628            ) -> Self {
10629                Self {
10630                    delegator: topics.1,
10631                    validator: topics.2,
10632                    amount: data.0,
10633                }
10634            }
10635            #[inline]
10636            fn check_signature(
10637                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10638            ) -> alloy_sol_types::Result<()> {
10639                if topics.0 != Self::SIGNATURE_HASH {
10640                    return Err(
10641                        alloy_sol_types::Error::invalid_event_signature_hash(
10642                            Self::SIGNATURE,
10643                            topics.0,
10644                            Self::SIGNATURE_HASH,
10645                        ),
10646                    );
10647                }
10648                Ok(())
10649            }
10650            #[inline]
10651            fn tokenize_body(&self) -> Self::DataToken<'_> {
10652                (
10653                    <alloy::sol_types::sol_data::Uint<
10654                        256,
10655                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10656                )
10657            }
10658            #[inline]
10659            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10660                (
10661                    Self::SIGNATURE_HASH.into(),
10662                    self.delegator.clone(),
10663                    self.validator.clone(),
10664                )
10665            }
10666            #[inline]
10667            fn encode_topics_raw(
10668                &self,
10669                out: &mut [alloy_sol_types::abi::token::WordToken],
10670            ) -> alloy_sol_types::Result<()> {
10671                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10672                    return Err(alloy_sol_types::Error::Overrun);
10673                }
10674                out[0usize] = alloy_sol_types::abi::token::WordToken(
10675                    Self::SIGNATURE_HASH,
10676                );
10677                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10678                    &self.delegator,
10679                );
10680                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10681                    &self.validator,
10682                );
10683                Ok(())
10684            }
10685        }
10686        #[automatically_derived]
10687        impl alloy_sol_types::private::IntoLogData for Undelegated {
10688            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10689                From::from(self)
10690            }
10691            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10692                From::from(&self)
10693            }
10694        }
10695        #[automatically_derived]
10696        impl From<&Undelegated> for alloy_sol_types::private::LogData {
10697            #[inline]
10698            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
10699                alloy_sol_types::SolEvent::encode_log_data(this)
10700            }
10701        }
10702    };
10703    #[derive(serde::Serialize, serde::Deserialize)]
10704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10705    /**Event with signature `UndelegatedV2(address,address,uint64,uint256,uint256)` and selector `0x708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da`.
10706```solidity
10707event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
10708```*/
10709    #[allow(
10710        non_camel_case_types,
10711        non_snake_case,
10712        clippy::pub_underscore_fields,
10713        clippy::style
10714    )]
10715    #[derive(Clone)]
10716    pub struct UndelegatedV2 {
10717        #[allow(missing_docs)]
10718        pub delegator: alloy::sol_types::private::Address,
10719        #[allow(missing_docs)]
10720        pub validator: alloy::sol_types::private::Address,
10721        #[allow(missing_docs)]
10722        pub undelegationId: u64,
10723        #[allow(missing_docs)]
10724        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10725        #[allow(missing_docs)]
10726        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
10727    }
10728    #[allow(
10729        non_camel_case_types,
10730        non_snake_case,
10731        clippy::pub_underscore_fields,
10732        clippy::style
10733    )]
10734    const _: () = {
10735        use alloy::sol_types as alloy_sol_types;
10736        #[automatically_derived]
10737        impl alloy_sol_types::SolEvent for UndelegatedV2 {
10738            type DataTuple<'a> = (
10739                alloy::sol_types::sol_data::Uint<256>,
10740                alloy::sol_types::sol_data::Uint<256>,
10741            );
10742            type DataToken<'a> = <Self::DataTuple<
10743                'a,
10744            > as alloy_sol_types::SolType>::Token<'a>;
10745            type TopicList = (
10746                alloy_sol_types::sol_data::FixedBytes<32>,
10747                alloy::sol_types::sol_data::Address,
10748                alloy::sol_types::sol_data::Address,
10749                alloy::sol_types::sol_data::Uint<64>,
10750            );
10751            const SIGNATURE: &'static str = "UndelegatedV2(address,address,uint64,uint256,uint256)";
10752            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10753                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
10754                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
10755                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
10756            ]);
10757            const ANONYMOUS: bool = false;
10758            #[allow(unused_variables)]
10759            #[inline]
10760            fn new(
10761                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10762                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10763            ) -> Self {
10764                Self {
10765                    delegator: topics.1,
10766                    validator: topics.2,
10767                    undelegationId: topics.3,
10768                    amount: data.0,
10769                    unlocksAt: data.1,
10770                }
10771            }
10772            #[inline]
10773            fn check_signature(
10774                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10775            ) -> alloy_sol_types::Result<()> {
10776                if topics.0 != Self::SIGNATURE_HASH {
10777                    return Err(
10778                        alloy_sol_types::Error::invalid_event_signature_hash(
10779                            Self::SIGNATURE,
10780                            topics.0,
10781                            Self::SIGNATURE_HASH,
10782                        ),
10783                    );
10784                }
10785                Ok(())
10786            }
10787            #[inline]
10788            fn tokenize_body(&self) -> Self::DataToken<'_> {
10789                (
10790                    <alloy::sol_types::sol_data::Uint<
10791                        256,
10792                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10793                    <alloy::sol_types::sol_data::Uint<
10794                        256,
10795                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
10796                )
10797            }
10798            #[inline]
10799            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10800                (
10801                    Self::SIGNATURE_HASH.into(),
10802                    self.delegator.clone(),
10803                    self.validator.clone(),
10804                    self.undelegationId.clone(),
10805                )
10806            }
10807            #[inline]
10808            fn encode_topics_raw(
10809                &self,
10810                out: &mut [alloy_sol_types::abi::token::WordToken],
10811            ) -> alloy_sol_types::Result<()> {
10812                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10813                    return Err(alloy_sol_types::Error::Overrun);
10814                }
10815                out[0usize] = alloy_sol_types::abi::token::WordToken(
10816                    Self::SIGNATURE_HASH,
10817                );
10818                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10819                    &self.delegator,
10820                );
10821                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10822                    &self.validator,
10823                );
10824                out[3usize] = <alloy::sol_types::sol_data::Uint<
10825                    64,
10826                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
10827                Ok(())
10828            }
10829        }
10830        #[automatically_derived]
10831        impl alloy_sol_types::private::IntoLogData for UndelegatedV2 {
10832            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10833                From::from(self)
10834            }
10835            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10836                From::from(&self)
10837            }
10838        }
10839        #[automatically_derived]
10840        impl From<&UndelegatedV2> for alloy_sol_types::private::LogData {
10841            #[inline]
10842            fn from(this: &UndelegatedV2) -> alloy_sol_types::private::LogData {
10843                alloy_sol_types::SolEvent::encode_log_data(this)
10844            }
10845        }
10846    };
10847    #[derive(serde::Serialize, serde::Deserialize)]
10848    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10849    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
10850```solidity
10851event Unpaused(address account);
10852```*/
10853    #[allow(
10854        non_camel_case_types,
10855        non_snake_case,
10856        clippy::pub_underscore_fields,
10857        clippy::style
10858    )]
10859    #[derive(Clone)]
10860    pub struct Unpaused {
10861        #[allow(missing_docs)]
10862        pub account: alloy::sol_types::private::Address,
10863    }
10864    #[allow(
10865        non_camel_case_types,
10866        non_snake_case,
10867        clippy::pub_underscore_fields,
10868        clippy::style
10869    )]
10870    const _: () = {
10871        use alloy::sol_types as alloy_sol_types;
10872        #[automatically_derived]
10873        impl alloy_sol_types::SolEvent for Unpaused {
10874            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
10875            type DataToken<'a> = <Self::DataTuple<
10876                'a,
10877            > as alloy_sol_types::SolType>::Token<'a>;
10878            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
10879            const SIGNATURE: &'static str = "Unpaused(address)";
10880            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10881                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
10882                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
10883                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
10884            ]);
10885            const ANONYMOUS: bool = false;
10886            #[allow(unused_variables)]
10887            #[inline]
10888            fn new(
10889                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10890                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10891            ) -> Self {
10892                Self { account: data.0 }
10893            }
10894            #[inline]
10895            fn check_signature(
10896                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10897            ) -> alloy_sol_types::Result<()> {
10898                if topics.0 != Self::SIGNATURE_HASH {
10899                    return Err(
10900                        alloy_sol_types::Error::invalid_event_signature_hash(
10901                            Self::SIGNATURE,
10902                            topics.0,
10903                            Self::SIGNATURE_HASH,
10904                        ),
10905                    );
10906                }
10907                Ok(())
10908            }
10909            #[inline]
10910            fn tokenize_body(&self) -> Self::DataToken<'_> {
10911                (
10912                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10913                        &self.account,
10914                    ),
10915                )
10916            }
10917            #[inline]
10918            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10919                (Self::SIGNATURE_HASH.into(),)
10920            }
10921            #[inline]
10922            fn encode_topics_raw(
10923                &self,
10924                out: &mut [alloy_sol_types::abi::token::WordToken],
10925            ) -> alloy_sol_types::Result<()> {
10926                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10927                    return Err(alloy_sol_types::Error::Overrun);
10928                }
10929                out[0usize] = alloy_sol_types::abi::token::WordToken(
10930                    Self::SIGNATURE_HASH,
10931                );
10932                Ok(())
10933            }
10934        }
10935        #[automatically_derived]
10936        impl alloy_sol_types::private::IntoLogData for Unpaused {
10937            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10938                From::from(self)
10939            }
10940            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10941                From::from(&self)
10942            }
10943        }
10944        #[automatically_derived]
10945        impl From<&Unpaused> for alloy_sol_types::private::LogData {
10946            #[inline]
10947            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
10948                alloy_sol_types::SolEvent::encode_log_data(this)
10949            }
10950        }
10951    };
10952    #[derive(serde::Serialize, serde::Deserialize)]
10953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10954    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
10955```solidity
10956event Upgraded(address indexed implementation);
10957```*/
10958    #[allow(
10959        non_camel_case_types,
10960        non_snake_case,
10961        clippy::pub_underscore_fields,
10962        clippy::style
10963    )]
10964    #[derive(Clone)]
10965    pub struct Upgraded {
10966        #[allow(missing_docs)]
10967        pub implementation: alloy::sol_types::private::Address,
10968    }
10969    #[allow(
10970        non_camel_case_types,
10971        non_snake_case,
10972        clippy::pub_underscore_fields,
10973        clippy::style
10974    )]
10975    const _: () = {
10976        use alloy::sol_types as alloy_sol_types;
10977        #[automatically_derived]
10978        impl alloy_sol_types::SolEvent for Upgraded {
10979            type DataTuple<'a> = ();
10980            type DataToken<'a> = <Self::DataTuple<
10981                'a,
10982            > as alloy_sol_types::SolType>::Token<'a>;
10983            type TopicList = (
10984                alloy_sol_types::sol_data::FixedBytes<32>,
10985                alloy::sol_types::sol_data::Address,
10986            );
10987            const SIGNATURE: &'static str = "Upgraded(address)";
10988            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10989                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
10990                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
10991                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10992            ]);
10993            const ANONYMOUS: bool = false;
10994            #[allow(unused_variables)]
10995            #[inline]
10996            fn new(
10997                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10998                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10999            ) -> Self {
11000                Self { implementation: topics.1 }
11001            }
11002            #[inline]
11003            fn check_signature(
11004                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11005            ) -> alloy_sol_types::Result<()> {
11006                if topics.0 != Self::SIGNATURE_HASH {
11007                    return Err(
11008                        alloy_sol_types::Error::invalid_event_signature_hash(
11009                            Self::SIGNATURE,
11010                            topics.0,
11011                            Self::SIGNATURE_HASH,
11012                        ),
11013                    );
11014                }
11015                Ok(())
11016            }
11017            #[inline]
11018            fn tokenize_body(&self) -> Self::DataToken<'_> {
11019                ()
11020            }
11021            #[inline]
11022            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11023                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
11024            }
11025            #[inline]
11026            fn encode_topics_raw(
11027                &self,
11028                out: &mut [alloy_sol_types::abi::token::WordToken],
11029            ) -> alloy_sol_types::Result<()> {
11030                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11031                    return Err(alloy_sol_types::Error::Overrun);
11032                }
11033                out[0usize] = alloy_sol_types::abi::token::WordToken(
11034                    Self::SIGNATURE_HASH,
11035                );
11036                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11037                    &self.implementation,
11038                );
11039                Ok(())
11040            }
11041        }
11042        #[automatically_derived]
11043        impl alloy_sol_types::private::IntoLogData for Upgraded {
11044            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11045                From::from(self)
11046            }
11047            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11048                From::from(&self)
11049            }
11050        }
11051        #[automatically_derived]
11052        impl From<&Upgraded> for alloy_sol_types::private::LogData {
11053            #[inline]
11054            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
11055                alloy_sol_types::SolEvent::encode_log_data(this)
11056            }
11057        }
11058    };
11059    #[derive(serde::Serialize, serde::Deserialize)]
11060    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11061    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
11062```solidity
11063event ValidatorExit(address indexed validator);
11064```*/
11065    #[allow(
11066        non_camel_case_types,
11067        non_snake_case,
11068        clippy::pub_underscore_fields,
11069        clippy::style
11070    )]
11071    #[derive(Clone)]
11072    pub struct ValidatorExit {
11073        #[allow(missing_docs)]
11074        pub validator: alloy::sol_types::private::Address,
11075    }
11076    #[allow(
11077        non_camel_case_types,
11078        non_snake_case,
11079        clippy::pub_underscore_fields,
11080        clippy::style
11081    )]
11082    const _: () = {
11083        use alloy::sol_types as alloy_sol_types;
11084        #[automatically_derived]
11085        impl alloy_sol_types::SolEvent for ValidatorExit {
11086            type DataTuple<'a> = ();
11087            type DataToken<'a> = <Self::DataTuple<
11088                'a,
11089            > as alloy_sol_types::SolType>::Token<'a>;
11090            type TopicList = (
11091                alloy_sol_types::sol_data::FixedBytes<32>,
11092                alloy::sol_types::sol_data::Address,
11093            );
11094            const SIGNATURE: &'static str = "ValidatorExit(address)";
11095            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11096                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
11097                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
11098                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
11099            ]);
11100            const ANONYMOUS: bool = false;
11101            #[allow(unused_variables)]
11102            #[inline]
11103            fn new(
11104                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11105                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11106            ) -> Self {
11107                Self { validator: topics.1 }
11108            }
11109            #[inline]
11110            fn check_signature(
11111                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11112            ) -> alloy_sol_types::Result<()> {
11113                if topics.0 != Self::SIGNATURE_HASH {
11114                    return Err(
11115                        alloy_sol_types::Error::invalid_event_signature_hash(
11116                            Self::SIGNATURE,
11117                            topics.0,
11118                            Self::SIGNATURE_HASH,
11119                        ),
11120                    );
11121                }
11122                Ok(())
11123            }
11124            #[inline]
11125            fn tokenize_body(&self) -> Self::DataToken<'_> {
11126                ()
11127            }
11128            #[inline]
11129            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11130                (Self::SIGNATURE_HASH.into(), self.validator.clone())
11131            }
11132            #[inline]
11133            fn encode_topics_raw(
11134                &self,
11135                out: &mut [alloy_sol_types::abi::token::WordToken],
11136            ) -> alloy_sol_types::Result<()> {
11137                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11138                    return Err(alloy_sol_types::Error::Overrun);
11139                }
11140                out[0usize] = alloy_sol_types::abi::token::WordToken(
11141                    Self::SIGNATURE_HASH,
11142                );
11143                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11144                    &self.validator,
11145                );
11146                Ok(())
11147            }
11148        }
11149        #[automatically_derived]
11150        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
11151            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11152                From::from(self)
11153            }
11154            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11155                From::from(&self)
11156            }
11157        }
11158        #[automatically_derived]
11159        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
11160            #[inline]
11161            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
11162                alloy_sol_types::SolEvent::encode_log_data(this)
11163            }
11164        }
11165    };
11166    #[derive(serde::Serialize, serde::Deserialize)]
11167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11168    /**Event with signature `ValidatorExitClaimed(address,address,uint256)` and selector `0x8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad844`.
11169```solidity
11170event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
11171```*/
11172    #[allow(
11173        non_camel_case_types,
11174        non_snake_case,
11175        clippy::pub_underscore_fields,
11176        clippy::style
11177    )]
11178    #[derive(Clone)]
11179    pub struct ValidatorExitClaimed {
11180        #[allow(missing_docs)]
11181        pub delegator: alloy::sol_types::private::Address,
11182        #[allow(missing_docs)]
11183        pub validator: alloy::sol_types::private::Address,
11184        #[allow(missing_docs)]
11185        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11186    }
11187    #[allow(
11188        non_camel_case_types,
11189        non_snake_case,
11190        clippy::pub_underscore_fields,
11191        clippy::style
11192    )]
11193    const _: () = {
11194        use alloy::sol_types as alloy_sol_types;
11195        #[automatically_derived]
11196        impl alloy_sol_types::SolEvent for ValidatorExitClaimed {
11197            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11198            type DataToken<'a> = <Self::DataTuple<
11199                'a,
11200            > as alloy_sol_types::SolType>::Token<'a>;
11201            type TopicList = (
11202                alloy_sol_types::sol_data::FixedBytes<32>,
11203                alloy::sol_types::sol_data::Address,
11204                alloy::sol_types::sol_data::Address,
11205            );
11206            const SIGNATURE: &'static str = "ValidatorExitClaimed(address,address,uint256)";
11207            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11208                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
11209                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
11210                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
11211            ]);
11212            const ANONYMOUS: bool = false;
11213            #[allow(unused_variables)]
11214            #[inline]
11215            fn new(
11216                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11217                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11218            ) -> Self {
11219                Self {
11220                    delegator: topics.1,
11221                    validator: topics.2,
11222                    amount: data.0,
11223                }
11224            }
11225            #[inline]
11226            fn check_signature(
11227                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11228            ) -> alloy_sol_types::Result<()> {
11229                if topics.0 != Self::SIGNATURE_HASH {
11230                    return Err(
11231                        alloy_sol_types::Error::invalid_event_signature_hash(
11232                            Self::SIGNATURE,
11233                            topics.0,
11234                            Self::SIGNATURE_HASH,
11235                        ),
11236                    );
11237                }
11238                Ok(())
11239            }
11240            #[inline]
11241            fn tokenize_body(&self) -> Self::DataToken<'_> {
11242                (
11243                    <alloy::sol_types::sol_data::Uint<
11244                        256,
11245                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11246                )
11247            }
11248            #[inline]
11249            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11250                (
11251                    Self::SIGNATURE_HASH.into(),
11252                    self.delegator.clone(),
11253                    self.validator.clone(),
11254                )
11255            }
11256            #[inline]
11257            fn encode_topics_raw(
11258                &self,
11259                out: &mut [alloy_sol_types::abi::token::WordToken],
11260            ) -> alloy_sol_types::Result<()> {
11261                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11262                    return Err(alloy_sol_types::Error::Overrun);
11263                }
11264                out[0usize] = alloy_sol_types::abi::token::WordToken(
11265                    Self::SIGNATURE_HASH,
11266                );
11267                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11268                    &self.delegator,
11269                );
11270                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11271                    &self.validator,
11272                );
11273                Ok(())
11274            }
11275        }
11276        #[automatically_derived]
11277        impl alloy_sol_types::private::IntoLogData for ValidatorExitClaimed {
11278            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11279                From::from(self)
11280            }
11281            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11282                From::from(&self)
11283            }
11284        }
11285        #[automatically_derived]
11286        impl From<&ValidatorExitClaimed> for alloy_sol_types::private::LogData {
11287            #[inline]
11288            fn from(this: &ValidatorExitClaimed) -> alloy_sol_types::private::LogData {
11289                alloy_sol_types::SolEvent::encode_log_data(this)
11290            }
11291        }
11292    };
11293    #[derive(serde::Serialize, serde::Deserialize)]
11294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11295    /**Event with signature `ValidatorExitV2(address,uint256)` and selector `0x4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab`.
11296```solidity
11297event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
11298```*/
11299    #[allow(
11300        non_camel_case_types,
11301        non_snake_case,
11302        clippy::pub_underscore_fields,
11303        clippy::style
11304    )]
11305    #[derive(Clone)]
11306    pub struct ValidatorExitV2 {
11307        #[allow(missing_docs)]
11308        pub validator: alloy::sol_types::private::Address,
11309        #[allow(missing_docs)]
11310        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
11311    }
11312    #[allow(
11313        non_camel_case_types,
11314        non_snake_case,
11315        clippy::pub_underscore_fields,
11316        clippy::style
11317    )]
11318    const _: () = {
11319        use alloy::sol_types as alloy_sol_types;
11320        #[automatically_derived]
11321        impl alloy_sol_types::SolEvent for ValidatorExitV2 {
11322            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11323            type DataToken<'a> = <Self::DataTuple<
11324                'a,
11325            > as alloy_sol_types::SolType>::Token<'a>;
11326            type TopicList = (
11327                alloy_sol_types::sol_data::FixedBytes<32>,
11328                alloy::sol_types::sol_data::Address,
11329            );
11330            const SIGNATURE: &'static str = "ValidatorExitV2(address,uint256)";
11331            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11332                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
11333                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
11334                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
11335            ]);
11336            const ANONYMOUS: bool = false;
11337            #[allow(unused_variables)]
11338            #[inline]
11339            fn new(
11340                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11341                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11342            ) -> Self {
11343                Self {
11344                    validator: topics.1,
11345                    unlocksAt: data.0,
11346                }
11347            }
11348            #[inline]
11349            fn check_signature(
11350                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11351            ) -> alloy_sol_types::Result<()> {
11352                if topics.0 != Self::SIGNATURE_HASH {
11353                    return Err(
11354                        alloy_sol_types::Error::invalid_event_signature_hash(
11355                            Self::SIGNATURE,
11356                            topics.0,
11357                            Self::SIGNATURE_HASH,
11358                        ),
11359                    );
11360                }
11361                Ok(())
11362            }
11363            #[inline]
11364            fn tokenize_body(&self) -> Self::DataToken<'_> {
11365                (
11366                    <alloy::sol_types::sol_data::Uint<
11367                        256,
11368                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
11369                )
11370            }
11371            #[inline]
11372            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11373                (Self::SIGNATURE_HASH.into(), self.validator.clone())
11374            }
11375            #[inline]
11376            fn encode_topics_raw(
11377                &self,
11378                out: &mut [alloy_sol_types::abi::token::WordToken],
11379            ) -> alloy_sol_types::Result<()> {
11380                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11381                    return Err(alloy_sol_types::Error::Overrun);
11382                }
11383                out[0usize] = alloy_sol_types::abi::token::WordToken(
11384                    Self::SIGNATURE_HASH,
11385                );
11386                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11387                    &self.validator,
11388                );
11389                Ok(())
11390            }
11391        }
11392        #[automatically_derived]
11393        impl alloy_sol_types::private::IntoLogData for ValidatorExitV2 {
11394            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11395                From::from(self)
11396            }
11397            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11398                From::from(&self)
11399            }
11400        }
11401        #[automatically_derived]
11402        impl From<&ValidatorExitV2> for alloy_sol_types::private::LogData {
11403            #[inline]
11404            fn from(this: &ValidatorExitV2) -> alloy_sol_types::private::LogData {
11405                alloy_sol_types::SolEvent::encode_log_data(this)
11406            }
11407        }
11408    };
11409    #[derive(serde::Serialize, serde::Deserialize)]
11410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11411    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
11412```solidity
11413event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
11414```*/
11415    #[allow(
11416        non_camel_case_types,
11417        non_snake_case,
11418        clippy::pub_underscore_fields,
11419        clippy::style
11420    )]
11421    #[derive(Clone)]
11422    pub struct ValidatorRegistered {
11423        #[allow(missing_docs)]
11424        pub account: alloy::sol_types::private::Address,
11425        #[allow(missing_docs)]
11426        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11427        #[allow(missing_docs)]
11428        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11429        #[allow(missing_docs)]
11430        pub commission: u16,
11431    }
11432    #[allow(
11433        non_camel_case_types,
11434        non_snake_case,
11435        clippy::pub_underscore_fields,
11436        clippy::style
11437    )]
11438    const _: () = {
11439        use alloy::sol_types as alloy_sol_types;
11440        #[automatically_derived]
11441        impl alloy_sol_types::SolEvent for ValidatorRegistered {
11442            type DataTuple<'a> = (
11443                BN254::G2Point,
11444                EdOnBN254::EdOnBN254Point,
11445                alloy::sol_types::sol_data::Uint<16>,
11446            );
11447            type DataToken<'a> = <Self::DataTuple<
11448                'a,
11449            > as alloy_sol_types::SolType>::Token<'a>;
11450            type TopicList = (
11451                alloy_sol_types::sol_data::FixedBytes<32>,
11452                alloy::sol_types::sol_data::Address,
11453            );
11454            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
11455            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11456                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
11457                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
11458                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
11459            ]);
11460            const ANONYMOUS: bool = false;
11461            #[allow(unused_variables)]
11462            #[inline]
11463            fn new(
11464                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11465                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11466            ) -> Self {
11467                Self {
11468                    account: topics.1,
11469                    blsVk: data.0,
11470                    schnorrVk: data.1,
11471                    commission: data.2,
11472                }
11473            }
11474            #[inline]
11475            fn check_signature(
11476                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11477            ) -> alloy_sol_types::Result<()> {
11478                if topics.0 != Self::SIGNATURE_HASH {
11479                    return Err(
11480                        alloy_sol_types::Error::invalid_event_signature_hash(
11481                            Self::SIGNATURE,
11482                            topics.0,
11483                            Self::SIGNATURE_HASH,
11484                        ),
11485                    );
11486                }
11487                Ok(())
11488            }
11489            #[inline]
11490            fn tokenize_body(&self) -> Self::DataToken<'_> {
11491                (
11492                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
11493                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11494                        &self.schnorrVk,
11495                    ),
11496                    <alloy::sol_types::sol_data::Uint<
11497                        16,
11498                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11499                )
11500            }
11501            #[inline]
11502            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11503                (Self::SIGNATURE_HASH.into(), self.account.clone())
11504            }
11505            #[inline]
11506            fn encode_topics_raw(
11507                &self,
11508                out: &mut [alloy_sol_types::abi::token::WordToken],
11509            ) -> alloy_sol_types::Result<()> {
11510                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11511                    return Err(alloy_sol_types::Error::Overrun);
11512                }
11513                out[0usize] = alloy_sol_types::abi::token::WordToken(
11514                    Self::SIGNATURE_HASH,
11515                );
11516                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11517                    &self.account,
11518                );
11519                Ok(())
11520            }
11521        }
11522        #[automatically_derived]
11523        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
11524            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11525                From::from(self)
11526            }
11527            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11528                From::from(&self)
11529            }
11530        }
11531        #[automatically_derived]
11532        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
11533            #[inline]
11534            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
11535                alloy_sol_types::SolEvent::encode_log_data(this)
11536            }
11537        }
11538    };
11539    #[derive(serde::Serialize, serde::Deserialize)]
11540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11541    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)` and selector `0x26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b268489`.
11542```solidity
11543event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
11544```*/
11545    #[allow(
11546        non_camel_case_types,
11547        non_snake_case,
11548        clippy::pub_underscore_fields,
11549        clippy::style
11550    )]
11551    #[derive(Clone)]
11552    pub struct ValidatorRegisteredV2 {
11553        #[allow(missing_docs)]
11554        pub account: alloy::sol_types::private::Address,
11555        #[allow(missing_docs)]
11556        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11557        #[allow(missing_docs)]
11558        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11559        #[allow(missing_docs)]
11560        pub commission: u16,
11561        #[allow(missing_docs)]
11562        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11563        #[allow(missing_docs)]
11564        pub schnorrSig: alloy::sol_types::private::Bytes,
11565        #[allow(missing_docs)]
11566        pub metadataUri: alloy::sol_types::private::String,
11567    }
11568    #[allow(
11569        non_camel_case_types,
11570        non_snake_case,
11571        clippy::pub_underscore_fields,
11572        clippy::style
11573    )]
11574    const _: () = {
11575        use alloy::sol_types as alloy_sol_types;
11576        #[automatically_derived]
11577        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
11578            type DataTuple<'a> = (
11579                BN254::G2Point,
11580                EdOnBN254::EdOnBN254Point,
11581                alloy::sol_types::sol_data::Uint<16>,
11582                BN254::G1Point,
11583                alloy::sol_types::sol_data::Bytes,
11584                alloy::sol_types::sol_data::String,
11585            );
11586            type DataToken<'a> = <Self::DataTuple<
11587                'a,
11588            > as alloy_sol_types::SolType>::Token<'a>;
11589            type TopicList = (
11590                alloy_sol_types::sol_data::FixedBytes<32>,
11591                alloy::sol_types::sol_data::Address,
11592            );
11593            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)";
11594            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11595                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
11596                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
11597                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
11598            ]);
11599            const ANONYMOUS: bool = false;
11600            #[allow(unused_variables)]
11601            #[inline]
11602            fn new(
11603                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11604                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11605            ) -> Self {
11606                Self {
11607                    account: topics.1,
11608                    blsVK: data.0,
11609                    schnorrVK: data.1,
11610                    commission: data.2,
11611                    blsSig: data.3,
11612                    schnorrSig: data.4,
11613                    metadataUri: data.5,
11614                }
11615            }
11616            #[inline]
11617            fn check_signature(
11618                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11619            ) -> alloy_sol_types::Result<()> {
11620                if topics.0 != Self::SIGNATURE_HASH {
11621                    return Err(
11622                        alloy_sol_types::Error::invalid_event_signature_hash(
11623                            Self::SIGNATURE,
11624                            topics.0,
11625                            Self::SIGNATURE_HASH,
11626                        ),
11627                    );
11628                }
11629                Ok(())
11630            }
11631            #[inline]
11632            fn tokenize_body(&self) -> Self::DataToken<'_> {
11633                (
11634                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
11635                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11636                        &self.schnorrVK,
11637                    ),
11638                    <alloy::sol_types::sol_data::Uint<
11639                        16,
11640                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11641                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
11642                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11643                        &self.schnorrSig,
11644                    ),
11645                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11646                        &self.metadataUri,
11647                    ),
11648                )
11649            }
11650            #[inline]
11651            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11652                (Self::SIGNATURE_HASH.into(), self.account.clone())
11653            }
11654            #[inline]
11655            fn encode_topics_raw(
11656                &self,
11657                out: &mut [alloy_sol_types::abi::token::WordToken],
11658            ) -> alloy_sol_types::Result<()> {
11659                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11660                    return Err(alloy_sol_types::Error::Overrun);
11661                }
11662                out[0usize] = alloy_sol_types::abi::token::WordToken(
11663                    Self::SIGNATURE_HASH,
11664                );
11665                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11666                    &self.account,
11667                );
11668                Ok(())
11669            }
11670        }
11671        #[automatically_derived]
11672        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
11673            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11674                From::from(self)
11675            }
11676            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11677                From::from(&self)
11678            }
11679        }
11680        #[automatically_derived]
11681        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
11682            #[inline]
11683            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
11684                alloy_sol_types::SolEvent::encode_log_data(this)
11685            }
11686        }
11687    };
11688    #[derive(serde::Serialize, serde::Deserialize)]
11689    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11690    /**Event with signature `ValidatorRegisteredV3(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string,bytes32,string)` and selector `0xbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec14`.
11691```solidity
11692event ValidatorRegisteredV3(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri, bytes32 x25519Key, string p2pAddr);
11693```*/
11694    #[allow(
11695        non_camel_case_types,
11696        non_snake_case,
11697        clippy::pub_underscore_fields,
11698        clippy::style
11699    )]
11700    #[derive(Clone)]
11701    pub struct ValidatorRegisteredV3 {
11702        #[allow(missing_docs)]
11703        pub account: alloy::sol_types::private::Address,
11704        #[allow(missing_docs)]
11705        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11706        #[allow(missing_docs)]
11707        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11708        #[allow(missing_docs)]
11709        pub commission: u16,
11710        #[allow(missing_docs)]
11711        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11712        #[allow(missing_docs)]
11713        pub schnorrSig: alloy::sol_types::private::Bytes,
11714        #[allow(missing_docs)]
11715        pub metadataUri: alloy::sol_types::private::String,
11716        #[allow(missing_docs)]
11717        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
11718        #[allow(missing_docs)]
11719        pub p2pAddr: alloy::sol_types::private::String,
11720    }
11721    #[allow(
11722        non_camel_case_types,
11723        non_snake_case,
11724        clippy::pub_underscore_fields,
11725        clippy::style
11726    )]
11727    const _: () = {
11728        use alloy::sol_types as alloy_sol_types;
11729        #[automatically_derived]
11730        impl alloy_sol_types::SolEvent for ValidatorRegisteredV3 {
11731            type DataTuple<'a> = (
11732                BN254::G2Point,
11733                EdOnBN254::EdOnBN254Point,
11734                alloy::sol_types::sol_data::Uint<16>,
11735                BN254::G1Point,
11736                alloy::sol_types::sol_data::Bytes,
11737                alloy::sol_types::sol_data::String,
11738                alloy::sol_types::sol_data::FixedBytes<32>,
11739                alloy::sol_types::sol_data::String,
11740            );
11741            type DataToken<'a> = <Self::DataTuple<
11742                'a,
11743            > as alloy_sol_types::SolType>::Token<'a>;
11744            type TopicList = (
11745                alloy_sol_types::sol_data::FixedBytes<32>,
11746                alloy::sol_types::sol_data::Address,
11747            );
11748            const SIGNATURE: &'static str = "ValidatorRegisteredV3(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string,bytes32,string)";
11749            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11750                191u8, 20u8, 205u8, 127u8, 234u8, 112u8, 67u8, 93u8, 66u8, 79u8, 146u8,
11751                247u8, 163u8, 208u8, 17u8, 9u8, 165u8, 131u8, 68u8, 157u8, 113u8, 136u8,
11752                152u8, 166u8, 169u8, 105u8, 135u8, 156u8, 84u8, 118u8, 236u8, 20u8,
11753            ]);
11754            const ANONYMOUS: bool = false;
11755            #[allow(unused_variables)]
11756            #[inline]
11757            fn new(
11758                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11759                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11760            ) -> Self {
11761                Self {
11762                    account: topics.1,
11763                    blsVK: data.0,
11764                    schnorrVK: data.1,
11765                    commission: data.2,
11766                    blsSig: data.3,
11767                    schnorrSig: data.4,
11768                    metadataUri: data.5,
11769                    x25519Key: data.6,
11770                    p2pAddr: data.7,
11771                }
11772            }
11773            #[inline]
11774            fn check_signature(
11775                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11776            ) -> alloy_sol_types::Result<()> {
11777                if topics.0 != Self::SIGNATURE_HASH {
11778                    return Err(
11779                        alloy_sol_types::Error::invalid_event_signature_hash(
11780                            Self::SIGNATURE,
11781                            topics.0,
11782                            Self::SIGNATURE_HASH,
11783                        ),
11784                    );
11785                }
11786                Ok(())
11787            }
11788            #[inline]
11789            fn tokenize_body(&self) -> Self::DataToken<'_> {
11790                (
11791                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
11792                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11793                        &self.schnorrVK,
11794                    ),
11795                    <alloy::sol_types::sol_data::Uint<
11796                        16,
11797                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11798                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
11799                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11800                        &self.schnorrSig,
11801                    ),
11802                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11803                        &self.metadataUri,
11804                    ),
11805                    <alloy::sol_types::sol_data::FixedBytes<
11806                        32,
11807                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
11808                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11809                        &self.p2pAddr,
11810                    ),
11811                )
11812            }
11813            #[inline]
11814            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11815                (Self::SIGNATURE_HASH.into(), self.account.clone())
11816            }
11817            #[inline]
11818            fn encode_topics_raw(
11819                &self,
11820                out: &mut [alloy_sol_types::abi::token::WordToken],
11821            ) -> alloy_sol_types::Result<()> {
11822                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11823                    return Err(alloy_sol_types::Error::Overrun);
11824                }
11825                out[0usize] = alloy_sol_types::abi::token::WordToken(
11826                    Self::SIGNATURE_HASH,
11827                );
11828                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11829                    &self.account,
11830                );
11831                Ok(())
11832            }
11833        }
11834        #[automatically_derived]
11835        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV3 {
11836            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11837                From::from(self)
11838            }
11839            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11840                From::from(&self)
11841            }
11842        }
11843        #[automatically_derived]
11844        impl From<&ValidatorRegisteredV3> for alloy_sol_types::private::LogData {
11845            #[inline]
11846            fn from(this: &ValidatorRegisteredV3) -> alloy_sol_types::private::LogData {
11847                alloy_sol_types::SolEvent::encode_log_data(this)
11848            }
11849        }
11850    };
11851    #[derive(serde::Serialize, serde::Deserialize)]
11852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11853    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
11854```solidity
11855event Withdrawal(address indexed account, uint256 amount);
11856```*/
11857    #[allow(
11858        non_camel_case_types,
11859        non_snake_case,
11860        clippy::pub_underscore_fields,
11861        clippy::style
11862    )]
11863    #[derive(Clone)]
11864    pub struct Withdrawal {
11865        #[allow(missing_docs)]
11866        pub account: alloy::sol_types::private::Address,
11867        #[allow(missing_docs)]
11868        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11869    }
11870    #[allow(
11871        non_camel_case_types,
11872        non_snake_case,
11873        clippy::pub_underscore_fields,
11874        clippy::style
11875    )]
11876    const _: () = {
11877        use alloy::sol_types as alloy_sol_types;
11878        #[automatically_derived]
11879        impl alloy_sol_types::SolEvent for Withdrawal {
11880            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11881            type DataToken<'a> = <Self::DataTuple<
11882                'a,
11883            > as alloy_sol_types::SolType>::Token<'a>;
11884            type TopicList = (
11885                alloy_sol_types::sol_data::FixedBytes<32>,
11886                alloy::sol_types::sol_data::Address,
11887            );
11888            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
11889            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11890                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
11891                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
11892                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
11893            ]);
11894            const ANONYMOUS: bool = false;
11895            #[allow(unused_variables)]
11896            #[inline]
11897            fn new(
11898                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11899                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11900            ) -> Self {
11901                Self {
11902                    account: topics.1,
11903                    amount: data.0,
11904                }
11905            }
11906            #[inline]
11907            fn check_signature(
11908                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11909            ) -> alloy_sol_types::Result<()> {
11910                if topics.0 != Self::SIGNATURE_HASH {
11911                    return Err(
11912                        alloy_sol_types::Error::invalid_event_signature_hash(
11913                            Self::SIGNATURE,
11914                            topics.0,
11915                            Self::SIGNATURE_HASH,
11916                        ),
11917                    );
11918                }
11919                Ok(())
11920            }
11921            #[inline]
11922            fn tokenize_body(&self) -> Self::DataToken<'_> {
11923                (
11924                    <alloy::sol_types::sol_data::Uint<
11925                        256,
11926                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11927                )
11928            }
11929            #[inline]
11930            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11931                (Self::SIGNATURE_HASH.into(), self.account.clone())
11932            }
11933            #[inline]
11934            fn encode_topics_raw(
11935                &self,
11936                out: &mut [alloy_sol_types::abi::token::WordToken],
11937            ) -> alloy_sol_types::Result<()> {
11938                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11939                    return Err(alloy_sol_types::Error::Overrun);
11940                }
11941                out[0usize] = alloy_sol_types::abi::token::WordToken(
11942                    Self::SIGNATURE_HASH,
11943                );
11944                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11945                    &self.account,
11946                );
11947                Ok(())
11948            }
11949        }
11950        #[automatically_derived]
11951        impl alloy_sol_types::private::IntoLogData for Withdrawal {
11952            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11953                From::from(self)
11954            }
11955            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11956                From::from(&self)
11957            }
11958        }
11959        #[automatically_derived]
11960        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
11961            #[inline]
11962            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
11963                alloy_sol_types::SolEvent::encode_log_data(this)
11964            }
11965        }
11966    };
11967    #[derive(serde::Serialize, serde::Deserialize)]
11968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11969    /**Event with signature `WithdrawalClaimed(address,address,uint64,uint256)` and selector `0xb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522`.
11970```solidity
11971event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
11972```*/
11973    #[allow(
11974        non_camel_case_types,
11975        non_snake_case,
11976        clippy::pub_underscore_fields,
11977        clippy::style
11978    )]
11979    #[derive(Clone)]
11980    pub struct WithdrawalClaimed {
11981        #[allow(missing_docs)]
11982        pub delegator: alloy::sol_types::private::Address,
11983        #[allow(missing_docs)]
11984        pub validator: alloy::sol_types::private::Address,
11985        #[allow(missing_docs)]
11986        pub undelegationId: u64,
11987        #[allow(missing_docs)]
11988        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11989    }
11990    #[allow(
11991        non_camel_case_types,
11992        non_snake_case,
11993        clippy::pub_underscore_fields,
11994        clippy::style
11995    )]
11996    const _: () = {
11997        use alloy::sol_types as alloy_sol_types;
11998        #[automatically_derived]
11999        impl alloy_sol_types::SolEvent for WithdrawalClaimed {
12000            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12001            type DataToken<'a> = <Self::DataTuple<
12002                'a,
12003            > as alloy_sol_types::SolType>::Token<'a>;
12004            type TopicList = (
12005                alloy_sol_types::sol_data::FixedBytes<32>,
12006                alloy::sol_types::sol_data::Address,
12007                alloy::sol_types::sol_data::Address,
12008                alloy::sol_types::sol_data::Uint<64>,
12009            );
12010            const SIGNATURE: &'static str = "WithdrawalClaimed(address,address,uint64,uint256)";
12011            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
12012                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
12013                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
12014                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
12015            ]);
12016            const ANONYMOUS: bool = false;
12017            #[allow(unused_variables)]
12018            #[inline]
12019            fn new(
12020                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
12021                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
12022            ) -> Self {
12023                Self {
12024                    delegator: topics.1,
12025                    validator: topics.2,
12026                    undelegationId: topics.3,
12027                    amount: data.0,
12028                }
12029            }
12030            #[inline]
12031            fn check_signature(
12032                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
12033            ) -> alloy_sol_types::Result<()> {
12034                if topics.0 != Self::SIGNATURE_HASH {
12035                    return Err(
12036                        alloy_sol_types::Error::invalid_event_signature_hash(
12037                            Self::SIGNATURE,
12038                            topics.0,
12039                            Self::SIGNATURE_HASH,
12040                        ),
12041                    );
12042                }
12043                Ok(())
12044            }
12045            #[inline]
12046            fn tokenize_body(&self) -> Self::DataToken<'_> {
12047                (
12048                    <alloy::sol_types::sol_data::Uint<
12049                        256,
12050                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
12051                )
12052            }
12053            #[inline]
12054            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
12055                (
12056                    Self::SIGNATURE_HASH.into(),
12057                    self.delegator.clone(),
12058                    self.validator.clone(),
12059                    self.undelegationId.clone(),
12060                )
12061            }
12062            #[inline]
12063            fn encode_topics_raw(
12064                &self,
12065                out: &mut [alloy_sol_types::abi::token::WordToken],
12066            ) -> alloy_sol_types::Result<()> {
12067                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
12068                    return Err(alloy_sol_types::Error::Overrun);
12069                }
12070                out[0usize] = alloy_sol_types::abi::token::WordToken(
12071                    Self::SIGNATURE_HASH,
12072                );
12073                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
12074                    &self.delegator,
12075                );
12076                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
12077                    &self.validator,
12078                );
12079                out[3usize] = <alloy::sol_types::sol_data::Uint<
12080                    64,
12081                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
12082                Ok(())
12083            }
12084        }
12085        #[automatically_derived]
12086        impl alloy_sol_types::private::IntoLogData for WithdrawalClaimed {
12087            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12088                From::from(self)
12089            }
12090            fn into_log_data(self) -> alloy_sol_types::private::LogData {
12091                From::from(&self)
12092            }
12093        }
12094        #[automatically_derived]
12095        impl From<&WithdrawalClaimed> for alloy_sol_types::private::LogData {
12096            #[inline]
12097            fn from(this: &WithdrawalClaimed) -> alloy_sol_types::private::LogData {
12098                alloy_sol_types::SolEvent::encode_log_data(this)
12099            }
12100        }
12101    };
12102    #[derive(serde::Serialize, serde::Deserialize)]
12103    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12104    /**Event with signature `X25519KeyUpdated(address,bytes32)` and selector `0x3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df`.
12105```solidity
12106event X25519KeyUpdated(address indexed validator, bytes32 x25519Key);
12107```*/
12108    #[allow(
12109        non_camel_case_types,
12110        non_snake_case,
12111        clippy::pub_underscore_fields,
12112        clippy::style
12113    )]
12114    #[derive(Clone)]
12115    pub struct X25519KeyUpdated {
12116        #[allow(missing_docs)]
12117        pub validator: alloy::sol_types::private::Address,
12118        #[allow(missing_docs)]
12119        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
12120    }
12121    #[allow(
12122        non_camel_case_types,
12123        non_snake_case,
12124        clippy::pub_underscore_fields,
12125        clippy::style
12126    )]
12127    const _: () = {
12128        use alloy::sol_types as alloy_sol_types;
12129        #[automatically_derived]
12130        impl alloy_sol_types::SolEvent for X25519KeyUpdated {
12131            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12132            type DataToken<'a> = <Self::DataTuple<
12133                'a,
12134            > as alloy_sol_types::SolType>::Token<'a>;
12135            type TopicList = (
12136                alloy_sol_types::sol_data::FixedBytes<32>,
12137                alloy::sol_types::sol_data::Address,
12138            );
12139            const SIGNATURE: &'static str = "X25519KeyUpdated(address,bytes32)";
12140            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
12141                59u8, 76u8, 200u8, 138u8, 254u8, 62u8, 92u8, 230u8, 190u8, 234u8, 121u8,
12142                9u8, 222u8, 32u8, 11u8, 242u8, 24u8, 158u8, 238u8, 204u8, 179u8, 150u8,
12143                87u8, 31u8, 31u8, 148u8, 213u8, 24u8, 53u8, 242u8, 71u8, 223u8,
12144            ]);
12145            const ANONYMOUS: bool = false;
12146            #[allow(unused_variables)]
12147            #[inline]
12148            fn new(
12149                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
12150                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
12151            ) -> Self {
12152                Self {
12153                    validator: topics.1,
12154                    x25519Key: data.0,
12155                }
12156            }
12157            #[inline]
12158            fn check_signature(
12159                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
12160            ) -> alloy_sol_types::Result<()> {
12161                if topics.0 != Self::SIGNATURE_HASH {
12162                    return Err(
12163                        alloy_sol_types::Error::invalid_event_signature_hash(
12164                            Self::SIGNATURE,
12165                            topics.0,
12166                            Self::SIGNATURE_HASH,
12167                        ),
12168                    );
12169                }
12170                Ok(())
12171            }
12172            #[inline]
12173            fn tokenize_body(&self) -> Self::DataToken<'_> {
12174                (
12175                    <alloy::sol_types::sol_data::FixedBytes<
12176                        32,
12177                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
12178                )
12179            }
12180            #[inline]
12181            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
12182                (Self::SIGNATURE_HASH.into(), self.validator.clone())
12183            }
12184            #[inline]
12185            fn encode_topics_raw(
12186                &self,
12187                out: &mut [alloy_sol_types::abi::token::WordToken],
12188            ) -> alloy_sol_types::Result<()> {
12189                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
12190                    return Err(alloy_sol_types::Error::Overrun);
12191                }
12192                out[0usize] = alloy_sol_types::abi::token::WordToken(
12193                    Self::SIGNATURE_HASH,
12194                );
12195                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
12196                    &self.validator,
12197                );
12198                Ok(())
12199            }
12200        }
12201        #[automatically_derived]
12202        impl alloy_sol_types::private::IntoLogData for X25519KeyUpdated {
12203            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12204                From::from(self)
12205            }
12206            fn into_log_data(self) -> alloy_sol_types::private::LogData {
12207                From::from(&self)
12208            }
12209        }
12210        #[automatically_derived]
12211        impl From<&X25519KeyUpdated> for alloy_sol_types::private::LogData {
12212            #[inline]
12213            fn from(this: &X25519KeyUpdated) -> alloy_sol_types::private::LogData {
12214                alloy_sol_types::SolEvent::encode_log_data(this)
12215            }
12216        }
12217    };
12218    /**Constructor`.
12219```solidity
12220constructor();
12221```*/
12222    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12223    #[derive(Clone)]
12224    pub struct constructorCall {}
12225    const _: () = {
12226        use alloy::sol_types as alloy_sol_types;
12227        {
12228            #[doc(hidden)]
12229            #[allow(dead_code)]
12230            type UnderlyingSolTuple<'a> = ();
12231            #[doc(hidden)]
12232            type UnderlyingRustTuple<'a> = ();
12233            #[cfg(test)]
12234            #[allow(dead_code, unreachable_patterns)]
12235            fn _type_assertion(
12236                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12237            ) {
12238                match _t {
12239                    alloy_sol_types::private::AssertTypeEq::<
12240                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12241                    >(_) => {}
12242                }
12243            }
12244            #[automatically_derived]
12245            #[doc(hidden)]
12246            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
12247                fn from(value: constructorCall) -> Self {
12248                    ()
12249                }
12250            }
12251            #[automatically_derived]
12252            #[doc(hidden)]
12253            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
12254                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12255                    Self {}
12256                }
12257            }
12258        }
12259        #[automatically_derived]
12260        impl alloy_sol_types::SolConstructor for constructorCall {
12261            type Parameters<'a> = ();
12262            type Token<'a> = <Self::Parameters<
12263                'a,
12264            > as alloy_sol_types::SolType>::Token<'a>;
12265            #[inline]
12266            fn new<'a>(
12267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12268            ) -> Self {
12269                tuple.into()
12270            }
12271            #[inline]
12272            fn tokenize(&self) -> Self::Token<'_> {
12273                ()
12274            }
12275        }
12276    };
12277    #[derive(serde::Serialize, serde::Deserialize)]
12278    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12279    /**Function with signature `CURVE25519_P()` and selector `0xf6777a10`.
12280```solidity
12281function CURVE25519_P() external view returns (uint256);
12282```*/
12283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12284    #[derive(Clone)]
12285    pub struct CURVE25519_PCall;
12286    #[derive(serde::Serialize, serde::Deserialize)]
12287    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12288    ///Container type for the return parameters of the [`CURVE25519_P()`](CURVE25519_PCall) function.
12289    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12290    #[derive(Clone)]
12291    pub struct CURVE25519_PReturn {
12292        #[allow(missing_docs)]
12293        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12294    }
12295    #[allow(
12296        non_camel_case_types,
12297        non_snake_case,
12298        clippy::pub_underscore_fields,
12299        clippy::style
12300    )]
12301    const _: () = {
12302        use alloy::sol_types as alloy_sol_types;
12303        {
12304            #[doc(hidden)]
12305            #[allow(dead_code)]
12306            type UnderlyingSolTuple<'a> = ();
12307            #[doc(hidden)]
12308            type UnderlyingRustTuple<'a> = ();
12309            #[cfg(test)]
12310            #[allow(dead_code, unreachable_patterns)]
12311            fn _type_assertion(
12312                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12313            ) {
12314                match _t {
12315                    alloy_sol_types::private::AssertTypeEq::<
12316                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12317                    >(_) => {}
12318                }
12319            }
12320            #[automatically_derived]
12321            #[doc(hidden)]
12322            impl ::core::convert::From<CURVE25519_PCall> for UnderlyingRustTuple<'_> {
12323                fn from(value: CURVE25519_PCall) -> Self {
12324                    ()
12325                }
12326            }
12327            #[automatically_derived]
12328            #[doc(hidden)]
12329            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CURVE25519_PCall {
12330                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12331                    Self
12332                }
12333            }
12334        }
12335        {
12336            #[doc(hidden)]
12337            #[allow(dead_code)]
12338            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12339            #[doc(hidden)]
12340            type UnderlyingRustTuple<'a> = (
12341                alloy::sol_types::private::primitives::aliases::U256,
12342            );
12343            #[cfg(test)]
12344            #[allow(dead_code, unreachable_patterns)]
12345            fn _type_assertion(
12346                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12347            ) {
12348                match _t {
12349                    alloy_sol_types::private::AssertTypeEq::<
12350                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12351                    >(_) => {}
12352                }
12353            }
12354            #[automatically_derived]
12355            #[doc(hidden)]
12356            impl ::core::convert::From<CURVE25519_PReturn> for UnderlyingRustTuple<'_> {
12357                fn from(value: CURVE25519_PReturn) -> Self {
12358                    (value._0,)
12359                }
12360            }
12361            #[automatically_derived]
12362            #[doc(hidden)]
12363            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CURVE25519_PReturn {
12364                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12365                    Self { _0: tuple.0 }
12366                }
12367            }
12368        }
12369        #[automatically_derived]
12370        impl alloy_sol_types::SolCall for CURVE25519_PCall {
12371            type Parameters<'a> = ();
12372            type Token<'a> = <Self::Parameters<
12373                'a,
12374            > as alloy_sol_types::SolType>::Token<'a>;
12375            type Return = alloy::sol_types::private::primitives::aliases::U256;
12376            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12377            type ReturnToken<'a> = <Self::ReturnTuple<
12378                'a,
12379            > as alloy_sol_types::SolType>::Token<'a>;
12380            const SIGNATURE: &'static str = "CURVE25519_P()";
12381            const SELECTOR: [u8; 4] = [246u8, 119u8, 122u8, 16u8];
12382            #[inline]
12383            fn new<'a>(
12384                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12385            ) -> Self {
12386                tuple.into()
12387            }
12388            #[inline]
12389            fn tokenize(&self) -> Self::Token<'_> {
12390                ()
12391            }
12392            #[inline]
12393            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12394                (
12395                    <alloy::sol_types::sol_data::Uint<
12396                        256,
12397                    > as alloy_sol_types::SolType>::tokenize(ret),
12398                )
12399            }
12400            #[inline]
12401            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12402                <Self::ReturnTuple<
12403                    '_,
12404                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12405                    .map(|r| {
12406                        let r: CURVE25519_PReturn = r.into();
12407                        r._0
12408                    })
12409            }
12410            #[inline]
12411            fn abi_decode_returns_with_config(
12412                data: &[u8],
12413                config: alloy_sol_types::abi::AbiDecoderConfig,
12414            ) -> alloy_sol_types::Result<Self::Return> {
12415                <Self::ReturnTuple<
12416                    '_,
12417                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12418                        data,
12419                        config,
12420                    )
12421                    .map(|r| {
12422                        let r: CURVE25519_PReturn = r.into();
12423                        r._0
12424                    })
12425            }
12426            #[inline]
12427            fn abi_decode_returns_validate(
12428                data: &[u8],
12429            ) -> alloy_sol_types::Result<Self::Return> {
12430                Self::abi_decode_returns_with_config(
12431                    data,
12432                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12433                )
12434            }
12435        }
12436    };
12437    #[derive(serde::Serialize, serde::Deserialize)]
12438    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12439    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
12440```solidity
12441function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
12442```*/
12443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12444    #[derive(Clone)]
12445    pub struct DEFAULT_ADMIN_ROLECall;
12446    #[derive(serde::Serialize, serde::Deserialize)]
12447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12448    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
12449    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12450    #[derive(Clone)]
12451    pub struct DEFAULT_ADMIN_ROLEReturn {
12452        #[allow(missing_docs)]
12453        pub _0: alloy::sol_types::private::FixedBytes<32>,
12454    }
12455    #[allow(
12456        non_camel_case_types,
12457        non_snake_case,
12458        clippy::pub_underscore_fields,
12459        clippy::style
12460    )]
12461    const _: () = {
12462        use alloy::sol_types as alloy_sol_types;
12463        {
12464            #[doc(hidden)]
12465            #[allow(dead_code)]
12466            type UnderlyingSolTuple<'a> = ();
12467            #[doc(hidden)]
12468            type UnderlyingRustTuple<'a> = ();
12469            #[cfg(test)]
12470            #[allow(dead_code, unreachable_patterns)]
12471            fn _type_assertion(
12472                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12473            ) {
12474                match _t {
12475                    alloy_sol_types::private::AssertTypeEq::<
12476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12477                    >(_) => {}
12478                }
12479            }
12480            #[automatically_derived]
12481            #[doc(hidden)]
12482            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
12483            for UnderlyingRustTuple<'_> {
12484                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
12485                    ()
12486                }
12487            }
12488            #[automatically_derived]
12489            #[doc(hidden)]
12490            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12491            for DEFAULT_ADMIN_ROLECall {
12492                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12493                    Self
12494                }
12495            }
12496        }
12497        {
12498            #[doc(hidden)]
12499            #[allow(dead_code)]
12500            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12501            #[doc(hidden)]
12502            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12503            #[cfg(test)]
12504            #[allow(dead_code, unreachable_patterns)]
12505            fn _type_assertion(
12506                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12507            ) {
12508                match _t {
12509                    alloy_sol_types::private::AssertTypeEq::<
12510                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12511                    >(_) => {}
12512                }
12513            }
12514            #[automatically_derived]
12515            #[doc(hidden)]
12516            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
12517            for UnderlyingRustTuple<'_> {
12518                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
12519                    (value._0,)
12520                }
12521            }
12522            #[automatically_derived]
12523            #[doc(hidden)]
12524            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12525            for DEFAULT_ADMIN_ROLEReturn {
12526                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12527                    Self { _0: tuple.0 }
12528                }
12529            }
12530        }
12531        #[automatically_derived]
12532        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
12533            type Parameters<'a> = ();
12534            type Token<'a> = <Self::Parameters<
12535                'a,
12536            > as alloy_sol_types::SolType>::Token<'a>;
12537            type Return = alloy::sol_types::private::FixedBytes<32>;
12538            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12539            type ReturnToken<'a> = <Self::ReturnTuple<
12540                'a,
12541            > as alloy_sol_types::SolType>::Token<'a>;
12542            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
12543            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
12544            #[inline]
12545            fn new<'a>(
12546                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12547            ) -> Self {
12548                tuple.into()
12549            }
12550            #[inline]
12551            fn tokenize(&self) -> Self::Token<'_> {
12552                ()
12553            }
12554            #[inline]
12555            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12556                (
12557                    <alloy::sol_types::sol_data::FixedBytes<
12558                        32,
12559                    > as alloy_sol_types::SolType>::tokenize(ret),
12560                )
12561            }
12562            #[inline]
12563            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12564                <Self::ReturnTuple<
12565                    '_,
12566                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12567                    .map(|r| {
12568                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
12569                        r._0
12570                    })
12571            }
12572            #[inline]
12573            fn abi_decode_returns_with_config(
12574                data: &[u8],
12575                config: alloy_sol_types::abi::AbiDecoderConfig,
12576            ) -> alloy_sol_types::Result<Self::Return> {
12577                <Self::ReturnTuple<
12578                    '_,
12579                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12580                        data,
12581                        config,
12582                    )
12583                    .map(|r| {
12584                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
12585                        r._0
12586                    })
12587            }
12588            #[inline]
12589            fn abi_decode_returns_validate(
12590                data: &[u8],
12591            ) -> alloy_sol_types::Result<Self::Return> {
12592                Self::abi_decode_returns_with_config(
12593                    data,
12594                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12595                )
12596            }
12597        }
12598    };
12599    #[derive(serde::Serialize, serde::Deserialize)]
12600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12601    /**Function with signature `MAX_COMMISSION_BPS()` and selector `0xe62977f8`.
12602```solidity
12603function MAX_COMMISSION_BPS() external view returns (uint16);
12604```*/
12605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12606    #[derive(Clone)]
12607    pub struct MAX_COMMISSION_BPSCall;
12608    #[derive(serde::Serialize, serde::Deserialize)]
12609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12610    ///Container type for the return parameters of the [`MAX_COMMISSION_BPS()`](MAX_COMMISSION_BPSCall) function.
12611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12612    #[derive(Clone)]
12613    pub struct MAX_COMMISSION_BPSReturn {
12614        #[allow(missing_docs)]
12615        pub _0: u16,
12616    }
12617    #[allow(
12618        non_camel_case_types,
12619        non_snake_case,
12620        clippy::pub_underscore_fields,
12621        clippy::style
12622    )]
12623    const _: () = {
12624        use alloy::sol_types as alloy_sol_types;
12625        {
12626            #[doc(hidden)]
12627            #[allow(dead_code)]
12628            type UnderlyingSolTuple<'a> = ();
12629            #[doc(hidden)]
12630            type UnderlyingRustTuple<'a> = ();
12631            #[cfg(test)]
12632            #[allow(dead_code, unreachable_patterns)]
12633            fn _type_assertion(
12634                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12635            ) {
12636                match _t {
12637                    alloy_sol_types::private::AssertTypeEq::<
12638                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12639                    >(_) => {}
12640                }
12641            }
12642            #[automatically_derived]
12643            #[doc(hidden)]
12644            impl ::core::convert::From<MAX_COMMISSION_BPSCall>
12645            for UnderlyingRustTuple<'_> {
12646                fn from(value: MAX_COMMISSION_BPSCall) -> Self {
12647                    ()
12648                }
12649            }
12650            #[automatically_derived]
12651            #[doc(hidden)]
12652            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12653            for MAX_COMMISSION_BPSCall {
12654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12655                    Self
12656                }
12657            }
12658        }
12659        {
12660            #[doc(hidden)]
12661            #[allow(dead_code)]
12662            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
12663            #[doc(hidden)]
12664            type UnderlyingRustTuple<'a> = (u16,);
12665            #[cfg(test)]
12666            #[allow(dead_code, unreachable_patterns)]
12667            fn _type_assertion(
12668                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12669            ) {
12670                match _t {
12671                    alloy_sol_types::private::AssertTypeEq::<
12672                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12673                    >(_) => {}
12674                }
12675            }
12676            #[automatically_derived]
12677            #[doc(hidden)]
12678            impl ::core::convert::From<MAX_COMMISSION_BPSReturn>
12679            for UnderlyingRustTuple<'_> {
12680                fn from(value: MAX_COMMISSION_BPSReturn) -> Self {
12681                    (value._0,)
12682                }
12683            }
12684            #[automatically_derived]
12685            #[doc(hidden)]
12686            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12687            for MAX_COMMISSION_BPSReturn {
12688                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12689                    Self { _0: tuple.0 }
12690                }
12691            }
12692        }
12693        #[automatically_derived]
12694        impl alloy_sol_types::SolCall for MAX_COMMISSION_BPSCall {
12695            type Parameters<'a> = ();
12696            type Token<'a> = <Self::Parameters<
12697                'a,
12698            > as alloy_sol_types::SolType>::Token<'a>;
12699            type Return = u16;
12700            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
12701            type ReturnToken<'a> = <Self::ReturnTuple<
12702                'a,
12703            > as alloy_sol_types::SolType>::Token<'a>;
12704            const SIGNATURE: &'static str = "MAX_COMMISSION_BPS()";
12705            const SELECTOR: [u8; 4] = [230u8, 41u8, 119u8, 248u8];
12706            #[inline]
12707            fn new<'a>(
12708                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12709            ) -> Self {
12710                tuple.into()
12711            }
12712            #[inline]
12713            fn tokenize(&self) -> Self::Token<'_> {
12714                ()
12715            }
12716            #[inline]
12717            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12718                (
12719                    <alloy::sol_types::sol_data::Uint<
12720                        16,
12721                    > as alloy_sol_types::SolType>::tokenize(ret),
12722                )
12723            }
12724            #[inline]
12725            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12726                <Self::ReturnTuple<
12727                    '_,
12728                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12729                    .map(|r| {
12730                        let r: MAX_COMMISSION_BPSReturn = r.into();
12731                        r._0
12732                    })
12733            }
12734            #[inline]
12735            fn abi_decode_returns_with_config(
12736                data: &[u8],
12737                config: alloy_sol_types::abi::AbiDecoderConfig,
12738            ) -> alloy_sol_types::Result<Self::Return> {
12739                <Self::ReturnTuple<
12740                    '_,
12741                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12742                        data,
12743                        config,
12744                    )
12745                    .map(|r| {
12746                        let r: MAX_COMMISSION_BPSReturn = r.into();
12747                        r._0
12748                    })
12749            }
12750            #[inline]
12751            fn abi_decode_returns_validate(
12752                data: &[u8],
12753            ) -> alloy_sol_types::Result<Self::Return> {
12754                Self::abi_decode_returns_with_config(
12755                    data,
12756                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12757                )
12758            }
12759        }
12760    };
12761    #[derive(serde::Serialize, serde::Deserialize)]
12762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12763    /**Function with signature `MAX_EXIT_ESCROW_PERIOD()` and selector `0xe4d1fb94`.
12764```solidity
12765function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
12766```*/
12767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12768    #[derive(Clone)]
12769    pub struct MAX_EXIT_ESCROW_PERIODCall;
12770    #[derive(serde::Serialize, serde::Deserialize)]
12771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12772    ///Container type for the return parameters of the [`MAX_EXIT_ESCROW_PERIOD()`](MAX_EXIT_ESCROW_PERIODCall) function.
12773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12774    #[derive(Clone)]
12775    pub struct MAX_EXIT_ESCROW_PERIODReturn {
12776        #[allow(missing_docs)]
12777        pub _0: u64,
12778    }
12779    #[allow(
12780        non_camel_case_types,
12781        non_snake_case,
12782        clippy::pub_underscore_fields,
12783        clippy::style
12784    )]
12785    const _: () = {
12786        use alloy::sol_types as alloy_sol_types;
12787        {
12788            #[doc(hidden)]
12789            #[allow(dead_code)]
12790            type UnderlyingSolTuple<'a> = ();
12791            #[doc(hidden)]
12792            type UnderlyingRustTuple<'a> = ();
12793            #[cfg(test)]
12794            #[allow(dead_code, unreachable_patterns)]
12795            fn _type_assertion(
12796                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12797            ) {
12798                match _t {
12799                    alloy_sol_types::private::AssertTypeEq::<
12800                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12801                    >(_) => {}
12802                }
12803            }
12804            #[automatically_derived]
12805            #[doc(hidden)]
12806            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODCall>
12807            for UnderlyingRustTuple<'_> {
12808                fn from(value: MAX_EXIT_ESCROW_PERIODCall) -> Self {
12809                    ()
12810                }
12811            }
12812            #[automatically_derived]
12813            #[doc(hidden)]
12814            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12815            for MAX_EXIT_ESCROW_PERIODCall {
12816                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12817                    Self
12818                }
12819            }
12820        }
12821        {
12822            #[doc(hidden)]
12823            #[allow(dead_code)]
12824            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12825            #[doc(hidden)]
12826            type UnderlyingRustTuple<'a> = (u64,);
12827            #[cfg(test)]
12828            #[allow(dead_code, unreachable_patterns)]
12829            fn _type_assertion(
12830                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12831            ) {
12832                match _t {
12833                    alloy_sol_types::private::AssertTypeEq::<
12834                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12835                    >(_) => {}
12836                }
12837            }
12838            #[automatically_derived]
12839            #[doc(hidden)]
12840            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODReturn>
12841            for UnderlyingRustTuple<'_> {
12842                fn from(value: MAX_EXIT_ESCROW_PERIODReturn) -> Self {
12843                    (value._0,)
12844                }
12845            }
12846            #[automatically_derived]
12847            #[doc(hidden)]
12848            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12849            for MAX_EXIT_ESCROW_PERIODReturn {
12850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12851                    Self { _0: tuple.0 }
12852                }
12853            }
12854        }
12855        #[automatically_derived]
12856        impl alloy_sol_types::SolCall for MAX_EXIT_ESCROW_PERIODCall {
12857            type Parameters<'a> = ();
12858            type Token<'a> = <Self::Parameters<
12859                'a,
12860            > as alloy_sol_types::SolType>::Token<'a>;
12861            type Return = u64;
12862            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12863            type ReturnToken<'a> = <Self::ReturnTuple<
12864                'a,
12865            > as alloy_sol_types::SolType>::Token<'a>;
12866            const SIGNATURE: &'static str = "MAX_EXIT_ESCROW_PERIOD()";
12867            const SELECTOR: [u8; 4] = [228u8, 209u8, 251u8, 148u8];
12868            #[inline]
12869            fn new<'a>(
12870                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12871            ) -> Self {
12872                tuple.into()
12873            }
12874            #[inline]
12875            fn tokenize(&self) -> Self::Token<'_> {
12876                ()
12877            }
12878            #[inline]
12879            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12880                (
12881                    <alloy::sol_types::sol_data::Uint<
12882                        64,
12883                    > as alloy_sol_types::SolType>::tokenize(ret),
12884                )
12885            }
12886            #[inline]
12887            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12888                <Self::ReturnTuple<
12889                    '_,
12890                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12891                    .map(|r| {
12892                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
12893                        r._0
12894                    })
12895            }
12896            #[inline]
12897            fn abi_decode_returns_with_config(
12898                data: &[u8],
12899                config: alloy_sol_types::abi::AbiDecoderConfig,
12900            ) -> alloy_sol_types::Result<Self::Return> {
12901                <Self::ReturnTuple<
12902                    '_,
12903                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12904                        data,
12905                        config,
12906                    )
12907                    .map(|r| {
12908                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
12909                        r._0
12910                    })
12911            }
12912            #[inline]
12913            fn abi_decode_returns_validate(
12914                data: &[u8],
12915            ) -> alloy_sol_types::Result<Self::Return> {
12916                Self::abi_decode_returns_with_config(
12917                    data,
12918                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12919                )
12920            }
12921        }
12922    };
12923    #[derive(serde::Serialize, serde::Deserialize)]
12924    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12925    /**Function with signature `MAX_METADATA_URI_LENGTH()` and selector `0x2fe28759`.
12926```solidity
12927function MAX_METADATA_URI_LENGTH() external view returns (uint256);
12928```*/
12929    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12930    #[derive(Clone)]
12931    pub struct MAX_METADATA_URI_LENGTHCall;
12932    #[derive(serde::Serialize, serde::Deserialize)]
12933    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12934    ///Container type for the return parameters of the [`MAX_METADATA_URI_LENGTH()`](MAX_METADATA_URI_LENGTHCall) function.
12935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12936    #[derive(Clone)]
12937    pub struct MAX_METADATA_URI_LENGTHReturn {
12938        #[allow(missing_docs)]
12939        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12940    }
12941    #[allow(
12942        non_camel_case_types,
12943        non_snake_case,
12944        clippy::pub_underscore_fields,
12945        clippy::style
12946    )]
12947    const _: () = {
12948        use alloy::sol_types as alloy_sol_types;
12949        {
12950            #[doc(hidden)]
12951            #[allow(dead_code)]
12952            type UnderlyingSolTuple<'a> = ();
12953            #[doc(hidden)]
12954            type UnderlyingRustTuple<'a> = ();
12955            #[cfg(test)]
12956            #[allow(dead_code, unreachable_patterns)]
12957            fn _type_assertion(
12958                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12959            ) {
12960                match _t {
12961                    alloy_sol_types::private::AssertTypeEq::<
12962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12963                    >(_) => {}
12964                }
12965            }
12966            #[automatically_derived]
12967            #[doc(hidden)]
12968            impl ::core::convert::From<MAX_METADATA_URI_LENGTHCall>
12969            for UnderlyingRustTuple<'_> {
12970                fn from(value: MAX_METADATA_URI_LENGTHCall) -> Self {
12971                    ()
12972                }
12973            }
12974            #[automatically_derived]
12975            #[doc(hidden)]
12976            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12977            for MAX_METADATA_URI_LENGTHCall {
12978                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12979                    Self
12980                }
12981            }
12982        }
12983        {
12984            #[doc(hidden)]
12985            #[allow(dead_code)]
12986            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12987            #[doc(hidden)]
12988            type UnderlyingRustTuple<'a> = (
12989                alloy::sol_types::private::primitives::aliases::U256,
12990            );
12991            #[cfg(test)]
12992            #[allow(dead_code, unreachable_patterns)]
12993            fn _type_assertion(
12994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12995            ) {
12996                match _t {
12997                    alloy_sol_types::private::AssertTypeEq::<
12998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12999                    >(_) => {}
13000                }
13001            }
13002            #[automatically_derived]
13003            #[doc(hidden)]
13004            impl ::core::convert::From<MAX_METADATA_URI_LENGTHReturn>
13005            for UnderlyingRustTuple<'_> {
13006                fn from(value: MAX_METADATA_URI_LENGTHReturn) -> Self {
13007                    (value._0,)
13008                }
13009            }
13010            #[automatically_derived]
13011            #[doc(hidden)]
13012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13013            for MAX_METADATA_URI_LENGTHReturn {
13014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13015                    Self { _0: tuple.0 }
13016                }
13017            }
13018        }
13019        #[automatically_derived]
13020        impl alloy_sol_types::SolCall for MAX_METADATA_URI_LENGTHCall {
13021            type Parameters<'a> = ();
13022            type Token<'a> = <Self::Parameters<
13023                'a,
13024            > as alloy_sol_types::SolType>::Token<'a>;
13025            type Return = alloy::sol_types::private::primitives::aliases::U256;
13026            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13027            type ReturnToken<'a> = <Self::ReturnTuple<
13028                'a,
13029            > as alloy_sol_types::SolType>::Token<'a>;
13030            const SIGNATURE: &'static str = "MAX_METADATA_URI_LENGTH()";
13031            const SELECTOR: [u8; 4] = [47u8, 226u8, 135u8, 89u8];
13032            #[inline]
13033            fn new<'a>(
13034                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13035            ) -> Self {
13036                tuple.into()
13037            }
13038            #[inline]
13039            fn tokenize(&self) -> Self::Token<'_> {
13040                ()
13041            }
13042            #[inline]
13043            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13044                (
13045                    <alloy::sol_types::sol_data::Uint<
13046                        256,
13047                    > as alloy_sol_types::SolType>::tokenize(ret),
13048                )
13049            }
13050            #[inline]
13051            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13052                <Self::ReturnTuple<
13053                    '_,
13054                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13055                    .map(|r| {
13056                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
13057                        r._0
13058                    })
13059            }
13060            #[inline]
13061            fn abi_decode_returns_with_config(
13062                data: &[u8],
13063                config: alloy_sol_types::abi::AbiDecoderConfig,
13064            ) -> alloy_sol_types::Result<Self::Return> {
13065                <Self::ReturnTuple<
13066                    '_,
13067                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13068                        data,
13069                        config,
13070                    )
13071                    .map(|r| {
13072                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
13073                        r._0
13074                    })
13075            }
13076            #[inline]
13077            fn abi_decode_returns_validate(
13078                data: &[u8],
13079            ) -> alloy_sol_types::Result<Self::Return> {
13080                Self::abi_decode_returns_with_config(
13081                    data,
13082                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13083                )
13084            }
13085        }
13086    };
13087    #[derive(serde::Serialize, serde::Deserialize)]
13088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13089    /**Function with signature `MAX_P2P_ADDR_LENGTH()` and selector `0x617066e5`.
13090```solidity
13091function MAX_P2P_ADDR_LENGTH() external view returns (uint256);
13092```*/
13093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13094    #[derive(Clone)]
13095    pub struct MAX_P2P_ADDR_LENGTHCall;
13096    #[derive(serde::Serialize, serde::Deserialize)]
13097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13098    ///Container type for the return parameters of the [`MAX_P2P_ADDR_LENGTH()`](MAX_P2P_ADDR_LENGTHCall) function.
13099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13100    #[derive(Clone)]
13101    pub struct MAX_P2P_ADDR_LENGTHReturn {
13102        #[allow(missing_docs)]
13103        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13104    }
13105    #[allow(
13106        non_camel_case_types,
13107        non_snake_case,
13108        clippy::pub_underscore_fields,
13109        clippy::style
13110    )]
13111    const _: () = {
13112        use alloy::sol_types as alloy_sol_types;
13113        {
13114            #[doc(hidden)]
13115            #[allow(dead_code)]
13116            type UnderlyingSolTuple<'a> = ();
13117            #[doc(hidden)]
13118            type UnderlyingRustTuple<'a> = ();
13119            #[cfg(test)]
13120            #[allow(dead_code, unreachable_patterns)]
13121            fn _type_assertion(
13122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13123            ) {
13124                match _t {
13125                    alloy_sol_types::private::AssertTypeEq::<
13126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13127                    >(_) => {}
13128                }
13129            }
13130            #[automatically_derived]
13131            #[doc(hidden)]
13132            impl ::core::convert::From<MAX_P2P_ADDR_LENGTHCall>
13133            for UnderlyingRustTuple<'_> {
13134                fn from(value: MAX_P2P_ADDR_LENGTHCall) -> Self {
13135                    ()
13136                }
13137            }
13138            #[automatically_derived]
13139            #[doc(hidden)]
13140            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13141            for MAX_P2P_ADDR_LENGTHCall {
13142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13143                    Self
13144                }
13145            }
13146        }
13147        {
13148            #[doc(hidden)]
13149            #[allow(dead_code)]
13150            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13151            #[doc(hidden)]
13152            type UnderlyingRustTuple<'a> = (
13153                alloy::sol_types::private::primitives::aliases::U256,
13154            );
13155            #[cfg(test)]
13156            #[allow(dead_code, unreachable_patterns)]
13157            fn _type_assertion(
13158                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13159            ) {
13160                match _t {
13161                    alloy_sol_types::private::AssertTypeEq::<
13162                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13163                    >(_) => {}
13164                }
13165            }
13166            #[automatically_derived]
13167            #[doc(hidden)]
13168            impl ::core::convert::From<MAX_P2P_ADDR_LENGTHReturn>
13169            for UnderlyingRustTuple<'_> {
13170                fn from(value: MAX_P2P_ADDR_LENGTHReturn) -> Self {
13171                    (value._0,)
13172                }
13173            }
13174            #[automatically_derived]
13175            #[doc(hidden)]
13176            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13177            for MAX_P2P_ADDR_LENGTHReturn {
13178                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13179                    Self { _0: tuple.0 }
13180                }
13181            }
13182        }
13183        #[automatically_derived]
13184        impl alloy_sol_types::SolCall for MAX_P2P_ADDR_LENGTHCall {
13185            type Parameters<'a> = ();
13186            type Token<'a> = <Self::Parameters<
13187                'a,
13188            > as alloy_sol_types::SolType>::Token<'a>;
13189            type Return = alloy::sol_types::private::primitives::aliases::U256;
13190            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13191            type ReturnToken<'a> = <Self::ReturnTuple<
13192                'a,
13193            > as alloy_sol_types::SolType>::Token<'a>;
13194            const SIGNATURE: &'static str = "MAX_P2P_ADDR_LENGTH()";
13195            const SELECTOR: [u8; 4] = [97u8, 112u8, 102u8, 229u8];
13196            #[inline]
13197            fn new<'a>(
13198                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13199            ) -> Self {
13200                tuple.into()
13201            }
13202            #[inline]
13203            fn tokenize(&self) -> Self::Token<'_> {
13204                ()
13205            }
13206            #[inline]
13207            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13208                (
13209                    <alloy::sol_types::sol_data::Uint<
13210                        256,
13211                    > as alloy_sol_types::SolType>::tokenize(ret),
13212                )
13213            }
13214            #[inline]
13215            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13216                <Self::ReturnTuple<
13217                    '_,
13218                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13219                    .map(|r| {
13220                        let r: MAX_P2P_ADDR_LENGTHReturn = r.into();
13221                        r._0
13222                    })
13223            }
13224            #[inline]
13225            fn abi_decode_returns_with_config(
13226                data: &[u8],
13227                config: alloy_sol_types::abi::AbiDecoderConfig,
13228            ) -> alloy_sol_types::Result<Self::Return> {
13229                <Self::ReturnTuple<
13230                    '_,
13231                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13232                        data,
13233                        config,
13234                    )
13235                    .map(|r| {
13236                        let r: MAX_P2P_ADDR_LENGTHReturn = r.into();
13237                        r._0
13238                    })
13239            }
13240            #[inline]
13241            fn abi_decode_returns_validate(
13242                data: &[u8],
13243            ) -> alloy_sol_types::Result<Self::Return> {
13244                Self::abi_decode_returns_with_config(
13245                    data,
13246                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13247                )
13248            }
13249        }
13250    };
13251    #[derive(serde::Serialize, serde::Deserialize)]
13252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13253    /**Function with signature `MIN_EXIT_ESCROW_PERIOD()` and selector `0x6ad28e9f`.
13254```solidity
13255function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
13256```*/
13257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13258    #[derive(Clone)]
13259    pub struct MIN_EXIT_ESCROW_PERIODCall;
13260    #[derive(serde::Serialize, serde::Deserialize)]
13261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13262    ///Container type for the return parameters of the [`MIN_EXIT_ESCROW_PERIOD()`](MIN_EXIT_ESCROW_PERIODCall) function.
13263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13264    #[derive(Clone)]
13265    pub struct MIN_EXIT_ESCROW_PERIODReturn {
13266        #[allow(missing_docs)]
13267        pub _0: u64,
13268    }
13269    #[allow(
13270        non_camel_case_types,
13271        non_snake_case,
13272        clippy::pub_underscore_fields,
13273        clippy::style
13274    )]
13275    const _: () = {
13276        use alloy::sol_types as alloy_sol_types;
13277        {
13278            #[doc(hidden)]
13279            #[allow(dead_code)]
13280            type UnderlyingSolTuple<'a> = ();
13281            #[doc(hidden)]
13282            type UnderlyingRustTuple<'a> = ();
13283            #[cfg(test)]
13284            #[allow(dead_code, unreachable_patterns)]
13285            fn _type_assertion(
13286                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13287            ) {
13288                match _t {
13289                    alloy_sol_types::private::AssertTypeEq::<
13290                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13291                    >(_) => {}
13292                }
13293            }
13294            #[automatically_derived]
13295            #[doc(hidden)]
13296            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODCall>
13297            for UnderlyingRustTuple<'_> {
13298                fn from(value: MIN_EXIT_ESCROW_PERIODCall) -> Self {
13299                    ()
13300                }
13301            }
13302            #[automatically_derived]
13303            #[doc(hidden)]
13304            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13305            for MIN_EXIT_ESCROW_PERIODCall {
13306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13307                    Self
13308                }
13309            }
13310        }
13311        {
13312            #[doc(hidden)]
13313            #[allow(dead_code)]
13314            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13315            #[doc(hidden)]
13316            type UnderlyingRustTuple<'a> = (u64,);
13317            #[cfg(test)]
13318            #[allow(dead_code, unreachable_patterns)]
13319            fn _type_assertion(
13320                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13321            ) {
13322                match _t {
13323                    alloy_sol_types::private::AssertTypeEq::<
13324                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13325                    >(_) => {}
13326                }
13327            }
13328            #[automatically_derived]
13329            #[doc(hidden)]
13330            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODReturn>
13331            for UnderlyingRustTuple<'_> {
13332                fn from(value: MIN_EXIT_ESCROW_PERIODReturn) -> Self {
13333                    (value._0,)
13334                }
13335            }
13336            #[automatically_derived]
13337            #[doc(hidden)]
13338            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13339            for MIN_EXIT_ESCROW_PERIODReturn {
13340                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13341                    Self { _0: tuple.0 }
13342                }
13343            }
13344        }
13345        #[automatically_derived]
13346        impl alloy_sol_types::SolCall for MIN_EXIT_ESCROW_PERIODCall {
13347            type Parameters<'a> = ();
13348            type Token<'a> = <Self::Parameters<
13349                'a,
13350            > as alloy_sol_types::SolType>::Token<'a>;
13351            type Return = u64;
13352            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13353            type ReturnToken<'a> = <Self::ReturnTuple<
13354                'a,
13355            > as alloy_sol_types::SolType>::Token<'a>;
13356            const SIGNATURE: &'static str = "MIN_EXIT_ESCROW_PERIOD()";
13357            const SELECTOR: [u8; 4] = [106u8, 210u8, 142u8, 159u8];
13358            #[inline]
13359            fn new<'a>(
13360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13361            ) -> Self {
13362                tuple.into()
13363            }
13364            #[inline]
13365            fn tokenize(&self) -> Self::Token<'_> {
13366                ()
13367            }
13368            #[inline]
13369            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13370                (
13371                    <alloy::sol_types::sol_data::Uint<
13372                        64,
13373                    > as alloy_sol_types::SolType>::tokenize(ret),
13374                )
13375            }
13376            #[inline]
13377            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13378                <Self::ReturnTuple<
13379                    '_,
13380                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13381                    .map(|r| {
13382                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
13383                        r._0
13384                    })
13385            }
13386            #[inline]
13387            fn abi_decode_returns_with_config(
13388                data: &[u8],
13389                config: alloy_sol_types::abi::AbiDecoderConfig,
13390            ) -> alloy_sol_types::Result<Self::Return> {
13391                <Self::ReturnTuple<
13392                    '_,
13393                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13394                        data,
13395                        config,
13396                    )
13397                    .map(|r| {
13398                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
13399                        r._0
13400                    })
13401            }
13402            #[inline]
13403            fn abi_decode_returns_validate(
13404                data: &[u8],
13405            ) -> alloy_sol_types::Result<Self::Return> {
13406                Self::abi_decode_returns_with_config(
13407                    data,
13408                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13409                )
13410            }
13411        }
13412    };
13413    #[derive(serde::Serialize, serde::Deserialize)]
13414    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13415    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
13416```solidity
13417function PAUSER_ROLE() external view returns (bytes32);
13418```*/
13419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13420    #[derive(Clone)]
13421    pub struct PAUSER_ROLECall;
13422    #[derive(serde::Serialize, serde::Deserialize)]
13423    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13424    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
13425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13426    #[derive(Clone)]
13427    pub struct PAUSER_ROLEReturn {
13428        #[allow(missing_docs)]
13429        pub _0: alloy::sol_types::private::FixedBytes<32>,
13430    }
13431    #[allow(
13432        non_camel_case_types,
13433        non_snake_case,
13434        clippy::pub_underscore_fields,
13435        clippy::style
13436    )]
13437    const _: () = {
13438        use alloy::sol_types as alloy_sol_types;
13439        {
13440            #[doc(hidden)]
13441            #[allow(dead_code)]
13442            type UnderlyingSolTuple<'a> = ();
13443            #[doc(hidden)]
13444            type UnderlyingRustTuple<'a> = ();
13445            #[cfg(test)]
13446            #[allow(dead_code, unreachable_patterns)]
13447            fn _type_assertion(
13448                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13449            ) {
13450                match _t {
13451                    alloy_sol_types::private::AssertTypeEq::<
13452                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13453                    >(_) => {}
13454                }
13455            }
13456            #[automatically_derived]
13457            #[doc(hidden)]
13458            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
13459                fn from(value: PAUSER_ROLECall) -> Self {
13460                    ()
13461                }
13462            }
13463            #[automatically_derived]
13464            #[doc(hidden)]
13465            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
13466                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13467                    Self
13468                }
13469            }
13470        }
13471        {
13472            #[doc(hidden)]
13473            #[allow(dead_code)]
13474            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13475            #[doc(hidden)]
13476            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13477            #[cfg(test)]
13478            #[allow(dead_code, unreachable_patterns)]
13479            fn _type_assertion(
13480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13481            ) {
13482                match _t {
13483                    alloy_sol_types::private::AssertTypeEq::<
13484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13485                    >(_) => {}
13486                }
13487            }
13488            #[automatically_derived]
13489            #[doc(hidden)]
13490            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
13491                fn from(value: PAUSER_ROLEReturn) -> Self {
13492                    (value._0,)
13493                }
13494            }
13495            #[automatically_derived]
13496            #[doc(hidden)]
13497            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
13498                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13499                    Self { _0: tuple.0 }
13500                }
13501            }
13502        }
13503        #[automatically_derived]
13504        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
13505            type Parameters<'a> = ();
13506            type Token<'a> = <Self::Parameters<
13507                'a,
13508            > as alloy_sol_types::SolType>::Token<'a>;
13509            type Return = alloy::sol_types::private::FixedBytes<32>;
13510            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13511            type ReturnToken<'a> = <Self::ReturnTuple<
13512                'a,
13513            > as alloy_sol_types::SolType>::Token<'a>;
13514            const SIGNATURE: &'static str = "PAUSER_ROLE()";
13515            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
13516            #[inline]
13517            fn new<'a>(
13518                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13519            ) -> Self {
13520                tuple.into()
13521            }
13522            #[inline]
13523            fn tokenize(&self) -> Self::Token<'_> {
13524                ()
13525            }
13526            #[inline]
13527            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13528                (
13529                    <alloy::sol_types::sol_data::FixedBytes<
13530                        32,
13531                    > as alloy_sol_types::SolType>::tokenize(ret),
13532                )
13533            }
13534            #[inline]
13535            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13536                <Self::ReturnTuple<
13537                    '_,
13538                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13539                    .map(|r| {
13540                        let r: PAUSER_ROLEReturn = r.into();
13541                        r._0
13542                    })
13543            }
13544            #[inline]
13545            fn abi_decode_returns_with_config(
13546                data: &[u8],
13547                config: alloy_sol_types::abi::AbiDecoderConfig,
13548            ) -> alloy_sol_types::Result<Self::Return> {
13549                <Self::ReturnTuple<
13550                    '_,
13551                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13552                        data,
13553                        config,
13554                    )
13555                    .map(|r| {
13556                        let r: PAUSER_ROLEReturn = r.into();
13557                        r._0
13558                    })
13559            }
13560            #[inline]
13561            fn abi_decode_returns_validate(
13562                data: &[u8],
13563            ) -> alloy_sol_types::Result<Self::Return> {
13564                Self::abi_decode_returns_with_config(
13565                    data,
13566                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13567                )
13568            }
13569        }
13570    };
13571    #[derive(serde::Serialize, serde::Deserialize)]
13572    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13573    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
13574```solidity
13575function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
13576```*/
13577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13578    #[derive(Clone)]
13579    pub struct UPGRADE_INTERFACE_VERSIONCall;
13580    #[derive(serde::Serialize, serde::Deserialize)]
13581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13582    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
13583    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13584    #[derive(Clone)]
13585    pub struct UPGRADE_INTERFACE_VERSIONReturn {
13586        #[allow(missing_docs)]
13587        pub _0: alloy::sol_types::private::String,
13588    }
13589    #[allow(
13590        non_camel_case_types,
13591        non_snake_case,
13592        clippy::pub_underscore_fields,
13593        clippy::style
13594    )]
13595    const _: () = {
13596        use alloy::sol_types as alloy_sol_types;
13597        {
13598            #[doc(hidden)]
13599            #[allow(dead_code)]
13600            type UnderlyingSolTuple<'a> = ();
13601            #[doc(hidden)]
13602            type UnderlyingRustTuple<'a> = ();
13603            #[cfg(test)]
13604            #[allow(dead_code, unreachable_patterns)]
13605            fn _type_assertion(
13606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13607            ) {
13608                match _t {
13609                    alloy_sol_types::private::AssertTypeEq::<
13610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13611                    >(_) => {}
13612                }
13613            }
13614            #[automatically_derived]
13615            #[doc(hidden)]
13616            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
13617            for UnderlyingRustTuple<'_> {
13618                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
13619                    ()
13620                }
13621            }
13622            #[automatically_derived]
13623            #[doc(hidden)]
13624            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13625            for UPGRADE_INTERFACE_VERSIONCall {
13626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13627                    Self
13628                }
13629            }
13630        }
13631        {
13632            #[doc(hidden)]
13633            #[allow(dead_code)]
13634            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
13635            #[doc(hidden)]
13636            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
13637            #[cfg(test)]
13638            #[allow(dead_code, unreachable_patterns)]
13639            fn _type_assertion(
13640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13641            ) {
13642                match _t {
13643                    alloy_sol_types::private::AssertTypeEq::<
13644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13645                    >(_) => {}
13646                }
13647            }
13648            #[automatically_derived]
13649            #[doc(hidden)]
13650            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
13651            for UnderlyingRustTuple<'_> {
13652                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
13653                    (value._0,)
13654                }
13655            }
13656            #[automatically_derived]
13657            #[doc(hidden)]
13658            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13659            for UPGRADE_INTERFACE_VERSIONReturn {
13660                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13661                    Self { _0: tuple.0 }
13662                }
13663            }
13664        }
13665        #[automatically_derived]
13666        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
13667            type Parameters<'a> = ();
13668            type Token<'a> = <Self::Parameters<
13669                'a,
13670            > as alloy_sol_types::SolType>::Token<'a>;
13671            type Return = alloy::sol_types::private::String;
13672            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
13673            type ReturnToken<'a> = <Self::ReturnTuple<
13674                'a,
13675            > as alloy_sol_types::SolType>::Token<'a>;
13676            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
13677            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
13678            #[inline]
13679            fn new<'a>(
13680                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13681            ) -> Self {
13682                tuple.into()
13683            }
13684            #[inline]
13685            fn tokenize(&self) -> Self::Token<'_> {
13686                ()
13687            }
13688            #[inline]
13689            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13690                (
13691                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
13692                        ret,
13693                    ),
13694                )
13695            }
13696            #[inline]
13697            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13698                <Self::ReturnTuple<
13699                    '_,
13700                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13701                    .map(|r| {
13702                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
13703                        r._0
13704                    })
13705            }
13706            #[inline]
13707            fn abi_decode_returns_with_config(
13708                data: &[u8],
13709                config: alloy_sol_types::abi::AbiDecoderConfig,
13710            ) -> alloy_sol_types::Result<Self::Return> {
13711                <Self::ReturnTuple<
13712                    '_,
13713                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13714                        data,
13715                        config,
13716                    )
13717                    .map(|r| {
13718                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
13719                        r._0
13720                    })
13721            }
13722            #[inline]
13723            fn abi_decode_returns_validate(
13724                data: &[u8],
13725            ) -> alloy_sol_types::Result<Self::Return> {
13726                Self::abi_decode_returns_with_config(
13727                    data,
13728                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13729                )
13730            }
13731        }
13732    };
13733    #[derive(serde::Serialize, serde::Deserialize)]
13734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13735    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
13736```solidity
13737function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
13738```*/
13739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13740    #[derive(Clone)]
13741    pub struct _hashBlsKeyCall {
13742        #[allow(missing_docs)]
13743        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13744    }
13745    #[derive(serde::Serialize, serde::Deserialize)]
13746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13747    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
13748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13749    #[derive(Clone)]
13750    pub struct _hashBlsKeyReturn {
13751        #[allow(missing_docs)]
13752        pub _0: alloy::sol_types::private::FixedBytes<32>,
13753    }
13754    #[allow(
13755        non_camel_case_types,
13756        non_snake_case,
13757        clippy::pub_underscore_fields,
13758        clippy::style
13759    )]
13760    const _: () = {
13761        use alloy::sol_types as alloy_sol_types;
13762        {
13763            #[doc(hidden)]
13764            #[allow(dead_code)]
13765            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
13766            #[doc(hidden)]
13767            type UnderlyingRustTuple<'a> = (
13768                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13769            );
13770            #[cfg(test)]
13771            #[allow(dead_code, unreachable_patterns)]
13772            fn _type_assertion(
13773                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13774            ) {
13775                match _t {
13776                    alloy_sol_types::private::AssertTypeEq::<
13777                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13778                    >(_) => {}
13779                }
13780            }
13781            #[automatically_derived]
13782            #[doc(hidden)]
13783            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
13784                fn from(value: _hashBlsKeyCall) -> Self {
13785                    (value.blsVK,)
13786                }
13787            }
13788            #[automatically_derived]
13789            #[doc(hidden)]
13790            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
13791                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13792                    Self { blsVK: tuple.0 }
13793                }
13794            }
13795        }
13796        {
13797            #[doc(hidden)]
13798            #[allow(dead_code)]
13799            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13800            #[doc(hidden)]
13801            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13802            #[cfg(test)]
13803            #[allow(dead_code, unreachable_patterns)]
13804            fn _type_assertion(
13805                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13806            ) {
13807                match _t {
13808                    alloy_sol_types::private::AssertTypeEq::<
13809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13810                    >(_) => {}
13811                }
13812            }
13813            #[automatically_derived]
13814            #[doc(hidden)]
13815            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
13816                fn from(value: _hashBlsKeyReturn) -> Self {
13817                    (value._0,)
13818                }
13819            }
13820            #[automatically_derived]
13821            #[doc(hidden)]
13822            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
13823                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13824                    Self { _0: tuple.0 }
13825                }
13826            }
13827        }
13828        #[automatically_derived]
13829        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
13830            type Parameters<'a> = (BN254::G2Point,);
13831            type Token<'a> = <Self::Parameters<
13832                'a,
13833            > as alloy_sol_types::SolType>::Token<'a>;
13834            type Return = alloy::sol_types::private::FixedBytes<32>;
13835            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13836            type ReturnToken<'a> = <Self::ReturnTuple<
13837                'a,
13838            > as alloy_sol_types::SolType>::Token<'a>;
13839            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
13840            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
13841            #[inline]
13842            fn new<'a>(
13843                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13844            ) -> Self {
13845                tuple.into()
13846            }
13847            #[inline]
13848            fn tokenize(&self) -> Self::Token<'_> {
13849                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
13850            }
13851            #[inline]
13852            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13853                (
13854                    <alloy::sol_types::sol_data::FixedBytes<
13855                        32,
13856                    > as alloy_sol_types::SolType>::tokenize(ret),
13857                )
13858            }
13859            #[inline]
13860            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13861                <Self::ReturnTuple<
13862                    '_,
13863                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13864                    .map(|r| {
13865                        let r: _hashBlsKeyReturn = r.into();
13866                        r._0
13867                    })
13868            }
13869            #[inline]
13870            fn abi_decode_returns_with_config(
13871                data: &[u8],
13872                config: alloy_sol_types::abi::AbiDecoderConfig,
13873            ) -> alloy_sol_types::Result<Self::Return> {
13874                <Self::ReturnTuple<
13875                    '_,
13876                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13877                        data,
13878                        config,
13879                    )
13880                    .map(|r| {
13881                        let r: _hashBlsKeyReturn = r.into();
13882                        r._0
13883                    })
13884            }
13885            #[inline]
13886            fn abi_decode_returns_validate(
13887                data: &[u8],
13888            ) -> alloy_sol_types::Result<Self::Return> {
13889                Self::abi_decode_returns_with_config(
13890                    data,
13891                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13892                )
13893            }
13894        }
13895    };
13896    #[derive(serde::Serialize, serde::Deserialize)]
13897    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13898    /**Function with signature `activeStake()` and selector `0xbd49c35f`.
13899```solidity
13900function activeStake() external view returns (uint256);
13901```*/
13902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13903    #[derive(Clone)]
13904    pub struct activeStakeCall;
13905    #[derive(serde::Serialize, serde::Deserialize)]
13906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13907    ///Container type for the return parameters of the [`activeStake()`](activeStakeCall) function.
13908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13909    #[derive(Clone)]
13910    pub struct activeStakeReturn {
13911        #[allow(missing_docs)]
13912        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13913    }
13914    #[allow(
13915        non_camel_case_types,
13916        non_snake_case,
13917        clippy::pub_underscore_fields,
13918        clippy::style
13919    )]
13920    const _: () = {
13921        use alloy::sol_types as alloy_sol_types;
13922        {
13923            #[doc(hidden)]
13924            #[allow(dead_code)]
13925            type UnderlyingSolTuple<'a> = ();
13926            #[doc(hidden)]
13927            type UnderlyingRustTuple<'a> = ();
13928            #[cfg(test)]
13929            #[allow(dead_code, unreachable_patterns)]
13930            fn _type_assertion(
13931                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13932            ) {
13933                match _t {
13934                    alloy_sol_types::private::AssertTypeEq::<
13935                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13936                    >(_) => {}
13937                }
13938            }
13939            #[automatically_derived]
13940            #[doc(hidden)]
13941            impl ::core::convert::From<activeStakeCall> for UnderlyingRustTuple<'_> {
13942                fn from(value: activeStakeCall) -> Self {
13943                    ()
13944                }
13945            }
13946            #[automatically_derived]
13947            #[doc(hidden)]
13948            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeCall {
13949                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13950                    Self
13951                }
13952            }
13953        }
13954        {
13955            #[doc(hidden)]
13956            #[allow(dead_code)]
13957            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13958            #[doc(hidden)]
13959            type UnderlyingRustTuple<'a> = (
13960                alloy::sol_types::private::primitives::aliases::U256,
13961            );
13962            #[cfg(test)]
13963            #[allow(dead_code, unreachable_patterns)]
13964            fn _type_assertion(
13965                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13966            ) {
13967                match _t {
13968                    alloy_sol_types::private::AssertTypeEq::<
13969                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13970                    >(_) => {}
13971                }
13972            }
13973            #[automatically_derived]
13974            #[doc(hidden)]
13975            impl ::core::convert::From<activeStakeReturn> for UnderlyingRustTuple<'_> {
13976                fn from(value: activeStakeReturn) -> Self {
13977                    (value._0,)
13978                }
13979            }
13980            #[automatically_derived]
13981            #[doc(hidden)]
13982            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeReturn {
13983                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13984                    Self { _0: tuple.0 }
13985                }
13986            }
13987        }
13988        #[automatically_derived]
13989        impl alloy_sol_types::SolCall for activeStakeCall {
13990            type Parameters<'a> = ();
13991            type Token<'a> = <Self::Parameters<
13992                'a,
13993            > as alloy_sol_types::SolType>::Token<'a>;
13994            type Return = alloy::sol_types::private::primitives::aliases::U256;
13995            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13996            type ReturnToken<'a> = <Self::ReturnTuple<
13997                'a,
13998            > as alloy_sol_types::SolType>::Token<'a>;
13999            const SIGNATURE: &'static str = "activeStake()";
14000            const SELECTOR: [u8; 4] = [189u8, 73u8, 195u8, 95u8];
14001            #[inline]
14002            fn new<'a>(
14003                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14004            ) -> Self {
14005                tuple.into()
14006            }
14007            #[inline]
14008            fn tokenize(&self) -> Self::Token<'_> {
14009                ()
14010            }
14011            #[inline]
14012            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14013                (
14014                    <alloy::sol_types::sol_data::Uint<
14015                        256,
14016                    > as alloy_sol_types::SolType>::tokenize(ret),
14017                )
14018            }
14019            #[inline]
14020            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14021                <Self::ReturnTuple<
14022                    '_,
14023                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14024                    .map(|r| {
14025                        let r: activeStakeReturn = r.into();
14026                        r._0
14027                    })
14028            }
14029            #[inline]
14030            fn abi_decode_returns_with_config(
14031                data: &[u8],
14032                config: alloy_sol_types::abi::AbiDecoderConfig,
14033            ) -> alloy_sol_types::Result<Self::Return> {
14034                <Self::ReturnTuple<
14035                    '_,
14036                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14037                        data,
14038                        config,
14039                    )
14040                    .map(|r| {
14041                        let r: activeStakeReturn = r.into();
14042                        r._0
14043                    })
14044            }
14045            #[inline]
14046            fn abi_decode_returns_validate(
14047                data: &[u8],
14048            ) -> alloy_sol_types::Result<Self::Return> {
14049                Self::abi_decode_returns_with_config(
14050                    data,
14051                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14052                )
14053            }
14054        }
14055    };
14056    #[derive(serde::Serialize, serde::Deserialize)]
14057    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14058    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
14059```solidity
14060function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
14061```*/
14062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14063    #[derive(Clone)]
14064    pub struct blsKeysCall {
14065        #[allow(missing_docs)]
14066        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
14067    }
14068    #[derive(serde::Serialize, serde::Deserialize)]
14069    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14070    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
14071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14072    #[derive(Clone)]
14073    pub struct blsKeysReturn {
14074        #[allow(missing_docs)]
14075        pub used: bool,
14076    }
14077    #[allow(
14078        non_camel_case_types,
14079        non_snake_case,
14080        clippy::pub_underscore_fields,
14081        clippy::style
14082    )]
14083    const _: () = {
14084        use alloy::sol_types as alloy_sol_types;
14085        {
14086            #[doc(hidden)]
14087            #[allow(dead_code)]
14088            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14089            #[doc(hidden)]
14090            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
14091            #[cfg(test)]
14092            #[allow(dead_code, unreachable_patterns)]
14093            fn _type_assertion(
14094                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14095            ) {
14096                match _t {
14097                    alloy_sol_types::private::AssertTypeEq::<
14098                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14099                    >(_) => {}
14100                }
14101            }
14102            #[automatically_derived]
14103            #[doc(hidden)]
14104            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
14105                fn from(value: blsKeysCall) -> Self {
14106                    (value.blsKeyHash,)
14107                }
14108            }
14109            #[automatically_derived]
14110            #[doc(hidden)]
14111            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
14112                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14113                    Self { blsKeyHash: tuple.0 }
14114                }
14115            }
14116        }
14117        {
14118            #[doc(hidden)]
14119            #[allow(dead_code)]
14120            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14121            #[doc(hidden)]
14122            type UnderlyingRustTuple<'a> = (bool,);
14123            #[cfg(test)]
14124            #[allow(dead_code, unreachable_patterns)]
14125            fn _type_assertion(
14126                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14127            ) {
14128                match _t {
14129                    alloy_sol_types::private::AssertTypeEq::<
14130                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14131                    >(_) => {}
14132                }
14133            }
14134            #[automatically_derived]
14135            #[doc(hidden)]
14136            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
14137                fn from(value: blsKeysReturn) -> Self {
14138                    (value.used,)
14139                }
14140            }
14141            #[automatically_derived]
14142            #[doc(hidden)]
14143            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
14144                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14145                    Self { used: tuple.0 }
14146                }
14147            }
14148        }
14149        #[automatically_derived]
14150        impl alloy_sol_types::SolCall for blsKeysCall {
14151            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14152            type Token<'a> = <Self::Parameters<
14153                'a,
14154            > as alloy_sol_types::SolType>::Token<'a>;
14155            type Return = bool;
14156            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14157            type ReturnToken<'a> = <Self::ReturnTuple<
14158                'a,
14159            > as alloy_sol_types::SolType>::Token<'a>;
14160            const SIGNATURE: &'static str = "blsKeys(bytes32)";
14161            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
14162            #[inline]
14163            fn new<'a>(
14164                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14165            ) -> Self {
14166                tuple.into()
14167            }
14168            #[inline]
14169            fn tokenize(&self) -> Self::Token<'_> {
14170                (
14171                    <alloy::sol_types::sol_data::FixedBytes<
14172                        32,
14173                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
14174                )
14175            }
14176            #[inline]
14177            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14178                (
14179                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
14180                        ret,
14181                    ),
14182                )
14183            }
14184            #[inline]
14185            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14186                <Self::ReturnTuple<
14187                    '_,
14188                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14189                    .map(|r| {
14190                        let r: blsKeysReturn = r.into();
14191                        r.used
14192                    })
14193            }
14194            #[inline]
14195            fn abi_decode_returns_with_config(
14196                data: &[u8],
14197                config: alloy_sol_types::abi::AbiDecoderConfig,
14198            ) -> alloy_sol_types::Result<Self::Return> {
14199                <Self::ReturnTuple<
14200                    '_,
14201                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14202                        data,
14203                        config,
14204                    )
14205                    .map(|r| {
14206                        let r: blsKeysReturn = r.into();
14207                        r.used
14208                    })
14209            }
14210            #[inline]
14211            fn abi_decode_returns_validate(
14212                data: &[u8],
14213            ) -> alloy_sol_types::Result<Self::Return> {
14214                Self::abi_decode_returns_with_config(
14215                    data,
14216                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14217                )
14218            }
14219        }
14220    };
14221    #[derive(serde::Serialize, serde::Deserialize)]
14222    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14223    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
14224```solidity
14225function claimValidatorExit(address validator) external;
14226```*/
14227    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14228    #[derive(Clone)]
14229    pub struct claimValidatorExitCall {
14230        #[allow(missing_docs)]
14231        pub validator: alloy::sol_types::private::Address,
14232    }
14233    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
14234    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14235    #[derive(Clone)]
14236    pub struct claimValidatorExitReturn {}
14237    #[allow(
14238        non_camel_case_types,
14239        non_snake_case,
14240        clippy::pub_underscore_fields,
14241        clippy::style
14242    )]
14243    const _: () = {
14244        use alloy::sol_types as alloy_sol_types;
14245        {
14246            #[doc(hidden)]
14247            #[allow(dead_code)]
14248            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14249            #[doc(hidden)]
14250            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14251            #[cfg(test)]
14252            #[allow(dead_code, unreachable_patterns)]
14253            fn _type_assertion(
14254                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14255            ) {
14256                match _t {
14257                    alloy_sol_types::private::AssertTypeEq::<
14258                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14259                    >(_) => {}
14260                }
14261            }
14262            #[automatically_derived]
14263            #[doc(hidden)]
14264            impl ::core::convert::From<claimValidatorExitCall>
14265            for UnderlyingRustTuple<'_> {
14266                fn from(value: claimValidatorExitCall) -> Self {
14267                    (value.validator,)
14268                }
14269            }
14270            #[automatically_derived]
14271            #[doc(hidden)]
14272            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14273            for claimValidatorExitCall {
14274                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14275                    Self { validator: tuple.0 }
14276                }
14277            }
14278        }
14279        {
14280            #[doc(hidden)]
14281            #[allow(dead_code)]
14282            type UnderlyingSolTuple<'a> = ();
14283            #[doc(hidden)]
14284            type UnderlyingRustTuple<'a> = ();
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<claimValidatorExitReturn>
14299            for UnderlyingRustTuple<'_> {
14300                fn from(value: claimValidatorExitReturn) -> Self {
14301                    ()
14302                }
14303            }
14304            #[automatically_derived]
14305            #[doc(hidden)]
14306            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14307            for claimValidatorExitReturn {
14308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14309                    Self {}
14310                }
14311            }
14312        }
14313        impl claimValidatorExitReturn {
14314            fn _tokenize(
14315                &self,
14316            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14317                ()
14318            }
14319        }
14320        #[automatically_derived]
14321        impl alloy_sol_types::SolCall for claimValidatorExitCall {
14322            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14323            type Token<'a> = <Self::Parameters<
14324                'a,
14325            > as alloy_sol_types::SolType>::Token<'a>;
14326            type Return = claimValidatorExitReturn;
14327            type ReturnTuple<'a> = ();
14328            type ReturnToken<'a> = <Self::ReturnTuple<
14329                'a,
14330            > as alloy_sol_types::SolType>::Token<'a>;
14331            const SIGNATURE: &'static str = "claimValidatorExit(address)";
14332            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
14333            #[inline]
14334            fn new<'a>(
14335                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14336            ) -> Self {
14337                tuple.into()
14338            }
14339            #[inline]
14340            fn tokenize(&self) -> Self::Token<'_> {
14341                (
14342                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14343                        &self.validator,
14344                    ),
14345                )
14346            }
14347            #[inline]
14348            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14349                claimValidatorExitReturn::_tokenize(ret)
14350            }
14351            #[inline]
14352            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14353                <Self::ReturnTuple<
14354                    '_,
14355                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14356                    .map(Into::into)
14357            }
14358            #[inline]
14359            fn abi_decode_returns_with_config(
14360                data: &[u8],
14361                config: alloy_sol_types::abi::AbiDecoderConfig,
14362            ) -> alloy_sol_types::Result<Self::Return> {
14363                <Self::ReturnTuple<
14364                    '_,
14365                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14366                        data,
14367                        config,
14368                    )
14369                    .map(Into::into)
14370            }
14371            #[inline]
14372            fn abi_decode_returns_validate(
14373                data: &[u8],
14374            ) -> alloy_sol_types::Result<Self::Return> {
14375                Self::abi_decode_returns_with_config(
14376                    data,
14377                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14378                )
14379            }
14380        }
14381    };
14382    #[derive(serde::Serialize, serde::Deserialize)]
14383    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14384    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
14385```solidity
14386function claimWithdrawal(address validator) external;
14387```*/
14388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14389    #[derive(Clone)]
14390    pub struct claimWithdrawalCall {
14391        #[allow(missing_docs)]
14392        pub validator: alloy::sol_types::private::Address,
14393    }
14394    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
14395    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14396    #[derive(Clone)]
14397    pub struct claimWithdrawalReturn {}
14398    #[allow(
14399        non_camel_case_types,
14400        non_snake_case,
14401        clippy::pub_underscore_fields,
14402        clippy::style
14403    )]
14404    const _: () = {
14405        use alloy::sol_types as alloy_sol_types;
14406        {
14407            #[doc(hidden)]
14408            #[allow(dead_code)]
14409            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14410            #[doc(hidden)]
14411            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14412            #[cfg(test)]
14413            #[allow(dead_code, unreachable_patterns)]
14414            fn _type_assertion(
14415                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14416            ) {
14417                match _t {
14418                    alloy_sol_types::private::AssertTypeEq::<
14419                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14420                    >(_) => {}
14421                }
14422            }
14423            #[automatically_derived]
14424            #[doc(hidden)]
14425            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
14426                fn from(value: claimWithdrawalCall) -> Self {
14427                    (value.validator,)
14428                }
14429            }
14430            #[automatically_derived]
14431            #[doc(hidden)]
14432            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
14433                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14434                    Self { validator: tuple.0 }
14435                }
14436            }
14437        }
14438        {
14439            #[doc(hidden)]
14440            #[allow(dead_code)]
14441            type UnderlyingSolTuple<'a> = ();
14442            #[doc(hidden)]
14443            type UnderlyingRustTuple<'a> = ();
14444            #[cfg(test)]
14445            #[allow(dead_code, unreachable_patterns)]
14446            fn _type_assertion(
14447                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14448            ) {
14449                match _t {
14450                    alloy_sol_types::private::AssertTypeEq::<
14451                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14452                    >(_) => {}
14453                }
14454            }
14455            #[automatically_derived]
14456            #[doc(hidden)]
14457            impl ::core::convert::From<claimWithdrawalReturn>
14458            for UnderlyingRustTuple<'_> {
14459                fn from(value: claimWithdrawalReturn) -> Self {
14460                    ()
14461                }
14462            }
14463            #[automatically_derived]
14464            #[doc(hidden)]
14465            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14466            for claimWithdrawalReturn {
14467                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14468                    Self {}
14469                }
14470            }
14471        }
14472        impl claimWithdrawalReturn {
14473            fn _tokenize(
14474                &self,
14475            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14476                ()
14477            }
14478        }
14479        #[automatically_derived]
14480        impl alloy_sol_types::SolCall for claimWithdrawalCall {
14481            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14482            type Token<'a> = <Self::Parameters<
14483                'a,
14484            > as alloy_sol_types::SolType>::Token<'a>;
14485            type Return = claimWithdrawalReturn;
14486            type ReturnTuple<'a> = ();
14487            type ReturnToken<'a> = <Self::ReturnTuple<
14488                'a,
14489            > as alloy_sol_types::SolType>::Token<'a>;
14490            const SIGNATURE: &'static str = "claimWithdrawal(address)";
14491            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
14492            #[inline]
14493            fn new<'a>(
14494                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14495            ) -> Self {
14496                tuple.into()
14497            }
14498            #[inline]
14499            fn tokenize(&self) -> Self::Token<'_> {
14500                (
14501                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14502                        &self.validator,
14503                    ),
14504                )
14505            }
14506            #[inline]
14507            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14508                claimWithdrawalReturn::_tokenize(ret)
14509            }
14510            #[inline]
14511            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14512                <Self::ReturnTuple<
14513                    '_,
14514                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14515                    .map(Into::into)
14516            }
14517            #[inline]
14518            fn abi_decode_returns_with_config(
14519                data: &[u8],
14520                config: alloy_sol_types::abi::AbiDecoderConfig,
14521            ) -> alloy_sol_types::Result<Self::Return> {
14522                <Self::ReturnTuple<
14523                    '_,
14524                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14525                        data,
14526                        config,
14527                    )
14528                    .map(Into::into)
14529            }
14530            #[inline]
14531            fn abi_decode_returns_validate(
14532                data: &[u8],
14533            ) -> alloy_sol_types::Result<Self::Return> {
14534                Self::abi_decode_returns_with_config(
14535                    data,
14536                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14537                )
14538            }
14539        }
14540    };
14541    #[derive(serde::Serialize, serde::Deserialize)]
14542    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14543    /**Function with signature `commissionTracking(address)` and selector `0x9ffb6b43`.
14544```solidity
14545function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
14546```*/
14547    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14548    #[derive(Clone)]
14549    pub struct commissionTrackingCall {
14550        #[allow(missing_docs)]
14551        pub validator: alloy::sol_types::private::Address,
14552    }
14553    #[derive(serde::Serialize, serde::Deserialize)]
14554    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14555    ///Container type for the return parameters of the [`commissionTracking(address)`](commissionTrackingCall) function.
14556    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14557    #[derive(Clone)]
14558    pub struct commissionTrackingReturn {
14559        #[allow(missing_docs)]
14560        pub commission: u16,
14561        #[allow(missing_docs)]
14562        pub lastIncreaseTime: alloy::sol_types::private::primitives::aliases::U256,
14563    }
14564    #[allow(
14565        non_camel_case_types,
14566        non_snake_case,
14567        clippy::pub_underscore_fields,
14568        clippy::style
14569    )]
14570    const _: () = {
14571        use alloy::sol_types as alloy_sol_types;
14572        {
14573            #[doc(hidden)]
14574            #[allow(dead_code)]
14575            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14576            #[doc(hidden)]
14577            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14578            #[cfg(test)]
14579            #[allow(dead_code, unreachable_patterns)]
14580            fn _type_assertion(
14581                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14582            ) {
14583                match _t {
14584                    alloy_sol_types::private::AssertTypeEq::<
14585                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14586                    >(_) => {}
14587                }
14588            }
14589            #[automatically_derived]
14590            #[doc(hidden)]
14591            impl ::core::convert::From<commissionTrackingCall>
14592            for UnderlyingRustTuple<'_> {
14593                fn from(value: commissionTrackingCall) -> Self {
14594                    (value.validator,)
14595                }
14596            }
14597            #[automatically_derived]
14598            #[doc(hidden)]
14599            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14600            for commissionTrackingCall {
14601                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14602                    Self { validator: tuple.0 }
14603                }
14604            }
14605        }
14606        {
14607            #[doc(hidden)]
14608            #[allow(dead_code)]
14609            type UnderlyingSolTuple<'a> = (
14610                alloy::sol_types::sol_data::Uint<16>,
14611                alloy::sol_types::sol_data::Uint<256>,
14612            );
14613            #[doc(hidden)]
14614            type UnderlyingRustTuple<'a> = (
14615                u16,
14616                alloy::sol_types::private::primitives::aliases::U256,
14617            );
14618            #[cfg(test)]
14619            #[allow(dead_code, unreachable_patterns)]
14620            fn _type_assertion(
14621                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14622            ) {
14623                match _t {
14624                    alloy_sol_types::private::AssertTypeEq::<
14625                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14626                    >(_) => {}
14627                }
14628            }
14629            #[automatically_derived]
14630            #[doc(hidden)]
14631            impl ::core::convert::From<commissionTrackingReturn>
14632            for UnderlyingRustTuple<'_> {
14633                fn from(value: commissionTrackingReturn) -> Self {
14634                    (value.commission, value.lastIncreaseTime)
14635                }
14636            }
14637            #[automatically_derived]
14638            #[doc(hidden)]
14639            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14640            for commissionTrackingReturn {
14641                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14642                    Self {
14643                        commission: tuple.0,
14644                        lastIncreaseTime: tuple.1,
14645                    }
14646                }
14647            }
14648        }
14649        impl commissionTrackingReturn {
14650            fn _tokenize(
14651                &self,
14652            ) -> <commissionTrackingCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14653                (
14654                    <alloy::sol_types::sol_data::Uint<
14655                        16,
14656                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
14657                    <alloy::sol_types::sol_data::Uint<
14658                        256,
14659                    > as alloy_sol_types::SolType>::tokenize(&self.lastIncreaseTime),
14660                )
14661            }
14662        }
14663        #[automatically_derived]
14664        impl alloy_sol_types::SolCall for commissionTrackingCall {
14665            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14666            type Token<'a> = <Self::Parameters<
14667                'a,
14668            > as alloy_sol_types::SolType>::Token<'a>;
14669            type Return = commissionTrackingReturn;
14670            type ReturnTuple<'a> = (
14671                alloy::sol_types::sol_data::Uint<16>,
14672                alloy::sol_types::sol_data::Uint<256>,
14673            );
14674            type ReturnToken<'a> = <Self::ReturnTuple<
14675                'a,
14676            > as alloy_sol_types::SolType>::Token<'a>;
14677            const SIGNATURE: &'static str = "commissionTracking(address)";
14678            const SELECTOR: [u8; 4] = [159u8, 251u8, 107u8, 67u8];
14679            #[inline]
14680            fn new<'a>(
14681                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14682            ) -> Self {
14683                tuple.into()
14684            }
14685            #[inline]
14686            fn tokenize(&self) -> Self::Token<'_> {
14687                (
14688                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14689                        &self.validator,
14690                    ),
14691                )
14692            }
14693            #[inline]
14694            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14695                commissionTrackingReturn::_tokenize(ret)
14696            }
14697            #[inline]
14698            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14699                <Self::ReturnTuple<
14700                    '_,
14701                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14702                    .map(Into::into)
14703            }
14704            #[inline]
14705            fn abi_decode_returns_with_config(
14706                data: &[u8],
14707                config: alloy_sol_types::abi::AbiDecoderConfig,
14708            ) -> alloy_sol_types::Result<Self::Return> {
14709                <Self::ReturnTuple<
14710                    '_,
14711                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14712                        data,
14713                        config,
14714                    )
14715                    .map(Into::into)
14716            }
14717            #[inline]
14718            fn abi_decode_returns_validate(
14719                data: &[u8],
14720            ) -> alloy_sol_types::Result<Self::Return> {
14721                Self::abi_decode_returns_with_config(
14722                    data,
14723                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14724                )
14725            }
14726        }
14727    };
14728    #[derive(serde::Serialize, serde::Deserialize)]
14729    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14730    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
14731```solidity
14732function delegate(address validator, uint256 amount) external;
14733```*/
14734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14735    #[derive(Clone)]
14736    pub struct delegateCall {
14737        #[allow(missing_docs)]
14738        pub validator: alloy::sol_types::private::Address,
14739        #[allow(missing_docs)]
14740        pub amount: alloy::sol_types::private::primitives::aliases::U256,
14741    }
14742    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
14743    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14744    #[derive(Clone)]
14745    pub struct delegateReturn {}
14746    #[allow(
14747        non_camel_case_types,
14748        non_snake_case,
14749        clippy::pub_underscore_fields,
14750        clippy::style
14751    )]
14752    const _: () = {
14753        use alloy::sol_types as alloy_sol_types;
14754        {
14755            #[doc(hidden)]
14756            #[allow(dead_code)]
14757            type UnderlyingSolTuple<'a> = (
14758                alloy::sol_types::sol_data::Address,
14759                alloy::sol_types::sol_data::Uint<256>,
14760            );
14761            #[doc(hidden)]
14762            type UnderlyingRustTuple<'a> = (
14763                alloy::sol_types::private::Address,
14764                alloy::sol_types::private::primitives::aliases::U256,
14765            );
14766            #[cfg(test)]
14767            #[allow(dead_code, unreachable_patterns)]
14768            fn _type_assertion(
14769                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14770            ) {
14771                match _t {
14772                    alloy_sol_types::private::AssertTypeEq::<
14773                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14774                    >(_) => {}
14775                }
14776            }
14777            #[automatically_derived]
14778            #[doc(hidden)]
14779            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
14780                fn from(value: delegateCall) -> Self {
14781                    (value.validator, value.amount)
14782                }
14783            }
14784            #[automatically_derived]
14785            #[doc(hidden)]
14786            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
14787                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14788                    Self {
14789                        validator: tuple.0,
14790                        amount: tuple.1,
14791                    }
14792                }
14793            }
14794        }
14795        {
14796            #[doc(hidden)]
14797            #[allow(dead_code)]
14798            type UnderlyingSolTuple<'a> = ();
14799            #[doc(hidden)]
14800            type UnderlyingRustTuple<'a> = ();
14801            #[cfg(test)]
14802            #[allow(dead_code, unreachable_patterns)]
14803            fn _type_assertion(
14804                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14805            ) {
14806                match _t {
14807                    alloy_sol_types::private::AssertTypeEq::<
14808                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14809                    >(_) => {}
14810                }
14811            }
14812            #[automatically_derived]
14813            #[doc(hidden)]
14814            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
14815                fn from(value: delegateReturn) -> Self {
14816                    ()
14817                }
14818            }
14819            #[automatically_derived]
14820            #[doc(hidden)]
14821            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
14822                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14823                    Self {}
14824                }
14825            }
14826        }
14827        impl delegateReturn {
14828            fn _tokenize(
14829                &self,
14830            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14831                ()
14832            }
14833        }
14834        #[automatically_derived]
14835        impl alloy_sol_types::SolCall for delegateCall {
14836            type Parameters<'a> = (
14837                alloy::sol_types::sol_data::Address,
14838                alloy::sol_types::sol_data::Uint<256>,
14839            );
14840            type Token<'a> = <Self::Parameters<
14841                'a,
14842            > as alloy_sol_types::SolType>::Token<'a>;
14843            type Return = delegateReturn;
14844            type ReturnTuple<'a> = ();
14845            type ReturnToken<'a> = <Self::ReturnTuple<
14846                'a,
14847            > as alloy_sol_types::SolType>::Token<'a>;
14848            const SIGNATURE: &'static str = "delegate(address,uint256)";
14849            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
14850            #[inline]
14851            fn new<'a>(
14852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14853            ) -> Self {
14854                tuple.into()
14855            }
14856            #[inline]
14857            fn tokenize(&self) -> Self::Token<'_> {
14858                (
14859                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14860                        &self.validator,
14861                    ),
14862                    <alloy::sol_types::sol_data::Uint<
14863                        256,
14864                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
14865                )
14866            }
14867            #[inline]
14868            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14869                delegateReturn::_tokenize(ret)
14870            }
14871            #[inline]
14872            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14873                <Self::ReturnTuple<
14874                    '_,
14875                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14876                    .map(Into::into)
14877            }
14878            #[inline]
14879            fn abi_decode_returns_with_config(
14880                data: &[u8],
14881                config: alloy_sol_types::abi::AbiDecoderConfig,
14882            ) -> alloy_sol_types::Result<Self::Return> {
14883                <Self::ReturnTuple<
14884                    '_,
14885                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14886                        data,
14887                        config,
14888                    )
14889                    .map(Into::into)
14890            }
14891            #[inline]
14892            fn abi_decode_returns_validate(
14893                data: &[u8],
14894            ) -> alloy_sol_types::Result<Self::Return> {
14895                Self::abi_decode_returns_with_config(
14896                    data,
14897                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14898                )
14899            }
14900        }
14901    };
14902    #[derive(serde::Serialize, serde::Deserialize)]
14903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14904    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
14905```solidity
14906function delegations(address validator, address delegator) external view returns (uint256 amount);
14907```*/
14908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14909    #[derive(Clone)]
14910    pub struct delegationsCall {
14911        #[allow(missing_docs)]
14912        pub validator: alloy::sol_types::private::Address,
14913        #[allow(missing_docs)]
14914        pub delegator: alloy::sol_types::private::Address,
14915    }
14916    #[derive(serde::Serialize, serde::Deserialize)]
14917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14918    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
14919    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14920    #[derive(Clone)]
14921    pub struct delegationsReturn {
14922        #[allow(missing_docs)]
14923        pub amount: alloy::sol_types::private::primitives::aliases::U256,
14924    }
14925    #[allow(
14926        non_camel_case_types,
14927        non_snake_case,
14928        clippy::pub_underscore_fields,
14929        clippy::style
14930    )]
14931    const _: () = {
14932        use alloy::sol_types as alloy_sol_types;
14933        {
14934            #[doc(hidden)]
14935            #[allow(dead_code)]
14936            type UnderlyingSolTuple<'a> = (
14937                alloy::sol_types::sol_data::Address,
14938                alloy::sol_types::sol_data::Address,
14939            );
14940            #[doc(hidden)]
14941            type UnderlyingRustTuple<'a> = (
14942                alloy::sol_types::private::Address,
14943                alloy::sol_types::private::Address,
14944            );
14945            #[cfg(test)]
14946            #[allow(dead_code, unreachable_patterns)]
14947            fn _type_assertion(
14948                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14949            ) {
14950                match _t {
14951                    alloy_sol_types::private::AssertTypeEq::<
14952                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14953                    >(_) => {}
14954                }
14955            }
14956            #[automatically_derived]
14957            #[doc(hidden)]
14958            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
14959                fn from(value: delegationsCall) -> Self {
14960                    (value.validator, value.delegator)
14961                }
14962            }
14963            #[automatically_derived]
14964            #[doc(hidden)]
14965            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
14966                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14967                    Self {
14968                        validator: tuple.0,
14969                        delegator: tuple.1,
14970                    }
14971                }
14972            }
14973        }
14974        {
14975            #[doc(hidden)]
14976            #[allow(dead_code)]
14977            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14978            #[doc(hidden)]
14979            type UnderlyingRustTuple<'a> = (
14980                alloy::sol_types::private::primitives::aliases::U256,
14981            );
14982            #[cfg(test)]
14983            #[allow(dead_code, unreachable_patterns)]
14984            fn _type_assertion(
14985                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14986            ) {
14987                match _t {
14988                    alloy_sol_types::private::AssertTypeEq::<
14989                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14990                    >(_) => {}
14991                }
14992            }
14993            #[automatically_derived]
14994            #[doc(hidden)]
14995            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
14996                fn from(value: delegationsReturn) -> Self {
14997                    (value.amount,)
14998                }
14999            }
15000            #[automatically_derived]
15001            #[doc(hidden)]
15002            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
15003                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15004                    Self { amount: tuple.0 }
15005                }
15006            }
15007        }
15008        #[automatically_derived]
15009        impl alloy_sol_types::SolCall for delegationsCall {
15010            type Parameters<'a> = (
15011                alloy::sol_types::sol_data::Address,
15012                alloy::sol_types::sol_data::Address,
15013            );
15014            type Token<'a> = <Self::Parameters<
15015                'a,
15016            > as alloy_sol_types::SolType>::Token<'a>;
15017            type Return = alloy::sol_types::private::primitives::aliases::U256;
15018            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15019            type ReturnToken<'a> = <Self::ReturnTuple<
15020                'a,
15021            > as alloy_sol_types::SolType>::Token<'a>;
15022            const SIGNATURE: &'static str = "delegations(address,address)";
15023            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
15024            #[inline]
15025            fn new<'a>(
15026                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15027            ) -> Self {
15028                tuple.into()
15029            }
15030            #[inline]
15031            fn tokenize(&self) -> Self::Token<'_> {
15032                (
15033                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15034                        &self.validator,
15035                    ),
15036                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15037                        &self.delegator,
15038                    ),
15039                )
15040            }
15041            #[inline]
15042            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15043                (
15044                    <alloy::sol_types::sol_data::Uint<
15045                        256,
15046                    > as alloy_sol_types::SolType>::tokenize(ret),
15047                )
15048            }
15049            #[inline]
15050            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15051                <Self::ReturnTuple<
15052                    '_,
15053                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15054                    .map(|r| {
15055                        let r: delegationsReturn = r.into();
15056                        r.amount
15057                    })
15058            }
15059            #[inline]
15060            fn abi_decode_returns_with_config(
15061                data: &[u8],
15062                config: alloy_sol_types::abi::AbiDecoderConfig,
15063            ) -> alloy_sol_types::Result<Self::Return> {
15064                <Self::ReturnTuple<
15065                    '_,
15066                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15067                        data,
15068                        config,
15069                    )
15070                    .map(|r| {
15071                        let r: delegationsReturn = r.into();
15072                        r.amount
15073                    })
15074            }
15075            #[inline]
15076            fn abi_decode_returns_validate(
15077                data: &[u8],
15078            ) -> alloy_sol_types::Result<Self::Return> {
15079                Self::abi_decode_returns_with_config(
15080                    data,
15081                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15082                )
15083            }
15084        }
15085    };
15086    #[derive(serde::Serialize, serde::Deserialize)]
15087    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15088    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
15089```solidity
15090function deregisterValidator() external;
15091```*/
15092    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15093    #[derive(Clone)]
15094    pub struct deregisterValidatorCall;
15095    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
15096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15097    #[derive(Clone)]
15098    pub struct deregisterValidatorReturn {}
15099    #[allow(
15100        non_camel_case_types,
15101        non_snake_case,
15102        clippy::pub_underscore_fields,
15103        clippy::style
15104    )]
15105    const _: () = {
15106        use alloy::sol_types as alloy_sol_types;
15107        {
15108            #[doc(hidden)]
15109            #[allow(dead_code)]
15110            type UnderlyingSolTuple<'a> = ();
15111            #[doc(hidden)]
15112            type UnderlyingRustTuple<'a> = ();
15113            #[cfg(test)]
15114            #[allow(dead_code, unreachable_patterns)]
15115            fn _type_assertion(
15116                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15117            ) {
15118                match _t {
15119                    alloy_sol_types::private::AssertTypeEq::<
15120                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15121                    >(_) => {}
15122                }
15123            }
15124            #[automatically_derived]
15125            #[doc(hidden)]
15126            impl ::core::convert::From<deregisterValidatorCall>
15127            for UnderlyingRustTuple<'_> {
15128                fn from(value: deregisterValidatorCall) -> Self {
15129                    ()
15130                }
15131            }
15132            #[automatically_derived]
15133            #[doc(hidden)]
15134            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15135            for deregisterValidatorCall {
15136                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15137                    Self
15138                }
15139            }
15140        }
15141        {
15142            #[doc(hidden)]
15143            #[allow(dead_code)]
15144            type UnderlyingSolTuple<'a> = ();
15145            #[doc(hidden)]
15146            type UnderlyingRustTuple<'a> = ();
15147            #[cfg(test)]
15148            #[allow(dead_code, unreachable_patterns)]
15149            fn _type_assertion(
15150                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15151            ) {
15152                match _t {
15153                    alloy_sol_types::private::AssertTypeEq::<
15154                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15155                    >(_) => {}
15156                }
15157            }
15158            #[automatically_derived]
15159            #[doc(hidden)]
15160            impl ::core::convert::From<deregisterValidatorReturn>
15161            for UnderlyingRustTuple<'_> {
15162                fn from(value: deregisterValidatorReturn) -> Self {
15163                    ()
15164                }
15165            }
15166            #[automatically_derived]
15167            #[doc(hidden)]
15168            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15169            for deregisterValidatorReturn {
15170                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15171                    Self {}
15172                }
15173            }
15174        }
15175        impl deregisterValidatorReturn {
15176            fn _tokenize(
15177                &self,
15178            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15179                ()
15180            }
15181        }
15182        #[automatically_derived]
15183        impl alloy_sol_types::SolCall for deregisterValidatorCall {
15184            type Parameters<'a> = ();
15185            type Token<'a> = <Self::Parameters<
15186                'a,
15187            > as alloy_sol_types::SolType>::Token<'a>;
15188            type Return = deregisterValidatorReturn;
15189            type ReturnTuple<'a> = ();
15190            type ReturnToken<'a> = <Self::ReturnTuple<
15191                'a,
15192            > as alloy_sol_types::SolType>::Token<'a>;
15193            const SIGNATURE: &'static str = "deregisterValidator()";
15194            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
15195            #[inline]
15196            fn new<'a>(
15197                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15198            ) -> Self {
15199                tuple.into()
15200            }
15201            #[inline]
15202            fn tokenize(&self) -> Self::Token<'_> {
15203                ()
15204            }
15205            #[inline]
15206            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15207                deregisterValidatorReturn::_tokenize(ret)
15208            }
15209            #[inline]
15210            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15211                <Self::ReturnTuple<
15212                    '_,
15213                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15214                    .map(Into::into)
15215            }
15216            #[inline]
15217            fn abi_decode_returns_with_config(
15218                data: &[u8],
15219                config: alloy_sol_types::abi::AbiDecoderConfig,
15220            ) -> alloy_sol_types::Result<Self::Return> {
15221                <Self::ReturnTuple<
15222                    '_,
15223                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15224                        data,
15225                        config,
15226                    )
15227                    .map(Into::into)
15228            }
15229            #[inline]
15230            fn abi_decode_returns_validate(
15231                data: &[u8],
15232            ) -> alloy_sol_types::Result<Self::Return> {
15233                Self::abi_decode_returns_with_config(
15234                    data,
15235                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15236                )
15237            }
15238        }
15239    };
15240    #[derive(serde::Serialize, serde::Deserialize)]
15241    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15242    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
15243```solidity
15244function exitEscrowPeriod() external view returns (uint256);
15245```*/
15246    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15247    #[derive(Clone)]
15248    pub struct exitEscrowPeriodCall;
15249    #[derive(serde::Serialize, serde::Deserialize)]
15250    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15251    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
15252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15253    #[derive(Clone)]
15254    pub struct exitEscrowPeriodReturn {
15255        #[allow(missing_docs)]
15256        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15257    }
15258    #[allow(
15259        non_camel_case_types,
15260        non_snake_case,
15261        clippy::pub_underscore_fields,
15262        clippy::style
15263    )]
15264    const _: () = {
15265        use alloy::sol_types as alloy_sol_types;
15266        {
15267            #[doc(hidden)]
15268            #[allow(dead_code)]
15269            type UnderlyingSolTuple<'a> = ();
15270            #[doc(hidden)]
15271            type UnderlyingRustTuple<'a> = ();
15272            #[cfg(test)]
15273            #[allow(dead_code, unreachable_patterns)]
15274            fn _type_assertion(
15275                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15276            ) {
15277                match _t {
15278                    alloy_sol_types::private::AssertTypeEq::<
15279                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15280                    >(_) => {}
15281                }
15282            }
15283            #[automatically_derived]
15284            #[doc(hidden)]
15285            impl ::core::convert::From<exitEscrowPeriodCall>
15286            for UnderlyingRustTuple<'_> {
15287                fn from(value: exitEscrowPeriodCall) -> Self {
15288                    ()
15289                }
15290            }
15291            #[automatically_derived]
15292            #[doc(hidden)]
15293            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15294            for exitEscrowPeriodCall {
15295                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15296                    Self
15297                }
15298            }
15299        }
15300        {
15301            #[doc(hidden)]
15302            #[allow(dead_code)]
15303            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15304            #[doc(hidden)]
15305            type UnderlyingRustTuple<'a> = (
15306                alloy::sol_types::private::primitives::aliases::U256,
15307            );
15308            #[cfg(test)]
15309            #[allow(dead_code, unreachable_patterns)]
15310            fn _type_assertion(
15311                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15312            ) {
15313                match _t {
15314                    alloy_sol_types::private::AssertTypeEq::<
15315                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15316                    >(_) => {}
15317                }
15318            }
15319            #[automatically_derived]
15320            #[doc(hidden)]
15321            impl ::core::convert::From<exitEscrowPeriodReturn>
15322            for UnderlyingRustTuple<'_> {
15323                fn from(value: exitEscrowPeriodReturn) -> Self {
15324                    (value._0,)
15325                }
15326            }
15327            #[automatically_derived]
15328            #[doc(hidden)]
15329            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15330            for exitEscrowPeriodReturn {
15331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15332                    Self { _0: tuple.0 }
15333                }
15334            }
15335        }
15336        #[automatically_derived]
15337        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
15338            type Parameters<'a> = ();
15339            type Token<'a> = <Self::Parameters<
15340                'a,
15341            > as alloy_sol_types::SolType>::Token<'a>;
15342            type Return = alloy::sol_types::private::primitives::aliases::U256;
15343            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15344            type ReturnToken<'a> = <Self::ReturnTuple<
15345                'a,
15346            > as alloy_sol_types::SolType>::Token<'a>;
15347            const SIGNATURE: &'static str = "exitEscrowPeriod()";
15348            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
15349            #[inline]
15350            fn new<'a>(
15351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15352            ) -> Self {
15353                tuple.into()
15354            }
15355            #[inline]
15356            fn tokenize(&self) -> Self::Token<'_> {
15357                ()
15358            }
15359            #[inline]
15360            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15361                (
15362                    <alloy::sol_types::sol_data::Uint<
15363                        256,
15364                    > as alloy_sol_types::SolType>::tokenize(ret),
15365                )
15366            }
15367            #[inline]
15368            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15369                <Self::ReturnTuple<
15370                    '_,
15371                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15372                    .map(|r| {
15373                        let r: exitEscrowPeriodReturn = r.into();
15374                        r._0
15375                    })
15376            }
15377            #[inline]
15378            fn abi_decode_returns_with_config(
15379                data: &[u8],
15380                config: alloy_sol_types::abi::AbiDecoderConfig,
15381            ) -> alloy_sol_types::Result<Self::Return> {
15382                <Self::ReturnTuple<
15383                    '_,
15384                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15385                        data,
15386                        config,
15387                    )
15388                    .map(|r| {
15389                        let r: exitEscrowPeriodReturn = r.into();
15390                        r._0
15391                    })
15392            }
15393            #[inline]
15394            fn abi_decode_returns_validate(
15395                data: &[u8],
15396            ) -> alloy_sol_types::Result<Self::Return> {
15397                Self::abi_decode_returns_with_config(
15398                    data,
15399                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15400                )
15401            }
15402        }
15403    };
15404    #[derive(serde::Serialize, serde::Deserialize)]
15405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15406    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
15407```solidity
15408function getRoleAdmin(bytes32 role) external view returns (bytes32);
15409```*/
15410    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15411    #[derive(Clone)]
15412    pub struct getRoleAdminCall {
15413        #[allow(missing_docs)]
15414        pub role: alloy::sol_types::private::FixedBytes<32>,
15415    }
15416    #[derive(serde::Serialize, serde::Deserialize)]
15417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15418    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
15419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15420    #[derive(Clone)]
15421    pub struct getRoleAdminReturn {
15422        #[allow(missing_docs)]
15423        pub _0: alloy::sol_types::private::FixedBytes<32>,
15424    }
15425    #[allow(
15426        non_camel_case_types,
15427        non_snake_case,
15428        clippy::pub_underscore_fields,
15429        clippy::style
15430    )]
15431    const _: () = {
15432        use alloy::sol_types as alloy_sol_types;
15433        {
15434            #[doc(hidden)]
15435            #[allow(dead_code)]
15436            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15437            #[doc(hidden)]
15438            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
15439            #[cfg(test)]
15440            #[allow(dead_code, unreachable_patterns)]
15441            fn _type_assertion(
15442                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15443            ) {
15444                match _t {
15445                    alloy_sol_types::private::AssertTypeEq::<
15446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15447                    >(_) => {}
15448                }
15449            }
15450            #[automatically_derived]
15451            #[doc(hidden)]
15452            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
15453                fn from(value: getRoleAdminCall) -> Self {
15454                    (value.role,)
15455                }
15456            }
15457            #[automatically_derived]
15458            #[doc(hidden)]
15459            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
15460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15461                    Self { role: tuple.0 }
15462                }
15463            }
15464        }
15465        {
15466            #[doc(hidden)]
15467            #[allow(dead_code)]
15468            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15469            #[doc(hidden)]
15470            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
15471            #[cfg(test)]
15472            #[allow(dead_code, unreachable_patterns)]
15473            fn _type_assertion(
15474                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15475            ) {
15476                match _t {
15477                    alloy_sol_types::private::AssertTypeEq::<
15478                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15479                    >(_) => {}
15480                }
15481            }
15482            #[automatically_derived]
15483            #[doc(hidden)]
15484            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
15485                fn from(value: getRoleAdminReturn) -> Self {
15486                    (value._0,)
15487                }
15488            }
15489            #[automatically_derived]
15490            #[doc(hidden)]
15491            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
15492                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15493                    Self { _0: tuple.0 }
15494                }
15495            }
15496        }
15497        #[automatically_derived]
15498        impl alloy_sol_types::SolCall for getRoleAdminCall {
15499            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15500            type Token<'a> = <Self::Parameters<
15501                'a,
15502            > as alloy_sol_types::SolType>::Token<'a>;
15503            type Return = alloy::sol_types::private::FixedBytes<32>;
15504            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15505            type ReturnToken<'a> = <Self::ReturnTuple<
15506                'a,
15507            > as alloy_sol_types::SolType>::Token<'a>;
15508            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
15509            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
15510            #[inline]
15511            fn new<'a>(
15512                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15513            ) -> Self {
15514                tuple.into()
15515            }
15516            #[inline]
15517            fn tokenize(&self) -> Self::Token<'_> {
15518                (
15519                    <alloy::sol_types::sol_data::FixedBytes<
15520                        32,
15521                    > as alloy_sol_types::SolType>::tokenize(&self.role),
15522                )
15523            }
15524            #[inline]
15525            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15526                (
15527                    <alloy::sol_types::sol_data::FixedBytes<
15528                        32,
15529                    > as alloy_sol_types::SolType>::tokenize(ret),
15530                )
15531            }
15532            #[inline]
15533            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15534                <Self::ReturnTuple<
15535                    '_,
15536                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15537                    .map(|r| {
15538                        let r: getRoleAdminReturn = r.into();
15539                        r._0
15540                    })
15541            }
15542            #[inline]
15543            fn abi_decode_returns_with_config(
15544                data: &[u8],
15545                config: alloy_sol_types::abi::AbiDecoderConfig,
15546            ) -> alloy_sol_types::Result<Self::Return> {
15547                <Self::ReturnTuple<
15548                    '_,
15549                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15550                        data,
15551                        config,
15552                    )
15553                    .map(|r| {
15554                        let r: getRoleAdminReturn = r.into();
15555                        r._0
15556                    })
15557            }
15558            #[inline]
15559            fn abi_decode_returns_validate(
15560                data: &[u8],
15561            ) -> alloy_sol_types::Result<Self::Return> {
15562                Self::abi_decode_returns_with_config(
15563                    data,
15564                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15565                )
15566            }
15567        }
15568    };
15569    #[derive(serde::Serialize, serde::Deserialize)]
15570    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15571    /**Function with signature `getUndelegation(address,address)` and selector `0xbb60bfb0`.
15572```solidity
15573function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
15574```*/
15575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15576    #[derive(Clone)]
15577    pub struct getUndelegationCall {
15578        #[allow(missing_docs)]
15579        pub validator: alloy::sol_types::private::Address,
15580        #[allow(missing_docs)]
15581        pub delegator: alloy::sol_types::private::Address,
15582    }
15583    #[derive(serde::Serialize, serde::Deserialize)]
15584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15585    ///Container type for the return parameters of the [`getUndelegation(address,address)`](getUndelegationCall) function.
15586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15587    #[derive(Clone)]
15588    pub struct getUndelegationReturn {
15589        #[allow(missing_docs)]
15590        pub id: u64,
15591        #[allow(missing_docs)]
15592        pub amount: alloy::sol_types::private::primitives::aliases::U256,
15593        #[allow(missing_docs)]
15594        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
15595    }
15596    #[allow(
15597        non_camel_case_types,
15598        non_snake_case,
15599        clippy::pub_underscore_fields,
15600        clippy::style
15601    )]
15602    const _: () = {
15603        use alloy::sol_types as alloy_sol_types;
15604        {
15605            #[doc(hidden)]
15606            #[allow(dead_code)]
15607            type UnderlyingSolTuple<'a> = (
15608                alloy::sol_types::sol_data::Address,
15609                alloy::sol_types::sol_data::Address,
15610            );
15611            #[doc(hidden)]
15612            type UnderlyingRustTuple<'a> = (
15613                alloy::sol_types::private::Address,
15614                alloy::sol_types::private::Address,
15615            );
15616            #[cfg(test)]
15617            #[allow(dead_code, unreachable_patterns)]
15618            fn _type_assertion(
15619                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15620            ) {
15621                match _t {
15622                    alloy_sol_types::private::AssertTypeEq::<
15623                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15624                    >(_) => {}
15625                }
15626            }
15627            #[automatically_derived]
15628            #[doc(hidden)]
15629            impl ::core::convert::From<getUndelegationCall> for UnderlyingRustTuple<'_> {
15630                fn from(value: getUndelegationCall) -> Self {
15631                    (value.validator, value.delegator)
15632                }
15633            }
15634            #[automatically_derived]
15635            #[doc(hidden)]
15636            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getUndelegationCall {
15637                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15638                    Self {
15639                        validator: tuple.0,
15640                        delegator: tuple.1,
15641                    }
15642                }
15643            }
15644        }
15645        {
15646            #[doc(hidden)]
15647            #[allow(dead_code)]
15648            type UnderlyingSolTuple<'a> = (
15649                alloy::sol_types::sol_data::Uint<64>,
15650                alloy::sol_types::sol_data::Uint<256>,
15651                alloy::sol_types::sol_data::Uint<256>,
15652            );
15653            #[doc(hidden)]
15654            type UnderlyingRustTuple<'a> = (
15655                u64,
15656                alloy::sol_types::private::primitives::aliases::U256,
15657                alloy::sol_types::private::primitives::aliases::U256,
15658            );
15659            #[cfg(test)]
15660            #[allow(dead_code, unreachable_patterns)]
15661            fn _type_assertion(
15662                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15663            ) {
15664                match _t {
15665                    alloy_sol_types::private::AssertTypeEq::<
15666                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15667                    >(_) => {}
15668                }
15669            }
15670            #[automatically_derived]
15671            #[doc(hidden)]
15672            impl ::core::convert::From<getUndelegationReturn>
15673            for UnderlyingRustTuple<'_> {
15674                fn from(value: getUndelegationReturn) -> Self {
15675                    (value.id, value.amount, value.unlocksAt)
15676                }
15677            }
15678            #[automatically_derived]
15679            #[doc(hidden)]
15680            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15681            for getUndelegationReturn {
15682                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15683                    Self {
15684                        id: tuple.0,
15685                        amount: tuple.1,
15686                        unlocksAt: tuple.2,
15687                    }
15688                }
15689            }
15690        }
15691        impl getUndelegationReturn {
15692            fn _tokenize(
15693                &self,
15694            ) -> <getUndelegationCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15695                (
15696                    <alloy::sol_types::sol_data::Uint<
15697                        64,
15698                    > as alloy_sol_types::SolType>::tokenize(&self.id),
15699                    <alloy::sol_types::sol_data::Uint<
15700                        256,
15701                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
15702                    <alloy::sol_types::sol_data::Uint<
15703                        256,
15704                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
15705                )
15706            }
15707        }
15708        #[automatically_derived]
15709        impl alloy_sol_types::SolCall for getUndelegationCall {
15710            type Parameters<'a> = (
15711                alloy::sol_types::sol_data::Address,
15712                alloy::sol_types::sol_data::Address,
15713            );
15714            type Token<'a> = <Self::Parameters<
15715                'a,
15716            > as alloy_sol_types::SolType>::Token<'a>;
15717            type Return = getUndelegationReturn;
15718            type ReturnTuple<'a> = (
15719                alloy::sol_types::sol_data::Uint<64>,
15720                alloy::sol_types::sol_data::Uint<256>,
15721                alloy::sol_types::sol_data::Uint<256>,
15722            );
15723            type ReturnToken<'a> = <Self::ReturnTuple<
15724                'a,
15725            > as alloy_sol_types::SolType>::Token<'a>;
15726            const SIGNATURE: &'static str = "getUndelegation(address,address)";
15727            const SELECTOR: [u8; 4] = [187u8, 96u8, 191u8, 176u8];
15728            #[inline]
15729            fn new<'a>(
15730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15731            ) -> Self {
15732                tuple.into()
15733            }
15734            #[inline]
15735            fn tokenize(&self) -> Self::Token<'_> {
15736                (
15737                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15738                        &self.validator,
15739                    ),
15740                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15741                        &self.delegator,
15742                    ),
15743                )
15744            }
15745            #[inline]
15746            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15747                getUndelegationReturn::_tokenize(ret)
15748            }
15749            #[inline]
15750            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15751                <Self::ReturnTuple<
15752                    '_,
15753                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15754                    .map(Into::into)
15755            }
15756            #[inline]
15757            fn abi_decode_returns_with_config(
15758                data: &[u8],
15759                config: alloy_sol_types::abi::AbiDecoderConfig,
15760            ) -> alloy_sol_types::Result<Self::Return> {
15761                <Self::ReturnTuple<
15762                    '_,
15763                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15764                        data,
15765                        config,
15766                    )
15767                    .map(Into::into)
15768            }
15769            #[inline]
15770            fn abi_decode_returns_validate(
15771                data: &[u8],
15772            ) -> alloy_sol_types::Result<Self::Return> {
15773                Self::abi_decode_returns_with_config(
15774                    data,
15775                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15776                )
15777            }
15778        }
15779    };
15780    #[derive(serde::Serialize, serde::Deserialize)]
15781    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15782    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
15783```solidity
15784function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
15785```*/
15786    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15787    #[derive(Clone)]
15788    pub struct getVersionCall;
15789    #[derive(serde::Serialize, serde::Deserialize)]
15790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15791    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
15792    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15793    #[derive(Clone)]
15794    pub struct getVersionReturn {
15795        #[allow(missing_docs)]
15796        pub majorVersion: u8,
15797        #[allow(missing_docs)]
15798        pub minorVersion: u8,
15799        #[allow(missing_docs)]
15800        pub patchVersion: u8,
15801    }
15802    #[allow(
15803        non_camel_case_types,
15804        non_snake_case,
15805        clippy::pub_underscore_fields,
15806        clippy::style
15807    )]
15808    const _: () = {
15809        use alloy::sol_types as alloy_sol_types;
15810        {
15811            #[doc(hidden)]
15812            #[allow(dead_code)]
15813            type UnderlyingSolTuple<'a> = ();
15814            #[doc(hidden)]
15815            type UnderlyingRustTuple<'a> = ();
15816            #[cfg(test)]
15817            #[allow(dead_code, unreachable_patterns)]
15818            fn _type_assertion(
15819                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15820            ) {
15821                match _t {
15822                    alloy_sol_types::private::AssertTypeEq::<
15823                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15824                    >(_) => {}
15825                }
15826            }
15827            #[automatically_derived]
15828            #[doc(hidden)]
15829            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
15830                fn from(value: getVersionCall) -> Self {
15831                    ()
15832                }
15833            }
15834            #[automatically_derived]
15835            #[doc(hidden)]
15836            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
15837                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15838                    Self
15839                }
15840            }
15841        }
15842        {
15843            #[doc(hidden)]
15844            #[allow(dead_code)]
15845            type UnderlyingSolTuple<'a> = (
15846                alloy::sol_types::sol_data::Uint<8>,
15847                alloy::sol_types::sol_data::Uint<8>,
15848                alloy::sol_types::sol_data::Uint<8>,
15849            );
15850            #[doc(hidden)]
15851            type UnderlyingRustTuple<'a> = (u8, u8, u8);
15852            #[cfg(test)]
15853            #[allow(dead_code, unreachable_patterns)]
15854            fn _type_assertion(
15855                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15856            ) {
15857                match _t {
15858                    alloy_sol_types::private::AssertTypeEq::<
15859                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15860                    >(_) => {}
15861                }
15862            }
15863            #[automatically_derived]
15864            #[doc(hidden)]
15865            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
15866                fn from(value: getVersionReturn) -> Self {
15867                    (value.majorVersion, value.minorVersion, value.patchVersion)
15868                }
15869            }
15870            #[automatically_derived]
15871            #[doc(hidden)]
15872            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
15873                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15874                    Self {
15875                        majorVersion: tuple.0,
15876                        minorVersion: tuple.1,
15877                        patchVersion: tuple.2,
15878                    }
15879                }
15880            }
15881        }
15882        impl getVersionReturn {
15883            fn _tokenize(
15884                &self,
15885            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15886                (
15887                    <alloy::sol_types::sol_data::Uint<
15888                        8,
15889                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
15890                    <alloy::sol_types::sol_data::Uint<
15891                        8,
15892                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
15893                    <alloy::sol_types::sol_data::Uint<
15894                        8,
15895                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
15896                )
15897            }
15898        }
15899        #[automatically_derived]
15900        impl alloy_sol_types::SolCall for getVersionCall {
15901            type Parameters<'a> = ();
15902            type Token<'a> = <Self::Parameters<
15903                'a,
15904            > as alloy_sol_types::SolType>::Token<'a>;
15905            type Return = getVersionReturn;
15906            type ReturnTuple<'a> = (
15907                alloy::sol_types::sol_data::Uint<8>,
15908                alloy::sol_types::sol_data::Uint<8>,
15909                alloy::sol_types::sol_data::Uint<8>,
15910            );
15911            type ReturnToken<'a> = <Self::ReturnTuple<
15912                'a,
15913            > as alloy_sol_types::SolType>::Token<'a>;
15914            const SIGNATURE: &'static str = "getVersion()";
15915            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
15916            #[inline]
15917            fn new<'a>(
15918                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15919            ) -> Self {
15920                tuple.into()
15921            }
15922            #[inline]
15923            fn tokenize(&self) -> Self::Token<'_> {
15924                ()
15925            }
15926            #[inline]
15927            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15928                getVersionReturn::_tokenize(ret)
15929            }
15930            #[inline]
15931            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15932                <Self::ReturnTuple<
15933                    '_,
15934                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15935                    .map(Into::into)
15936            }
15937            #[inline]
15938            fn abi_decode_returns_with_config(
15939                data: &[u8],
15940                config: alloy_sol_types::abi::AbiDecoderConfig,
15941            ) -> alloy_sol_types::Result<Self::Return> {
15942                <Self::ReturnTuple<
15943                    '_,
15944                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15945                        data,
15946                        config,
15947                    )
15948                    .map(Into::into)
15949            }
15950            #[inline]
15951            fn abi_decode_returns_validate(
15952                data: &[u8],
15953            ) -> alloy_sol_types::Result<Self::Return> {
15954                Self::abi_decode_returns_with_config(
15955                    data,
15956                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15957                )
15958            }
15959        }
15960    };
15961    #[derive(serde::Serialize, serde::Deserialize)]
15962    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15963    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
15964```solidity
15965function grantRole(bytes32 role, address account) external;
15966```*/
15967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15968    #[derive(Clone)]
15969    pub struct grantRoleCall {
15970        #[allow(missing_docs)]
15971        pub role: alloy::sol_types::private::FixedBytes<32>,
15972        #[allow(missing_docs)]
15973        pub account: alloy::sol_types::private::Address,
15974    }
15975    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
15976    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15977    #[derive(Clone)]
15978    pub struct grantRoleReturn {}
15979    #[allow(
15980        non_camel_case_types,
15981        non_snake_case,
15982        clippy::pub_underscore_fields,
15983        clippy::style
15984    )]
15985    const _: () = {
15986        use alloy::sol_types as alloy_sol_types;
15987        {
15988            #[doc(hidden)]
15989            #[allow(dead_code)]
15990            type UnderlyingSolTuple<'a> = (
15991                alloy::sol_types::sol_data::FixedBytes<32>,
15992                alloy::sol_types::sol_data::Address,
15993            );
15994            #[doc(hidden)]
15995            type UnderlyingRustTuple<'a> = (
15996                alloy::sol_types::private::FixedBytes<32>,
15997                alloy::sol_types::private::Address,
15998            );
15999            #[cfg(test)]
16000            #[allow(dead_code, unreachable_patterns)]
16001            fn _type_assertion(
16002                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16003            ) {
16004                match _t {
16005                    alloy_sol_types::private::AssertTypeEq::<
16006                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16007                    >(_) => {}
16008                }
16009            }
16010            #[automatically_derived]
16011            #[doc(hidden)]
16012            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
16013                fn from(value: grantRoleCall) -> Self {
16014                    (value.role, value.account)
16015                }
16016            }
16017            #[automatically_derived]
16018            #[doc(hidden)]
16019            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
16020                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16021                    Self {
16022                        role: tuple.0,
16023                        account: tuple.1,
16024                    }
16025                }
16026            }
16027        }
16028        {
16029            #[doc(hidden)]
16030            #[allow(dead_code)]
16031            type UnderlyingSolTuple<'a> = ();
16032            #[doc(hidden)]
16033            type UnderlyingRustTuple<'a> = ();
16034            #[cfg(test)]
16035            #[allow(dead_code, unreachable_patterns)]
16036            fn _type_assertion(
16037                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16038            ) {
16039                match _t {
16040                    alloy_sol_types::private::AssertTypeEq::<
16041                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16042                    >(_) => {}
16043                }
16044            }
16045            #[automatically_derived]
16046            #[doc(hidden)]
16047            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
16048                fn from(value: grantRoleReturn) -> Self {
16049                    ()
16050                }
16051            }
16052            #[automatically_derived]
16053            #[doc(hidden)]
16054            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
16055                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16056                    Self {}
16057                }
16058            }
16059        }
16060        impl grantRoleReturn {
16061            fn _tokenize(
16062                &self,
16063            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16064                ()
16065            }
16066        }
16067        #[automatically_derived]
16068        impl alloy_sol_types::SolCall for grantRoleCall {
16069            type Parameters<'a> = (
16070                alloy::sol_types::sol_data::FixedBytes<32>,
16071                alloy::sol_types::sol_data::Address,
16072            );
16073            type Token<'a> = <Self::Parameters<
16074                'a,
16075            > as alloy_sol_types::SolType>::Token<'a>;
16076            type Return = grantRoleReturn;
16077            type ReturnTuple<'a> = ();
16078            type ReturnToken<'a> = <Self::ReturnTuple<
16079                'a,
16080            > as alloy_sol_types::SolType>::Token<'a>;
16081            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
16082            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
16083            #[inline]
16084            fn new<'a>(
16085                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16086            ) -> Self {
16087                tuple.into()
16088            }
16089            #[inline]
16090            fn tokenize(&self) -> Self::Token<'_> {
16091                (
16092                    <alloy::sol_types::sol_data::FixedBytes<
16093                        32,
16094                    > as alloy_sol_types::SolType>::tokenize(&self.role),
16095                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16096                        &self.account,
16097                    ),
16098                )
16099            }
16100            #[inline]
16101            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16102                grantRoleReturn::_tokenize(ret)
16103            }
16104            #[inline]
16105            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16106                <Self::ReturnTuple<
16107                    '_,
16108                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16109                    .map(Into::into)
16110            }
16111            #[inline]
16112            fn abi_decode_returns_with_config(
16113                data: &[u8],
16114                config: alloy_sol_types::abi::AbiDecoderConfig,
16115            ) -> alloy_sol_types::Result<Self::Return> {
16116                <Self::ReturnTuple<
16117                    '_,
16118                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16119                        data,
16120                        config,
16121                    )
16122                    .map(Into::into)
16123            }
16124            #[inline]
16125            fn abi_decode_returns_validate(
16126                data: &[u8],
16127            ) -> alloy_sol_types::Result<Self::Return> {
16128                Self::abi_decode_returns_with_config(
16129                    data,
16130                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16131                )
16132            }
16133        }
16134    };
16135    #[derive(serde::Serialize, serde::Deserialize)]
16136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16137    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
16138```solidity
16139function hasRole(bytes32 role, address account) external view returns (bool);
16140```*/
16141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16142    #[derive(Clone)]
16143    pub struct hasRoleCall {
16144        #[allow(missing_docs)]
16145        pub role: alloy::sol_types::private::FixedBytes<32>,
16146        #[allow(missing_docs)]
16147        pub account: alloy::sol_types::private::Address,
16148    }
16149    #[derive(serde::Serialize, serde::Deserialize)]
16150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16151    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
16152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16153    #[derive(Clone)]
16154    pub struct hasRoleReturn {
16155        #[allow(missing_docs)]
16156        pub _0: bool,
16157    }
16158    #[allow(
16159        non_camel_case_types,
16160        non_snake_case,
16161        clippy::pub_underscore_fields,
16162        clippy::style
16163    )]
16164    const _: () = {
16165        use alloy::sol_types as alloy_sol_types;
16166        {
16167            #[doc(hidden)]
16168            #[allow(dead_code)]
16169            type UnderlyingSolTuple<'a> = (
16170                alloy::sol_types::sol_data::FixedBytes<32>,
16171                alloy::sol_types::sol_data::Address,
16172            );
16173            #[doc(hidden)]
16174            type UnderlyingRustTuple<'a> = (
16175                alloy::sol_types::private::FixedBytes<32>,
16176                alloy::sol_types::private::Address,
16177            );
16178            #[cfg(test)]
16179            #[allow(dead_code, unreachable_patterns)]
16180            fn _type_assertion(
16181                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16182            ) {
16183                match _t {
16184                    alloy_sol_types::private::AssertTypeEq::<
16185                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16186                    >(_) => {}
16187                }
16188            }
16189            #[automatically_derived]
16190            #[doc(hidden)]
16191            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
16192                fn from(value: hasRoleCall) -> Self {
16193                    (value.role, value.account)
16194                }
16195            }
16196            #[automatically_derived]
16197            #[doc(hidden)]
16198            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
16199                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16200                    Self {
16201                        role: tuple.0,
16202                        account: tuple.1,
16203                    }
16204                }
16205            }
16206        }
16207        {
16208            #[doc(hidden)]
16209            #[allow(dead_code)]
16210            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
16211            #[doc(hidden)]
16212            type UnderlyingRustTuple<'a> = (bool,);
16213            #[cfg(test)]
16214            #[allow(dead_code, unreachable_patterns)]
16215            fn _type_assertion(
16216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16217            ) {
16218                match _t {
16219                    alloy_sol_types::private::AssertTypeEq::<
16220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16221                    >(_) => {}
16222                }
16223            }
16224            #[automatically_derived]
16225            #[doc(hidden)]
16226            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
16227                fn from(value: hasRoleReturn) -> Self {
16228                    (value._0,)
16229                }
16230            }
16231            #[automatically_derived]
16232            #[doc(hidden)]
16233            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
16234                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16235                    Self { _0: tuple.0 }
16236                }
16237            }
16238        }
16239        #[automatically_derived]
16240        impl alloy_sol_types::SolCall for hasRoleCall {
16241            type Parameters<'a> = (
16242                alloy::sol_types::sol_data::FixedBytes<32>,
16243                alloy::sol_types::sol_data::Address,
16244            );
16245            type Token<'a> = <Self::Parameters<
16246                'a,
16247            > as alloy_sol_types::SolType>::Token<'a>;
16248            type Return = bool;
16249            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
16250            type ReturnToken<'a> = <Self::ReturnTuple<
16251                'a,
16252            > as alloy_sol_types::SolType>::Token<'a>;
16253            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
16254            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
16255            #[inline]
16256            fn new<'a>(
16257                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16258            ) -> Self {
16259                tuple.into()
16260            }
16261            #[inline]
16262            fn tokenize(&self) -> Self::Token<'_> {
16263                (
16264                    <alloy::sol_types::sol_data::FixedBytes<
16265                        32,
16266                    > as alloy_sol_types::SolType>::tokenize(&self.role),
16267                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16268                        &self.account,
16269                    ),
16270                )
16271            }
16272            #[inline]
16273            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16274                (
16275                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
16276                        ret,
16277                    ),
16278                )
16279            }
16280            #[inline]
16281            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16282                <Self::ReturnTuple<
16283                    '_,
16284                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16285                    .map(|r| {
16286                        let r: hasRoleReturn = r.into();
16287                        r._0
16288                    })
16289            }
16290            #[inline]
16291            fn abi_decode_returns_with_config(
16292                data: &[u8],
16293                config: alloy_sol_types::abi::AbiDecoderConfig,
16294            ) -> alloy_sol_types::Result<Self::Return> {
16295                <Self::ReturnTuple<
16296                    '_,
16297                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16298                        data,
16299                        config,
16300                    )
16301                    .map(|r| {
16302                        let r: hasRoleReturn = r.into();
16303                        r._0
16304                    })
16305            }
16306            #[inline]
16307            fn abi_decode_returns_validate(
16308                data: &[u8],
16309            ) -> alloy_sol_types::Result<Self::Return> {
16310                Self::abi_decode_returns_with_config(
16311                    data,
16312                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16313                )
16314            }
16315        }
16316    };
16317    #[derive(serde::Serialize, serde::Deserialize)]
16318    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16319    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
16320```solidity
16321function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
16322```*/
16323    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16324    #[derive(Clone)]
16325    pub struct initializeCall {
16326        #[allow(missing_docs)]
16327        pub _tokenAddress: alloy::sol_types::private::Address,
16328        #[allow(missing_docs)]
16329        pub _lightClientAddress: alloy::sol_types::private::Address,
16330        #[allow(missing_docs)]
16331        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
16332        #[allow(missing_docs)]
16333        pub _timelock: alloy::sol_types::private::Address,
16334    }
16335    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
16336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16337    #[derive(Clone)]
16338    pub struct initializeReturn {}
16339    #[allow(
16340        non_camel_case_types,
16341        non_snake_case,
16342        clippy::pub_underscore_fields,
16343        clippy::style
16344    )]
16345    const _: () = {
16346        use alloy::sol_types as alloy_sol_types;
16347        {
16348            #[doc(hidden)]
16349            #[allow(dead_code)]
16350            type UnderlyingSolTuple<'a> = (
16351                alloy::sol_types::sol_data::Address,
16352                alloy::sol_types::sol_data::Address,
16353                alloy::sol_types::sol_data::Uint<256>,
16354                alloy::sol_types::sol_data::Address,
16355            );
16356            #[doc(hidden)]
16357            type UnderlyingRustTuple<'a> = (
16358                alloy::sol_types::private::Address,
16359                alloy::sol_types::private::Address,
16360                alloy::sol_types::private::primitives::aliases::U256,
16361                alloy::sol_types::private::Address,
16362            );
16363            #[cfg(test)]
16364            #[allow(dead_code, unreachable_patterns)]
16365            fn _type_assertion(
16366                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16367            ) {
16368                match _t {
16369                    alloy_sol_types::private::AssertTypeEq::<
16370                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16371                    >(_) => {}
16372                }
16373            }
16374            #[automatically_derived]
16375            #[doc(hidden)]
16376            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
16377                fn from(value: initializeCall) -> Self {
16378                    (
16379                        value._tokenAddress,
16380                        value._lightClientAddress,
16381                        value._exitEscrowPeriod,
16382                        value._timelock,
16383                    )
16384                }
16385            }
16386            #[automatically_derived]
16387            #[doc(hidden)]
16388            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
16389                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16390                    Self {
16391                        _tokenAddress: tuple.0,
16392                        _lightClientAddress: tuple.1,
16393                        _exitEscrowPeriod: tuple.2,
16394                        _timelock: tuple.3,
16395                    }
16396                }
16397            }
16398        }
16399        {
16400            #[doc(hidden)]
16401            #[allow(dead_code)]
16402            type UnderlyingSolTuple<'a> = ();
16403            #[doc(hidden)]
16404            type UnderlyingRustTuple<'a> = ();
16405            #[cfg(test)]
16406            #[allow(dead_code, unreachable_patterns)]
16407            fn _type_assertion(
16408                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16409            ) {
16410                match _t {
16411                    alloy_sol_types::private::AssertTypeEq::<
16412                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16413                    >(_) => {}
16414                }
16415            }
16416            #[automatically_derived]
16417            #[doc(hidden)]
16418            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
16419                fn from(value: initializeReturn) -> Self {
16420                    ()
16421                }
16422            }
16423            #[automatically_derived]
16424            #[doc(hidden)]
16425            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
16426                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16427                    Self {}
16428                }
16429            }
16430        }
16431        impl initializeReturn {
16432            fn _tokenize(
16433                &self,
16434            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16435                ()
16436            }
16437        }
16438        #[automatically_derived]
16439        impl alloy_sol_types::SolCall for initializeCall {
16440            type Parameters<'a> = (
16441                alloy::sol_types::sol_data::Address,
16442                alloy::sol_types::sol_data::Address,
16443                alloy::sol_types::sol_data::Uint<256>,
16444                alloy::sol_types::sol_data::Address,
16445            );
16446            type Token<'a> = <Self::Parameters<
16447                'a,
16448            > as alloy_sol_types::SolType>::Token<'a>;
16449            type Return = initializeReturn;
16450            type ReturnTuple<'a> = ();
16451            type ReturnToken<'a> = <Self::ReturnTuple<
16452                'a,
16453            > as alloy_sol_types::SolType>::Token<'a>;
16454            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
16455            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
16456            #[inline]
16457            fn new<'a>(
16458                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16459            ) -> Self {
16460                tuple.into()
16461            }
16462            #[inline]
16463            fn tokenize(&self) -> Self::Token<'_> {
16464                (
16465                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16466                        &self._tokenAddress,
16467                    ),
16468                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16469                        &self._lightClientAddress,
16470                    ),
16471                    <alloy::sol_types::sol_data::Uint<
16472                        256,
16473                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
16474                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16475                        &self._timelock,
16476                    ),
16477                )
16478            }
16479            #[inline]
16480            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16481                initializeReturn::_tokenize(ret)
16482            }
16483            #[inline]
16484            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16485                <Self::ReturnTuple<
16486                    '_,
16487                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16488                    .map(Into::into)
16489            }
16490            #[inline]
16491            fn abi_decode_returns_with_config(
16492                data: &[u8],
16493                config: alloy_sol_types::abi::AbiDecoderConfig,
16494            ) -> alloy_sol_types::Result<Self::Return> {
16495                <Self::ReturnTuple<
16496                    '_,
16497                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16498                        data,
16499                        config,
16500                    )
16501                    .map(Into::into)
16502            }
16503            #[inline]
16504            fn abi_decode_returns_validate(
16505                data: &[u8],
16506            ) -> alloy_sol_types::Result<Self::Return> {
16507                Self::abi_decode_returns_with_config(
16508                    data,
16509                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16510                )
16511            }
16512        }
16513    };
16514    #[derive(serde::Serialize, serde::Deserialize)]
16515    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16516    /**Function with signature `initializeV2(address,address,uint256,(address,uint16)[])` and selector `0x52780b6e`.
16517```solidity
16518function initializeV2(address pauser, address admin, uint256 initialActiveStake, StakeTableV2.InitialCommission[] memory initialCommissions) external;
16519```*/
16520    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16521    #[derive(Clone)]
16522    pub struct initializeV2Call {
16523        #[allow(missing_docs)]
16524        pub pauser: alloy::sol_types::private::Address,
16525        #[allow(missing_docs)]
16526        pub admin: alloy::sol_types::private::Address,
16527        #[allow(missing_docs)]
16528        pub initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
16529        #[allow(missing_docs)]
16530        pub initialCommissions: alloy::sol_types::private::Vec<
16531            <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
16532        >,
16533    }
16534    ///Container type for the return parameters of the [`initializeV2(address,address,uint256,(address,uint16)[])`](initializeV2Call) function.
16535    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16536    #[derive(Clone)]
16537    pub struct initializeV2Return {}
16538    #[allow(
16539        non_camel_case_types,
16540        non_snake_case,
16541        clippy::pub_underscore_fields,
16542        clippy::style
16543    )]
16544    const _: () = {
16545        use alloy::sol_types as alloy_sol_types;
16546        {
16547            #[doc(hidden)]
16548            #[allow(dead_code)]
16549            type UnderlyingSolTuple<'a> = (
16550                alloy::sol_types::sol_data::Address,
16551                alloy::sol_types::sol_data::Address,
16552                alloy::sol_types::sol_data::Uint<256>,
16553                alloy::sol_types::sol_data::Array<StakeTableV2::InitialCommission>,
16554            );
16555            #[doc(hidden)]
16556            type UnderlyingRustTuple<'a> = (
16557                alloy::sol_types::private::Address,
16558                alloy::sol_types::private::Address,
16559                alloy::sol_types::private::primitives::aliases::U256,
16560                alloy::sol_types::private::Vec<
16561                    <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
16562                >,
16563            );
16564            #[cfg(test)]
16565            #[allow(dead_code, unreachable_patterns)]
16566            fn _type_assertion(
16567                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16568            ) {
16569                match _t {
16570                    alloy_sol_types::private::AssertTypeEq::<
16571                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16572                    >(_) => {}
16573                }
16574            }
16575            #[automatically_derived]
16576            #[doc(hidden)]
16577            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
16578                fn from(value: initializeV2Call) -> Self {
16579                    (
16580                        value.pauser,
16581                        value.admin,
16582                        value.initialActiveStake,
16583                        value.initialCommissions,
16584                    )
16585                }
16586            }
16587            #[automatically_derived]
16588            #[doc(hidden)]
16589            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
16590                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16591                    Self {
16592                        pauser: tuple.0,
16593                        admin: tuple.1,
16594                        initialActiveStake: tuple.2,
16595                        initialCommissions: tuple.3,
16596                    }
16597                }
16598            }
16599        }
16600        {
16601            #[doc(hidden)]
16602            #[allow(dead_code)]
16603            type UnderlyingSolTuple<'a> = ();
16604            #[doc(hidden)]
16605            type UnderlyingRustTuple<'a> = ();
16606            #[cfg(test)]
16607            #[allow(dead_code, unreachable_patterns)]
16608            fn _type_assertion(
16609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16610            ) {
16611                match _t {
16612                    alloy_sol_types::private::AssertTypeEq::<
16613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16614                    >(_) => {}
16615                }
16616            }
16617            #[automatically_derived]
16618            #[doc(hidden)]
16619            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
16620                fn from(value: initializeV2Return) -> Self {
16621                    ()
16622                }
16623            }
16624            #[automatically_derived]
16625            #[doc(hidden)]
16626            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
16627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16628                    Self {}
16629                }
16630            }
16631        }
16632        impl initializeV2Return {
16633            fn _tokenize(
16634                &self,
16635            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
16636                ()
16637            }
16638        }
16639        #[automatically_derived]
16640        impl alloy_sol_types::SolCall for initializeV2Call {
16641            type Parameters<'a> = (
16642                alloy::sol_types::sol_data::Address,
16643                alloy::sol_types::sol_data::Address,
16644                alloy::sol_types::sol_data::Uint<256>,
16645                alloy::sol_types::sol_data::Array<StakeTableV2::InitialCommission>,
16646            );
16647            type Token<'a> = <Self::Parameters<
16648                'a,
16649            > as alloy_sol_types::SolType>::Token<'a>;
16650            type Return = initializeV2Return;
16651            type ReturnTuple<'a> = ();
16652            type ReturnToken<'a> = <Self::ReturnTuple<
16653                'a,
16654            > as alloy_sol_types::SolType>::Token<'a>;
16655            const SIGNATURE: &'static str = "initializeV2(address,address,uint256,(address,uint16)[])";
16656            const SELECTOR: [u8; 4] = [82u8, 120u8, 11u8, 110u8];
16657            #[inline]
16658            fn new<'a>(
16659                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16660            ) -> Self {
16661                tuple.into()
16662            }
16663            #[inline]
16664            fn tokenize(&self) -> Self::Token<'_> {
16665                (
16666                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16667                        &self.pauser,
16668                    ),
16669                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16670                        &self.admin,
16671                    ),
16672                    <alloy::sol_types::sol_data::Uint<
16673                        256,
16674                    > as alloy_sol_types::SolType>::tokenize(&self.initialActiveStake),
16675                    <alloy::sol_types::sol_data::Array<
16676                        StakeTableV2::InitialCommission,
16677                    > as alloy_sol_types::SolType>::tokenize(&self.initialCommissions),
16678                )
16679            }
16680            #[inline]
16681            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16682                initializeV2Return::_tokenize(ret)
16683            }
16684            #[inline]
16685            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16686                <Self::ReturnTuple<
16687                    '_,
16688                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16689                    .map(Into::into)
16690            }
16691            #[inline]
16692            fn abi_decode_returns_with_config(
16693                data: &[u8],
16694                config: alloy_sol_types::abi::AbiDecoderConfig,
16695            ) -> alloy_sol_types::Result<Self::Return> {
16696                <Self::ReturnTuple<
16697                    '_,
16698                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16699                        data,
16700                        config,
16701                    )
16702                    .map(Into::into)
16703            }
16704            #[inline]
16705            fn abi_decode_returns_validate(
16706                data: &[u8],
16707            ) -> alloy_sol_types::Result<Self::Return> {
16708                Self::abi_decode_returns_with_config(
16709                    data,
16710                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16711                )
16712            }
16713        }
16714    };
16715    #[derive(serde::Serialize, serde::Deserialize)]
16716    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16717    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
16718```solidity
16719function initializeV3() external;
16720```*/
16721    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16722    #[derive(Clone)]
16723    pub struct initializeV3Call;
16724    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
16725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16726    #[derive(Clone)]
16727    pub struct initializeV3Return {}
16728    #[allow(
16729        non_camel_case_types,
16730        non_snake_case,
16731        clippy::pub_underscore_fields,
16732        clippy::style
16733    )]
16734    const _: () = {
16735        use alloy::sol_types as alloy_sol_types;
16736        {
16737            #[doc(hidden)]
16738            #[allow(dead_code)]
16739            type UnderlyingSolTuple<'a> = ();
16740            #[doc(hidden)]
16741            type UnderlyingRustTuple<'a> = ();
16742            #[cfg(test)]
16743            #[allow(dead_code, unreachable_patterns)]
16744            fn _type_assertion(
16745                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16746            ) {
16747                match _t {
16748                    alloy_sol_types::private::AssertTypeEq::<
16749                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16750                    >(_) => {}
16751                }
16752            }
16753            #[automatically_derived]
16754            #[doc(hidden)]
16755            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
16756                fn from(value: initializeV3Call) -> Self {
16757                    ()
16758                }
16759            }
16760            #[automatically_derived]
16761            #[doc(hidden)]
16762            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
16763                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16764                    Self
16765                }
16766            }
16767        }
16768        {
16769            #[doc(hidden)]
16770            #[allow(dead_code)]
16771            type UnderlyingSolTuple<'a> = ();
16772            #[doc(hidden)]
16773            type UnderlyingRustTuple<'a> = ();
16774            #[cfg(test)]
16775            #[allow(dead_code, unreachable_patterns)]
16776            fn _type_assertion(
16777                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16778            ) {
16779                match _t {
16780                    alloy_sol_types::private::AssertTypeEq::<
16781                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16782                    >(_) => {}
16783                }
16784            }
16785            #[automatically_derived]
16786            #[doc(hidden)]
16787            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
16788                fn from(value: initializeV3Return) -> Self {
16789                    ()
16790                }
16791            }
16792            #[automatically_derived]
16793            #[doc(hidden)]
16794            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
16795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16796                    Self {}
16797                }
16798            }
16799        }
16800        impl initializeV3Return {
16801            fn _tokenize(
16802                &self,
16803            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
16804                ()
16805            }
16806        }
16807        #[automatically_derived]
16808        impl alloy_sol_types::SolCall for initializeV3Call {
16809            type Parameters<'a> = ();
16810            type Token<'a> = <Self::Parameters<
16811                'a,
16812            > as alloy_sol_types::SolType>::Token<'a>;
16813            type Return = initializeV3Return;
16814            type ReturnTuple<'a> = ();
16815            type ReturnToken<'a> = <Self::ReturnTuple<
16816                'a,
16817            > as alloy_sol_types::SolType>::Token<'a>;
16818            const SIGNATURE: &'static str = "initializeV3()";
16819            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
16820            #[inline]
16821            fn new<'a>(
16822                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16823            ) -> Self {
16824                tuple.into()
16825            }
16826            #[inline]
16827            fn tokenize(&self) -> Self::Token<'_> {
16828                ()
16829            }
16830            #[inline]
16831            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16832                initializeV3Return::_tokenize(ret)
16833            }
16834            #[inline]
16835            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16836                <Self::ReturnTuple<
16837                    '_,
16838                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16839                    .map(Into::into)
16840            }
16841            #[inline]
16842            fn abi_decode_returns_with_config(
16843                data: &[u8],
16844                config: alloy_sol_types::abi::AbiDecoderConfig,
16845            ) -> alloy_sol_types::Result<Self::Return> {
16846                <Self::ReturnTuple<
16847                    '_,
16848                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16849                        data,
16850                        config,
16851                    )
16852                    .map(Into::into)
16853            }
16854            #[inline]
16855            fn abi_decode_returns_validate(
16856                data: &[u8],
16857            ) -> alloy_sol_types::Result<Self::Return> {
16858                Self::abi_decode_returns_with_config(
16859                    data,
16860                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16861                )
16862            }
16863        }
16864    };
16865    #[derive(serde::Serialize, serde::Deserialize)]
16866    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16867    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
16868```solidity
16869function initializedAtBlock() external view returns (uint256);
16870```*/
16871    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16872    #[derive(Clone)]
16873    pub struct initializedAtBlockCall;
16874    #[derive(serde::Serialize, serde::Deserialize)]
16875    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16876    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
16877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16878    #[derive(Clone)]
16879    pub struct initializedAtBlockReturn {
16880        #[allow(missing_docs)]
16881        pub _0: alloy::sol_types::private::primitives::aliases::U256,
16882    }
16883    #[allow(
16884        non_camel_case_types,
16885        non_snake_case,
16886        clippy::pub_underscore_fields,
16887        clippy::style
16888    )]
16889    const _: () = {
16890        use alloy::sol_types as alloy_sol_types;
16891        {
16892            #[doc(hidden)]
16893            #[allow(dead_code)]
16894            type UnderlyingSolTuple<'a> = ();
16895            #[doc(hidden)]
16896            type UnderlyingRustTuple<'a> = ();
16897            #[cfg(test)]
16898            #[allow(dead_code, unreachable_patterns)]
16899            fn _type_assertion(
16900                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16901            ) {
16902                match _t {
16903                    alloy_sol_types::private::AssertTypeEq::<
16904                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16905                    >(_) => {}
16906                }
16907            }
16908            #[automatically_derived]
16909            #[doc(hidden)]
16910            impl ::core::convert::From<initializedAtBlockCall>
16911            for UnderlyingRustTuple<'_> {
16912                fn from(value: initializedAtBlockCall) -> Self {
16913                    ()
16914                }
16915            }
16916            #[automatically_derived]
16917            #[doc(hidden)]
16918            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16919            for initializedAtBlockCall {
16920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16921                    Self
16922                }
16923            }
16924        }
16925        {
16926            #[doc(hidden)]
16927            #[allow(dead_code)]
16928            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16929            #[doc(hidden)]
16930            type UnderlyingRustTuple<'a> = (
16931                alloy::sol_types::private::primitives::aliases::U256,
16932            );
16933            #[cfg(test)]
16934            #[allow(dead_code, unreachable_patterns)]
16935            fn _type_assertion(
16936                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16937            ) {
16938                match _t {
16939                    alloy_sol_types::private::AssertTypeEq::<
16940                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16941                    >(_) => {}
16942                }
16943            }
16944            #[automatically_derived]
16945            #[doc(hidden)]
16946            impl ::core::convert::From<initializedAtBlockReturn>
16947            for UnderlyingRustTuple<'_> {
16948                fn from(value: initializedAtBlockReturn) -> Self {
16949                    (value._0,)
16950                }
16951            }
16952            #[automatically_derived]
16953            #[doc(hidden)]
16954            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16955            for initializedAtBlockReturn {
16956                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16957                    Self { _0: tuple.0 }
16958                }
16959            }
16960        }
16961        #[automatically_derived]
16962        impl alloy_sol_types::SolCall for initializedAtBlockCall {
16963            type Parameters<'a> = ();
16964            type Token<'a> = <Self::Parameters<
16965                'a,
16966            > as alloy_sol_types::SolType>::Token<'a>;
16967            type Return = alloy::sol_types::private::primitives::aliases::U256;
16968            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16969            type ReturnToken<'a> = <Self::ReturnTuple<
16970                'a,
16971            > as alloy_sol_types::SolType>::Token<'a>;
16972            const SIGNATURE: &'static str = "initializedAtBlock()";
16973            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
16974            #[inline]
16975            fn new<'a>(
16976                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16977            ) -> Self {
16978                tuple.into()
16979            }
16980            #[inline]
16981            fn tokenize(&self) -> Self::Token<'_> {
16982                ()
16983            }
16984            #[inline]
16985            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16986                (
16987                    <alloy::sol_types::sol_data::Uint<
16988                        256,
16989                    > as alloy_sol_types::SolType>::tokenize(ret),
16990                )
16991            }
16992            #[inline]
16993            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16994                <Self::ReturnTuple<
16995                    '_,
16996                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16997                    .map(|r| {
16998                        let r: initializedAtBlockReturn = r.into();
16999                        r._0
17000                    })
17001            }
17002            #[inline]
17003            fn abi_decode_returns_with_config(
17004                data: &[u8],
17005                config: alloy_sol_types::abi::AbiDecoderConfig,
17006            ) -> alloy_sol_types::Result<Self::Return> {
17007                <Self::ReturnTuple<
17008                    '_,
17009                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17010                        data,
17011                        config,
17012                    )
17013                    .map(|r| {
17014                        let r: initializedAtBlockReturn = r.into();
17015                        r._0
17016                    })
17017            }
17018            #[inline]
17019            fn abi_decode_returns_validate(
17020                data: &[u8],
17021            ) -> alloy_sol_types::Result<Self::Return> {
17022                Self::abi_decode_returns_with_config(
17023                    data,
17024                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17025                )
17026            }
17027        }
17028    };
17029    #[derive(serde::Serialize, serde::Deserialize)]
17030    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17031    /**Function with signature `lightClient()` and selector `0xb5700e68`.
17032```solidity
17033function lightClient() external view returns (address);
17034```*/
17035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17036    #[derive(Clone)]
17037    pub struct lightClientCall;
17038    #[derive(serde::Serialize, serde::Deserialize)]
17039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17040    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
17041    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17042    #[derive(Clone)]
17043    pub struct lightClientReturn {
17044        #[allow(missing_docs)]
17045        pub _0: alloy::sol_types::private::Address,
17046    }
17047    #[allow(
17048        non_camel_case_types,
17049        non_snake_case,
17050        clippy::pub_underscore_fields,
17051        clippy::style
17052    )]
17053    const _: () = {
17054        use alloy::sol_types as alloy_sol_types;
17055        {
17056            #[doc(hidden)]
17057            #[allow(dead_code)]
17058            type UnderlyingSolTuple<'a> = ();
17059            #[doc(hidden)]
17060            type UnderlyingRustTuple<'a> = ();
17061            #[cfg(test)]
17062            #[allow(dead_code, unreachable_patterns)]
17063            fn _type_assertion(
17064                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17065            ) {
17066                match _t {
17067                    alloy_sol_types::private::AssertTypeEq::<
17068                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17069                    >(_) => {}
17070                }
17071            }
17072            #[automatically_derived]
17073            #[doc(hidden)]
17074            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
17075                fn from(value: lightClientCall) -> Self {
17076                    ()
17077                }
17078            }
17079            #[automatically_derived]
17080            #[doc(hidden)]
17081            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
17082                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17083                    Self
17084                }
17085            }
17086        }
17087        {
17088            #[doc(hidden)]
17089            #[allow(dead_code)]
17090            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17091            #[doc(hidden)]
17092            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17093            #[cfg(test)]
17094            #[allow(dead_code, unreachable_patterns)]
17095            fn _type_assertion(
17096                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17097            ) {
17098                match _t {
17099                    alloy_sol_types::private::AssertTypeEq::<
17100                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17101                    >(_) => {}
17102                }
17103            }
17104            #[automatically_derived]
17105            #[doc(hidden)]
17106            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
17107                fn from(value: lightClientReturn) -> Self {
17108                    (value._0,)
17109                }
17110            }
17111            #[automatically_derived]
17112            #[doc(hidden)]
17113            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
17114                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17115                    Self { _0: tuple.0 }
17116                }
17117            }
17118        }
17119        #[automatically_derived]
17120        impl alloy_sol_types::SolCall for lightClientCall {
17121            type Parameters<'a> = ();
17122            type Token<'a> = <Self::Parameters<
17123                'a,
17124            > as alloy_sol_types::SolType>::Token<'a>;
17125            type Return = alloy::sol_types::private::Address;
17126            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
17127            type ReturnToken<'a> = <Self::ReturnTuple<
17128                'a,
17129            > as alloy_sol_types::SolType>::Token<'a>;
17130            const SIGNATURE: &'static str = "lightClient()";
17131            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
17132            #[inline]
17133            fn new<'a>(
17134                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17135            ) -> Self {
17136                tuple.into()
17137            }
17138            #[inline]
17139            fn tokenize(&self) -> Self::Token<'_> {
17140                ()
17141            }
17142            #[inline]
17143            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17144                (
17145                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17146                        ret,
17147                    ),
17148                )
17149            }
17150            #[inline]
17151            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17152                <Self::ReturnTuple<
17153                    '_,
17154                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17155                    .map(|r| {
17156                        let r: lightClientReturn = r.into();
17157                        r._0
17158                    })
17159            }
17160            #[inline]
17161            fn abi_decode_returns_with_config(
17162                data: &[u8],
17163                config: alloy_sol_types::abi::AbiDecoderConfig,
17164            ) -> alloy_sol_types::Result<Self::Return> {
17165                <Self::ReturnTuple<
17166                    '_,
17167                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17168                        data,
17169                        config,
17170                    )
17171                    .map(|r| {
17172                        let r: lightClientReturn = r.into();
17173                        r._0
17174                    })
17175            }
17176            #[inline]
17177            fn abi_decode_returns_validate(
17178                data: &[u8],
17179            ) -> alloy_sol_types::Result<Self::Return> {
17180                Self::abi_decode_returns_with_config(
17181                    data,
17182                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17183                )
17184            }
17185        }
17186    };
17187    #[derive(serde::Serialize, serde::Deserialize)]
17188    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17189    /**Function with signature `maxCommissionIncrease()` and selector `0x3f3bb366`.
17190```solidity
17191function maxCommissionIncrease() external view returns (uint16);
17192```*/
17193    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17194    #[derive(Clone)]
17195    pub struct maxCommissionIncreaseCall;
17196    #[derive(serde::Serialize, serde::Deserialize)]
17197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17198    ///Container type for the return parameters of the [`maxCommissionIncrease()`](maxCommissionIncreaseCall) function.
17199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17200    #[derive(Clone)]
17201    pub struct maxCommissionIncreaseReturn {
17202        #[allow(missing_docs)]
17203        pub _0: u16,
17204    }
17205    #[allow(
17206        non_camel_case_types,
17207        non_snake_case,
17208        clippy::pub_underscore_fields,
17209        clippy::style
17210    )]
17211    const _: () = {
17212        use alloy::sol_types as alloy_sol_types;
17213        {
17214            #[doc(hidden)]
17215            #[allow(dead_code)]
17216            type UnderlyingSolTuple<'a> = ();
17217            #[doc(hidden)]
17218            type UnderlyingRustTuple<'a> = ();
17219            #[cfg(test)]
17220            #[allow(dead_code, unreachable_patterns)]
17221            fn _type_assertion(
17222                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17223            ) {
17224                match _t {
17225                    alloy_sol_types::private::AssertTypeEq::<
17226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17227                    >(_) => {}
17228                }
17229            }
17230            #[automatically_derived]
17231            #[doc(hidden)]
17232            impl ::core::convert::From<maxCommissionIncreaseCall>
17233            for UnderlyingRustTuple<'_> {
17234                fn from(value: maxCommissionIncreaseCall) -> Self {
17235                    ()
17236                }
17237            }
17238            #[automatically_derived]
17239            #[doc(hidden)]
17240            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17241            for maxCommissionIncreaseCall {
17242                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17243                    Self
17244                }
17245            }
17246        }
17247        {
17248            #[doc(hidden)]
17249            #[allow(dead_code)]
17250            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17251            #[doc(hidden)]
17252            type UnderlyingRustTuple<'a> = (u16,);
17253            #[cfg(test)]
17254            #[allow(dead_code, unreachable_patterns)]
17255            fn _type_assertion(
17256                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17257            ) {
17258                match _t {
17259                    alloy_sol_types::private::AssertTypeEq::<
17260                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17261                    >(_) => {}
17262                }
17263            }
17264            #[automatically_derived]
17265            #[doc(hidden)]
17266            impl ::core::convert::From<maxCommissionIncreaseReturn>
17267            for UnderlyingRustTuple<'_> {
17268                fn from(value: maxCommissionIncreaseReturn) -> Self {
17269                    (value._0,)
17270                }
17271            }
17272            #[automatically_derived]
17273            #[doc(hidden)]
17274            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17275            for maxCommissionIncreaseReturn {
17276                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17277                    Self { _0: tuple.0 }
17278                }
17279            }
17280        }
17281        #[automatically_derived]
17282        impl alloy_sol_types::SolCall for maxCommissionIncreaseCall {
17283            type Parameters<'a> = ();
17284            type Token<'a> = <Self::Parameters<
17285                'a,
17286            > as alloy_sol_types::SolType>::Token<'a>;
17287            type Return = u16;
17288            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17289            type ReturnToken<'a> = <Self::ReturnTuple<
17290                'a,
17291            > as alloy_sol_types::SolType>::Token<'a>;
17292            const SIGNATURE: &'static str = "maxCommissionIncrease()";
17293            const SELECTOR: [u8; 4] = [63u8, 59u8, 179u8, 102u8];
17294            #[inline]
17295            fn new<'a>(
17296                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17297            ) -> Self {
17298                tuple.into()
17299            }
17300            #[inline]
17301            fn tokenize(&self) -> Self::Token<'_> {
17302                ()
17303            }
17304            #[inline]
17305            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17306                (
17307                    <alloy::sol_types::sol_data::Uint<
17308                        16,
17309                    > as alloy_sol_types::SolType>::tokenize(ret),
17310                )
17311            }
17312            #[inline]
17313            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17314                <Self::ReturnTuple<
17315                    '_,
17316                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17317                    .map(|r| {
17318                        let r: maxCommissionIncreaseReturn = r.into();
17319                        r._0
17320                    })
17321            }
17322            #[inline]
17323            fn abi_decode_returns_with_config(
17324                data: &[u8],
17325                config: alloy_sol_types::abi::AbiDecoderConfig,
17326            ) -> alloy_sol_types::Result<Self::Return> {
17327                <Self::ReturnTuple<
17328                    '_,
17329                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17330                        data,
17331                        config,
17332                    )
17333                    .map(|r| {
17334                        let r: maxCommissionIncreaseReturn = r.into();
17335                        r._0
17336                    })
17337            }
17338            #[inline]
17339            fn abi_decode_returns_validate(
17340                data: &[u8],
17341            ) -> alloy_sol_types::Result<Self::Return> {
17342                Self::abi_decode_returns_with_config(
17343                    data,
17344                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17345                )
17346            }
17347        }
17348    };
17349    #[derive(serde::Serialize, serde::Deserialize)]
17350    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17351    /**Function with signature `minCommissionIncreaseInterval()` and selector `0xd9cc7d26`.
17352```solidity
17353function minCommissionIncreaseInterval() external view returns (uint256);
17354```*/
17355    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17356    #[derive(Clone)]
17357    pub struct minCommissionIncreaseIntervalCall;
17358    #[derive(serde::Serialize, serde::Deserialize)]
17359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17360    ///Container type for the return parameters of the [`minCommissionIncreaseInterval()`](minCommissionIncreaseIntervalCall) function.
17361    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17362    #[derive(Clone)]
17363    pub struct minCommissionIncreaseIntervalReturn {
17364        #[allow(missing_docs)]
17365        pub _0: alloy::sol_types::private::primitives::aliases::U256,
17366    }
17367    #[allow(
17368        non_camel_case_types,
17369        non_snake_case,
17370        clippy::pub_underscore_fields,
17371        clippy::style
17372    )]
17373    const _: () = {
17374        use alloy::sol_types as alloy_sol_types;
17375        {
17376            #[doc(hidden)]
17377            #[allow(dead_code)]
17378            type UnderlyingSolTuple<'a> = ();
17379            #[doc(hidden)]
17380            type UnderlyingRustTuple<'a> = ();
17381            #[cfg(test)]
17382            #[allow(dead_code, unreachable_patterns)]
17383            fn _type_assertion(
17384                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17385            ) {
17386                match _t {
17387                    alloy_sol_types::private::AssertTypeEq::<
17388                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17389                    >(_) => {}
17390                }
17391            }
17392            #[automatically_derived]
17393            #[doc(hidden)]
17394            impl ::core::convert::From<minCommissionIncreaseIntervalCall>
17395            for UnderlyingRustTuple<'_> {
17396                fn from(value: minCommissionIncreaseIntervalCall) -> Self {
17397                    ()
17398                }
17399            }
17400            #[automatically_derived]
17401            #[doc(hidden)]
17402            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17403            for minCommissionIncreaseIntervalCall {
17404                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17405                    Self
17406                }
17407            }
17408        }
17409        {
17410            #[doc(hidden)]
17411            #[allow(dead_code)]
17412            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17413            #[doc(hidden)]
17414            type UnderlyingRustTuple<'a> = (
17415                alloy::sol_types::private::primitives::aliases::U256,
17416            );
17417            #[cfg(test)]
17418            #[allow(dead_code, unreachable_patterns)]
17419            fn _type_assertion(
17420                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17421            ) {
17422                match _t {
17423                    alloy_sol_types::private::AssertTypeEq::<
17424                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17425                    >(_) => {}
17426                }
17427            }
17428            #[automatically_derived]
17429            #[doc(hidden)]
17430            impl ::core::convert::From<minCommissionIncreaseIntervalReturn>
17431            for UnderlyingRustTuple<'_> {
17432                fn from(value: minCommissionIncreaseIntervalReturn) -> Self {
17433                    (value._0,)
17434                }
17435            }
17436            #[automatically_derived]
17437            #[doc(hidden)]
17438            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17439            for minCommissionIncreaseIntervalReturn {
17440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17441                    Self { _0: tuple.0 }
17442                }
17443            }
17444        }
17445        #[automatically_derived]
17446        impl alloy_sol_types::SolCall for minCommissionIncreaseIntervalCall {
17447            type Parameters<'a> = ();
17448            type Token<'a> = <Self::Parameters<
17449                'a,
17450            > as alloy_sol_types::SolType>::Token<'a>;
17451            type Return = alloy::sol_types::private::primitives::aliases::U256;
17452            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17453            type ReturnToken<'a> = <Self::ReturnTuple<
17454                'a,
17455            > as alloy_sol_types::SolType>::Token<'a>;
17456            const SIGNATURE: &'static str = "minCommissionIncreaseInterval()";
17457            const SELECTOR: [u8; 4] = [217u8, 204u8, 125u8, 38u8];
17458            #[inline]
17459            fn new<'a>(
17460                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17461            ) -> Self {
17462                tuple.into()
17463            }
17464            #[inline]
17465            fn tokenize(&self) -> Self::Token<'_> {
17466                ()
17467            }
17468            #[inline]
17469            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17470                (
17471                    <alloy::sol_types::sol_data::Uint<
17472                        256,
17473                    > as alloy_sol_types::SolType>::tokenize(ret),
17474                )
17475            }
17476            #[inline]
17477            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17478                <Self::ReturnTuple<
17479                    '_,
17480                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17481                    .map(|r| {
17482                        let r: minCommissionIncreaseIntervalReturn = r.into();
17483                        r._0
17484                    })
17485            }
17486            #[inline]
17487            fn abi_decode_returns_with_config(
17488                data: &[u8],
17489                config: alloy_sol_types::abi::AbiDecoderConfig,
17490            ) -> alloy_sol_types::Result<Self::Return> {
17491                <Self::ReturnTuple<
17492                    '_,
17493                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17494                        data,
17495                        config,
17496                    )
17497                    .map(|r| {
17498                        let r: minCommissionIncreaseIntervalReturn = r.into();
17499                        r._0
17500                    })
17501            }
17502            #[inline]
17503            fn abi_decode_returns_validate(
17504                data: &[u8],
17505            ) -> alloy_sol_types::Result<Self::Return> {
17506                Self::abi_decode_returns_with_config(
17507                    data,
17508                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17509                )
17510            }
17511        }
17512    };
17513    #[derive(serde::Serialize, serde::Deserialize)]
17514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17515    /**Function with signature `minDelegateAmount()` and selector `0x72e9c934`.
17516```solidity
17517function minDelegateAmount() external view returns (uint256);
17518```*/
17519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17520    #[derive(Clone)]
17521    pub struct minDelegateAmountCall;
17522    #[derive(serde::Serialize, serde::Deserialize)]
17523    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17524    ///Container type for the return parameters of the [`minDelegateAmount()`](minDelegateAmountCall) function.
17525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17526    #[derive(Clone)]
17527    pub struct minDelegateAmountReturn {
17528        #[allow(missing_docs)]
17529        pub _0: alloy::sol_types::private::primitives::aliases::U256,
17530    }
17531    #[allow(
17532        non_camel_case_types,
17533        non_snake_case,
17534        clippy::pub_underscore_fields,
17535        clippy::style
17536    )]
17537    const _: () = {
17538        use alloy::sol_types as alloy_sol_types;
17539        {
17540            #[doc(hidden)]
17541            #[allow(dead_code)]
17542            type UnderlyingSolTuple<'a> = ();
17543            #[doc(hidden)]
17544            type UnderlyingRustTuple<'a> = ();
17545            #[cfg(test)]
17546            #[allow(dead_code, unreachable_patterns)]
17547            fn _type_assertion(
17548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17549            ) {
17550                match _t {
17551                    alloy_sol_types::private::AssertTypeEq::<
17552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17553                    >(_) => {}
17554                }
17555            }
17556            #[automatically_derived]
17557            #[doc(hidden)]
17558            impl ::core::convert::From<minDelegateAmountCall>
17559            for UnderlyingRustTuple<'_> {
17560                fn from(value: minDelegateAmountCall) -> Self {
17561                    ()
17562                }
17563            }
17564            #[automatically_derived]
17565            #[doc(hidden)]
17566            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17567            for minDelegateAmountCall {
17568                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17569                    Self
17570                }
17571            }
17572        }
17573        {
17574            #[doc(hidden)]
17575            #[allow(dead_code)]
17576            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17577            #[doc(hidden)]
17578            type UnderlyingRustTuple<'a> = (
17579                alloy::sol_types::private::primitives::aliases::U256,
17580            );
17581            #[cfg(test)]
17582            #[allow(dead_code, unreachable_patterns)]
17583            fn _type_assertion(
17584                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17585            ) {
17586                match _t {
17587                    alloy_sol_types::private::AssertTypeEq::<
17588                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17589                    >(_) => {}
17590                }
17591            }
17592            #[automatically_derived]
17593            #[doc(hidden)]
17594            impl ::core::convert::From<minDelegateAmountReturn>
17595            for UnderlyingRustTuple<'_> {
17596                fn from(value: minDelegateAmountReturn) -> Self {
17597                    (value._0,)
17598                }
17599            }
17600            #[automatically_derived]
17601            #[doc(hidden)]
17602            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17603            for minDelegateAmountReturn {
17604                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17605                    Self { _0: tuple.0 }
17606                }
17607            }
17608        }
17609        #[automatically_derived]
17610        impl alloy_sol_types::SolCall for minDelegateAmountCall {
17611            type Parameters<'a> = ();
17612            type Token<'a> = <Self::Parameters<
17613                'a,
17614            > as alloy_sol_types::SolType>::Token<'a>;
17615            type Return = alloy::sol_types::private::primitives::aliases::U256;
17616            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17617            type ReturnToken<'a> = <Self::ReturnTuple<
17618                'a,
17619            > as alloy_sol_types::SolType>::Token<'a>;
17620            const SIGNATURE: &'static str = "minDelegateAmount()";
17621            const SELECTOR: [u8; 4] = [114u8, 233u8, 201u8, 52u8];
17622            #[inline]
17623            fn new<'a>(
17624                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17625            ) -> Self {
17626                tuple.into()
17627            }
17628            #[inline]
17629            fn tokenize(&self) -> Self::Token<'_> {
17630                ()
17631            }
17632            #[inline]
17633            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17634                (
17635                    <alloy::sol_types::sol_data::Uint<
17636                        256,
17637                    > as alloy_sol_types::SolType>::tokenize(ret),
17638                )
17639            }
17640            #[inline]
17641            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17642                <Self::ReturnTuple<
17643                    '_,
17644                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17645                    .map(|r| {
17646                        let r: minDelegateAmountReturn = r.into();
17647                        r._0
17648                    })
17649            }
17650            #[inline]
17651            fn abi_decode_returns_with_config(
17652                data: &[u8],
17653                config: alloy_sol_types::abi::AbiDecoderConfig,
17654            ) -> alloy_sol_types::Result<Self::Return> {
17655                <Self::ReturnTuple<
17656                    '_,
17657                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17658                        data,
17659                        config,
17660                    )
17661                    .map(|r| {
17662                        let r: minDelegateAmountReturn = r.into();
17663                        r._0
17664                    })
17665            }
17666            #[inline]
17667            fn abi_decode_returns_validate(
17668                data: &[u8],
17669            ) -> alloy_sol_types::Result<Self::Return> {
17670                Self::abi_decode_returns_with_config(
17671                    data,
17672                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17673                )
17674            }
17675        }
17676    };
17677    #[derive(serde::Serialize, serde::Deserialize)]
17678    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17679    /**Function with signature `owner()` and selector `0x8da5cb5b`.
17680```solidity
17681function owner() external view returns (address);
17682```*/
17683    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17684    #[derive(Clone)]
17685    pub struct ownerCall;
17686    #[derive(serde::Serialize, serde::Deserialize)]
17687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17688    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
17689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17690    #[derive(Clone)]
17691    pub struct ownerReturn {
17692        #[allow(missing_docs)]
17693        pub _0: alloy::sol_types::private::Address,
17694    }
17695    #[allow(
17696        non_camel_case_types,
17697        non_snake_case,
17698        clippy::pub_underscore_fields,
17699        clippy::style
17700    )]
17701    const _: () = {
17702        use alloy::sol_types as alloy_sol_types;
17703        {
17704            #[doc(hidden)]
17705            #[allow(dead_code)]
17706            type UnderlyingSolTuple<'a> = ();
17707            #[doc(hidden)]
17708            type UnderlyingRustTuple<'a> = ();
17709            #[cfg(test)]
17710            #[allow(dead_code, unreachable_patterns)]
17711            fn _type_assertion(
17712                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17713            ) {
17714                match _t {
17715                    alloy_sol_types::private::AssertTypeEq::<
17716                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17717                    >(_) => {}
17718                }
17719            }
17720            #[automatically_derived]
17721            #[doc(hidden)]
17722            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
17723                fn from(value: ownerCall) -> Self {
17724                    ()
17725                }
17726            }
17727            #[automatically_derived]
17728            #[doc(hidden)]
17729            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
17730                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17731                    Self
17732                }
17733            }
17734        }
17735        {
17736            #[doc(hidden)]
17737            #[allow(dead_code)]
17738            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17739            #[doc(hidden)]
17740            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17741            #[cfg(test)]
17742            #[allow(dead_code, unreachable_patterns)]
17743            fn _type_assertion(
17744                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17745            ) {
17746                match _t {
17747                    alloy_sol_types::private::AssertTypeEq::<
17748                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17749                    >(_) => {}
17750                }
17751            }
17752            #[automatically_derived]
17753            #[doc(hidden)]
17754            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
17755                fn from(value: ownerReturn) -> Self {
17756                    (value._0,)
17757                }
17758            }
17759            #[automatically_derived]
17760            #[doc(hidden)]
17761            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
17762                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17763                    Self { _0: tuple.0 }
17764                }
17765            }
17766        }
17767        #[automatically_derived]
17768        impl alloy_sol_types::SolCall for ownerCall {
17769            type Parameters<'a> = ();
17770            type Token<'a> = <Self::Parameters<
17771                'a,
17772            > as alloy_sol_types::SolType>::Token<'a>;
17773            type Return = alloy::sol_types::private::Address;
17774            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
17775            type ReturnToken<'a> = <Self::ReturnTuple<
17776                'a,
17777            > as alloy_sol_types::SolType>::Token<'a>;
17778            const SIGNATURE: &'static str = "owner()";
17779            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
17780            #[inline]
17781            fn new<'a>(
17782                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17783            ) -> Self {
17784                tuple.into()
17785            }
17786            #[inline]
17787            fn tokenize(&self) -> Self::Token<'_> {
17788                ()
17789            }
17790            #[inline]
17791            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17792                (
17793                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17794                        ret,
17795                    ),
17796                )
17797            }
17798            #[inline]
17799            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17800                <Self::ReturnTuple<
17801                    '_,
17802                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17803                    .map(|r| {
17804                        let r: ownerReturn = r.into();
17805                        r._0
17806                    })
17807            }
17808            #[inline]
17809            fn abi_decode_returns_with_config(
17810                data: &[u8],
17811                config: alloy_sol_types::abi::AbiDecoderConfig,
17812            ) -> alloy_sol_types::Result<Self::Return> {
17813                <Self::ReturnTuple<
17814                    '_,
17815                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17816                        data,
17817                        config,
17818                    )
17819                    .map(|r| {
17820                        let r: ownerReturn = r.into();
17821                        r._0
17822                    })
17823            }
17824            #[inline]
17825            fn abi_decode_returns_validate(
17826                data: &[u8],
17827            ) -> alloy_sol_types::Result<Self::Return> {
17828                Self::abi_decode_returns_with_config(
17829                    data,
17830                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17831                )
17832            }
17833        }
17834    };
17835    #[derive(serde::Serialize, serde::Deserialize)]
17836    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17837    /**Function with signature `pause()` and selector `0x8456cb59`.
17838```solidity
17839function pause() external;
17840```*/
17841    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17842    #[derive(Clone)]
17843    pub struct pauseCall;
17844    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
17845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17846    #[derive(Clone)]
17847    pub struct pauseReturn {}
17848    #[allow(
17849        non_camel_case_types,
17850        non_snake_case,
17851        clippy::pub_underscore_fields,
17852        clippy::style
17853    )]
17854    const _: () = {
17855        use alloy::sol_types as alloy_sol_types;
17856        {
17857            #[doc(hidden)]
17858            #[allow(dead_code)]
17859            type UnderlyingSolTuple<'a> = ();
17860            #[doc(hidden)]
17861            type UnderlyingRustTuple<'a> = ();
17862            #[cfg(test)]
17863            #[allow(dead_code, unreachable_patterns)]
17864            fn _type_assertion(
17865                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17866            ) {
17867                match _t {
17868                    alloy_sol_types::private::AssertTypeEq::<
17869                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17870                    >(_) => {}
17871                }
17872            }
17873            #[automatically_derived]
17874            #[doc(hidden)]
17875            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
17876                fn from(value: pauseCall) -> Self {
17877                    ()
17878                }
17879            }
17880            #[automatically_derived]
17881            #[doc(hidden)]
17882            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
17883                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17884                    Self
17885                }
17886            }
17887        }
17888        {
17889            #[doc(hidden)]
17890            #[allow(dead_code)]
17891            type UnderlyingSolTuple<'a> = ();
17892            #[doc(hidden)]
17893            type UnderlyingRustTuple<'a> = ();
17894            #[cfg(test)]
17895            #[allow(dead_code, unreachable_patterns)]
17896            fn _type_assertion(
17897                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17898            ) {
17899                match _t {
17900                    alloy_sol_types::private::AssertTypeEq::<
17901                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17902                    >(_) => {}
17903                }
17904            }
17905            #[automatically_derived]
17906            #[doc(hidden)]
17907            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
17908                fn from(value: pauseReturn) -> Self {
17909                    ()
17910                }
17911            }
17912            #[automatically_derived]
17913            #[doc(hidden)]
17914            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
17915                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17916                    Self {}
17917                }
17918            }
17919        }
17920        impl pauseReturn {
17921            fn _tokenize(
17922                &self,
17923            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17924                ()
17925            }
17926        }
17927        #[automatically_derived]
17928        impl alloy_sol_types::SolCall for pauseCall {
17929            type Parameters<'a> = ();
17930            type Token<'a> = <Self::Parameters<
17931                'a,
17932            > as alloy_sol_types::SolType>::Token<'a>;
17933            type Return = pauseReturn;
17934            type ReturnTuple<'a> = ();
17935            type ReturnToken<'a> = <Self::ReturnTuple<
17936                'a,
17937            > as alloy_sol_types::SolType>::Token<'a>;
17938            const SIGNATURE: &'static str = "pause()";
17939            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
17940            #[inline]
17941            fn new<'a>(
17942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17943            ) -> Self {
17944                tuple.into()
17945            }
17946            #[inline]
17947            fn tokenize(&self) -> Self::Token<'_> {
17948                ()
17949            }
17950            #[inline]
17951            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17952                pauseReturn::_tokenize(ret)
17953            }
17954            #[inline]
17955            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17956                <Self::ReturnTuple<
17957                    '_,
17958                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17959                    .map(Into::into)
17960            }
17961            #[inline]
17962            fn abi_decode_returns_with_config(
17963                data: &[u8],
17964                config: alloy_sol_types::abi::AbiDecoderConfig,
17965            ) -> alloy_sol_types::Result<Self::Return> {
17966                <Self::ReturnTuple<
17967                    '_,
17968                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17969                        data,
17970                        config,
17971                    )
17972                    .map(Into::into)
17973            }
17974            #[inline]
17975            fn abi_decode_returns_validate(
17976                data: &[u8],
17977            ) -> alloy_sol_types::Result<Self::Return> {
17978                Self::abi_decode_returns_with_config(
17979                    data,
17980                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17981                )
17982            }
17983        }
17984    };
17985    #[derive(serde::Serialize, serde::Deserialize)]
17986    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17987    /**Function with signature `paused()` and selector `0x5c975abb`.
17988```solidity
17989function paused() external view returns (bool);
17990```*/
17991    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17992    #[derive(Clone)]
17993    pub struct pausedCall;
17994    #[derive(serde::Serialize, serde::Deserialize)]
17995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17996    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
17997    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17998    #[derive(Clone)]
17999    pub struct pausedReturn {
18000        #[allow(missing_docs)]
18001        pub _0: bool,
18002    }
18003    #[allow(
18004        non_camel_case_types,
18005        non_snake_case,
18006        clippy::pub_underscore_fields,
18007        clippy::style
18008    )]
18009    const _: () = {
18010        use alloy::sol_types as alloy_sol_types;
18011        {
18012            #[doc(hidden)]
18013            #[allow(dead_code)]
18014            type UnderlyingSolTuple<'a> = ();
18015            #[doc(hidden)]
18016            type UnderlyingRustTuple<'a> = ();
18017            #[cfg(test)]
18018            #[allow(dead_code, unreachable_patterns)]
18019            fn _type_assertion(
18020                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18021            ) {
18022                match _t {
18023                    alloy_sol_types::private::AssertTypeEq::<
18024                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18025                    >(_) => {}
18026                }
18027            }
18028            #[automatically_derived]
18029            #[doc(hidden)]
18030            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
18031                fn from(value: pausedCall) -> Self {
18032                    ()
18033                }
18034            }
18035            #[automatically_derived]
18036            #[doc(hidden)]
18037            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
18038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18039                    Self
18040                }
18041            }
18042        }
18043        {
18044            #[doc(hidden)]
18045            #[allow(dead_code)]
18046            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
18047            #[doc(hidden)]
18048            type UnderlyingRustTuple<'a> = (bool,);
18049            #[cfg(test)]
18050            #[allow(dead_code, unreachable_patterns)]
18051            fn _type_assertion(
18052                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18053            ) {
18054                match _t {
18055                    alloy_sol_types::private::AssertTypeEq::<
18056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18057                    >(_) => {}
18058                }
18059            }
18060            #[automatically_derived]
18061            #[doc(hidden)]
18062            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
18063                fn from(value: pausedReturn) -> Self {
18064                    (value._0,)
18065                }
18066            }
18067            #[automatically_derived]
18068            #[doc(hidden)]
18069            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
18070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18071                    Self { _0: tuple.0 }
18072                }
18073            }
18074        }
18075        #[automatically_derived]
18076        impl alloy_sol_types::SolCall for pausedCall {
18077            type Parameters<'a> = ();
18078            type Token<'a> = <Self::Parameters<
18079                'a,
18080            > as alloy_sol_types::SolType>::Token<'a>;
18081            type Return = bool;
18082            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
18083            type ReturnToken<'a> = <Self::ReturnTuple<
18084                'a,
18085            > as alloy_sol_types::SolType>::Token<'a>;
18086            const SIGNATURE: &'static str = "paused()";
18087            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
18088            #[inline]
18089            fn new<'a>(
18090                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18091            ) -> Self {
18092                tuple.into()
18093            }
18094            #[inline]
18095            fn tokenize(&self) -> Self::Token<'_> {
18096                ()
18097            }
18098            #[inline]
18099            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18100                (
18101                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
18102                        ret,
18103                    ),
18104                )
18105            }
18106            #[inline]
18107            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18108                <Self::ReturnTuple<
18109                    '_,
18110                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18111                    .map(|r| {
18112                        let r: pausedReturn = r.into();
18113                        r._0
18114                    })
18115            }
18116            #[inline]
18117            fn abi_decode_returns_with_config(
18118                data: &[u8],
18119                config: alloy_sol_types::abi::AbiDecoderConfig,
18120            ) -> alloy_sol_types::Result<Self::Return> {
18121                <Self::ReturnTuple<
18122                    '_,
18123                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18124                        data,
18125                        config,
18126                    )
18127                    .map(|r| {
18128                        let r: pausedReturn = r.into();
18129                        r._0
18130                    })
18131            }
18132            #[inline]
18133            fn abi_decode_returns_validate(
18134                data: &[u8],
18135            ) -> alloy_sol_types::Result<Self::Return> {
18136                Self::abi_decode_returns_with_config(
18137                    data,
18138                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18139                )
18140            }
18141        }
18142    };
18143    #[derive(serde::Serialize, serde::Deserialize)]
18144    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18145    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
18146```solidity
18147function proxiableUUID() external view returns (bytes32);
18148```*/
18149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18150    #[derive(Clone)]
18151    pub struct proxiableUUIDCall;
18152    #[derive(serde::Serialize, serde::Deserialize)]
18153    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18154    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
18155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18156    #[derive(Clone)]
18157    pub struct proxiableUUIDReturn {
18158        #[allow(missing_docs)]
18159        pub _0: alloy::sol_types::private::FixedBytes<32>,
18160    }
18161    #[allow(
18162        non_camel_case_types,
18163        non_snake_case,
18164        clippy::pub_underscore_fields,
18165        clippy::style
18166    )]
18167    const _: () = {
18168        use alloy::sol_types as alloy_sol_types;
18169        {
18170            #[doc(hidden)]
18171            #[allow(dead_code)]
18172            type UnderlyingSolTuple<'a> = ();
18173            #[doc(hidden)]
18174            type UnderlyingRustTuple<'a> = ();
18175            #[cfg(test)]
18176            #[allow(dead_code, unreachable_patterns)]
18177            fn _type_assertion(
18178                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18179            ) {
18180                match _t {
18181                    alloy_sol_types::private::AssertTypeEq::<
18182                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18183                    >(_) => {}
18184                }
18185            }
18186            #[automatically_derived]
18187            #[doc(hidden)]
18188            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
18189                fn from(value: proxiableUUIDCall) -> Self {
18190                    ()
18191                }
18192            }
18193            #[automatically_derived]
18194            #[doc(hidden)]
18195            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
18196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18197                    Self
18198                }
18199            }
18200        }
18201        {
18202            #[doc(hidden)]
18203            #[allow(dead_code)]
18204            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
18205            #[doc(hidden)]
18206            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
18207            #[cfg(test)]
18208            #[allow(dead_code, unreachable_patterns)]
18209            fn _type_assertion(
18210                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18211            ) {
18212                match _t {
18213                    alloy_sol_types::private::AssertTypeEq::<
18214                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18215                    >(_) => {}
18216                }
18217            }
18218            #[automatically_derived]
18219            #[doc(hidden)]
18220            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
18221                fn from(value: proxiableUUIDReturn) -> Self {
18222                    (value._0,)
18223                }
18224            }
18225            #[automatically_derived]
18226            #[doc(hidden)]
18227            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
18228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18229                    Self { _0: tuple.0 }
18230                }
18231            }
18232        }
18233        #[automatically_derived]
18234        impl alloy_sol_types::SolCall for proxiableUUIDCall {
18235            type Parameters<'a> = ();
18236            type Token<'a> = <Self::Parameters<
18237                'a,
18238            > as alloy_sol_types::SolType>::Token<'a>;
18239            type Return = alloy::sol_types::private::FixedBytes<32>;
18240            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
18241            type ReturnToken<'a> = <Self::ReturnTuple<
18242                'a,
18243            > as alloy_sol_types::SolType>::Token<'a>;
18244            const SIGNATURE: &'static str = "proxiableUUID()";
18245            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
18246            #[inline]
18247            fn new<'a>(
18248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18249            ) -> Self {
18250                tuple.into()
18251            }
18252            #[inline]
18253            fn tokenize(&self) -> Self::Token<'_> {
18254                ()
18255            }
18256            #[inline]
18257            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18258                (
18259                    <alloy::sol_types::sol_data::FixedBytes<
18260                        32,
18261                    > as alloy_sol_types::SolType>::tokenize(ret),
18262                )
18263            }
18264            #[inline]
18265            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18266                <Self::ReturnTuple<
18267                    '_,
18268                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18269                    .map(|r| {
18270                        let r: proxiableUUIDReturn = r.into();
18271                        r._0
18272                    })
18273            }
18274            #[inline]
18275            fn abi_decode_returns_with_config(
18276                data: &[u8],
18277                config: alloy_sol_types::abi::AbiDecoderConfig,
18278            ) -> alloy_sol_types::Result<Self::Return> {
18279                <Self::ReturnTuple<
18280                    '_,
18281                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18282                        data,
18283                        config,
18284                    )
18285                    .map(|r| {
18286                        let r: proxiableUUIDReturn = r.into();
18287                        r._0
18288                    })
18289            }
18290            #[inline]
18291            fn abi_decode_returns_validate(
18292                data: &[u8],
18293            ) -> alloy_sol_types::Result<Self::Return> {
18294                Self::abi_decode_returns_with_config(
18295                    data,
18296                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18297                )
18298            }
18299        }
18300    };
18301    #[derive(serde::Serialize, serde::Deserialize)]
18302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18303    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
18304```solidity
18305function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
18306```*/
18307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18308    #[derive(Clone)]
18309    pub struct registerValidatorCall {
18310        #[allow(missing_docs)]
18311        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18312        #[allow(missing_docs)]
18313        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18314        #[allow(missing_docs)]
18315        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18316        #[allow(missing_docs)]
18317        pub _3: u16,
18318    }
18319    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
18320    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18321    #[derive(Clone)]
18322    pub struct registerValidatorReturn {}
18323    #[allow(
18324        non_camel_case_types,
18325        non_snake_case,
18326        clippy::pub_underscore_fields,
18327        clippy::style
18328    )]
18329    const _: () = {
18330        use alloy::sol_types as alloy_sol_types;
18331        {
18332            #[doc(hidden)]
18333            #[allow(dead_code)]
18334            type UnderlyingSolTuple<'a> = (
18335                BN254::G2Point,
18336                EdOnBN254::EdOnBN254Point,
18337                BN254::G1Point,
18338                alloy::sol_types::sol_data::Uint<16>,
18339            );
18340            #[doc(hidden)]
18341            type UnderlyingRustTuple<'a> = (
18342                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18343                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18344                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18345                u16,
18346            );
18347            #[cfg(test)]
18348            #[allow(dead_code, unreachable_patterns)]
18349            fn _type_assertion(
18350                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18351            ) {
18352                match _t {
18353                    alloy_sol_types::private::AssertTypeEq::<
18354                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18355                    >(_) => {}
18356                }
18357            }
18358            #[automatically_derived]
18359            #[doc(hidden)]
18360            impl ::core::convert::From<registerValidatorCall>
18361            for UnderlyingRustTuple<'_> {
18362                fn from(value: registerValidatorCall) -> Self {
18363                    (value._0, value._1, value._2, value._3)
18364                }
18365            }
18366            #[automatically_derived]
18367            #[doc(hidden)]
18368            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18369            for registerValidatorCall {
18370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18371                    Self {
18372                        _0: tuple.0,
18373                        _1: tuple.1,
18374                        _2: tuple.2,
18375                        _3: tuple.3,
18376                    }
18377                }
18378            }
18379        }
18380        {
18381            #[doc(hidden)]
18382            #[allow(dead_code)]
18383            type UnderlyingSolTuple<'a> = ();
18384            #[doc(hidden)]
18385            type UnderlyingRustTuple<'a> = ();
18386            #[cfg(test)]
18387            #[allow(dead_code, unreachable_patterns)]
18388            fn _type_assertion(
18389                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18390            ) {
18391                match _t {
18392                    alloy_sol_types::private::AssertTypeEq::<
18393                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18394                    >(_) => {}
18395                }
18396            }
18397            #[automatically_derived]
18398            #[doc(hidden)]
18399            impl ::core::convert::From<registerValidatorReturn>
18400            for UnderlyingRustTuple<'_> {
18401                fn from(value: registerValidatorReturn) -> Self {
18402                    ()
18403                }
18404            }
18405            #[automatically_derived]
18406            #[doc(hidden)]
18407            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18408            for registerValidatorReturn {
18409                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18410                    Self {}
18411                }
18412            }
18413        }
18414        impl registerValidatorReturn {
18415            fn _tokenize(
18416                &self,
18417            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18418                ()
18419            }
18420        }
18421        #[automatically_derived]
18422        impl alloy_sol_types::SolCall for registerValidatorCall {
18423            type Parameters<'a> = (
18424                BN254::G2Point,
18425                EdOnBN254::EdOnBN254Point,
18426                BN254::G1Point,
18427                alloy::sol_types::sol_data::Uint<16>,
18428            );
18429            type Token<'a> = <Self::Parameters<
18430                'a,
18431            > as alloy_sol_types::SolType>::Token<'a>;
18432            type Return = registerValidatorReturn;
18433            type ReturnTuple<'a> = ();
18434            type ReturnToken<'a> = <Self::ReturnTuple<
18435                'a,
18436            > as alloy_sol_types::SolType>::Token<'a>;
18437            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
18438            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
18439            #[inline]
18440            fn new<'a>(
18441                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18442            ) -> Self {
18443                tuple.into()
18444            }
18445            #[inline]
18446            fn tokenize(&self) -> Self::Token<'_> {
18447                (
18448                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
18449                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18450                        &self._1,
18451                    ),
18452                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
18453                    <alloy::sol_types::sol_data::Uint<
18454                        16,
18455                    > as alloy_sol_types::SolType>::tokenize(&self._3),
18456                )
18457            }
18458            #[inline]
18459            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18460                registerValidatorReturn::_tokenize(ret)
18461            }
18462            #[inline]
18463            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18464                <Self::ReturnTuple<
18465                    '_,
18466                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18467                    .map(Into::into)
18468            }
18469            #[inline]
18470            fn abi_decode_returns_with_config(
18471                data: &[u8],
18472                config: alloy_sol_types::abi::AbiDecoderConfig,
18473            ) -> alloy_sol_types::Result<Self::Return> {
18474                <Self::ReturnTuple<
18475                    '_,
18476                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18477                        data,
18478                        config,
18479                    )
18480                    .map(Into::into)
18481            }
18482            #[inline]
18483            fn abi_decode_returns_validate(
18484                data: &[u8],
18485            ) -> alloy_sol_types::Result<Self::Return> {
18486                Self::abi_decode_returns_with_config(
18487                    data,
18488                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18489                )
18490            }
18491        }
18492    };
18493    #[derive(serde::Serialize, serde::Deserialize)]
18494    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18495    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)` and selector `0x2b9e5c8a`.
18496```solidity
18497function registerValidatorV2(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, bytes memory, uint16, string memory) external pure;
18498```*/
18499    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18500    #[derive(Clone)]
18501    pub struct registerValidatorV2Call {
18502        #[allow(missing_docs)]
18503        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18504        #[allow(missing_docs)]
18505        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18506        #[allow(missing_docs)]
18507        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18508        #[allow(missing_docs)]
18509        pub _3: alloy::sol_types::private::Bytes,
18510        #[allow(missing_docs)]
18511        pub _4: u16,
18512        #[allow(missing_docs)]
18513        pub _5: alloy::sol_types::private::String,
18514    }
18515    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)`](registerValidatorV2Call) function.
18516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18517    #[derive(Clone)]
18518    pub struct registerValidatorV2Return {}
18519    #[allow(
18520        non_camel_case_types,
18521        non_snake_case,
18522        clippy::pub_underscore_fields,
18523        clippy::style
18524    )]
18525    const _: () = {
18526        use alloy::sol_types as alloy_sol_types;
18527        {
18528            #[doc(hidden)]
18529            #[allow(dead_code)]
18530            type UnderlyingSolTuple<'a> = (
18531                BN254::G2Point,
18532                EdOnBN254::EdOnBN254Point,
18533                BN254::G1Point,
18534                alloy::sol_types::sol_data::Bytes,
18535                alloy::sol_types::sol_data::Uint<16>,
18536                alloy::sol_types::sol_data::String,
18537            );
18538            #[doc(hidden)]
18539            type UnderlyingRustTuple<'a> = (
18540                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18541                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18542                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18543                alloy::sol_types::private::Bytes,
18544                u16,
18545                alloy::sol_types::private::String,
18546            );
18547            #[cfg(test)]
18548            #[allow(dead_code, unreachable_patterns)]
18549            fn _type_assertion(
18550                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18551            ) {
18552                match _t {
18553                    alloy_sol_types::private::AssertTypeEq::<
18554                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18555                    >(_) => {}
18556                }
18557            }
18558            #[automatically_derived]
18559            #[doc(hidden)]
18560            impl ::core::convert::From<registerValidatorV2Call>
18561            for UnderlyingRustTuple<'_> {
18562                fn from(value: registerValidatorV2Call) -> Self {
18563                    (value._0, value._1, value._2, value._3, value._4, value._5)
18564                }
18565            }
18566            #[automatically_derived]
18567            #[doc(hidden)]
18568            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18569            for registerValidatorV2Call {
18570                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18571                    Self {
18572                        _0: tuple.0,
18573                        _1: tuple.1,
18574                        _2: tuple.2,
18575                        _3: tuple.3,
18576                        _4: tuple.4,
18577                        _5: tuple.5,
18578                    }
18579                }
18580            }
18581        }
18582        {
18583            #[doc(hidden)]
18584            #[allow(dead_code)]
18585            type UnderlyingSolTuple<'a> = ();
18586            #[doc(hidden)]
18587            type UnderlyingRustTuple<'a> = ();
18588            #[cfg(test)]
18589            #[allow(dead_code, unreachable_patterns)]
18590            fn _type_assertion(
18591                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18592            ) {
18593                match _t {
18594                    alloy_sol_types::private::AssertTypeEq::<
18595                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18596                    >(_) => {}
18597                }
18598            }
18599            #[automatically_derived]
18600            #[doc(hidden)]
18601            impl ::core::convert::From<registerValidatorV2Return>
18602            for UnderlyingRustTuple<'_> {
18603                fn from(value: registerValidatorV2Return) -> Self {
18604                    ()
18605                }
18606            }
18607            #[automatically_derived]
18608            #[doc(hidden)]
18609            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18610            for registerValidatorV2Return {
18611                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18612                    Self {}
18613                }
18614            }
18615        }
18616        impl registerValidatorV2Return {
18617            fn _tokenize(
18618                &self,
18619            ) -> <registerValidatorV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
18620                ()
18621            }
18622        }
18623        #[automatically_derived]
18624        impl alloy_sol_types::SolCall for registerValidatorV2Call {
18625            type Parameters<'a> = (
18626                BN254::G2Point,
18627                EdOnBN254::EdOnBN254Point,
18628                BN254::G1Point,
18629                alloy::sol_types::sol_data::Bytes,
18630                alloy::sol_types::sol_data::Uint<16>,
18631                alloy::sol_types::sol_data::String,
18632            );
18633            type Token<'a> = <Self::Parameters<
18634                'a,
18635            > as alloy_sol_types::SolType>::Token<'a>;
18636            type Return = registerValidatorV2Return;
18637            type ReturnTuple<'a> = ();
18638            type ReturnToken<'a> = <Self::ReturnTuple<
18639                'a,
18640            > as alloy_sol_types::SolType>::Token<'a>;
18641            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)";
18642            const SELECTOR: [u8; 4] = [43u8, 158u8, 92u8, 138u8];
18643            #[inline]
18644            fn new<'a>(
18645                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18646            ) -> Self {
18647                tuple.into()
18648            }
18649            #[inline]
18650            fn tokenize(&self) -> Self::Token<'_> {
18651                (
18652                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
18653                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18654                        &self._1,
18655                    ),
18656                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
18657                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
18658                        &self._3,
18659                    ),
18660                    <alloy::sol_types::sol_data::Uint<
18661                        16,
18662                    > as alloy_sol_types::SolType>::tokenize(&self._4),
18663                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
18664                        &self._5,
18665                    ),
18666                )
18667            }
18668            #[inline]
18669            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18670                registerValidatorV2Return::_tokenize(ret)
18671            }
18672            #[inline]
18673            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18674                <Self::ReturnTuple<
18675                    '_,
18676                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18677                    .map(Into::into)
18678            }
18679            #[inline]
18680            fn abi_decode_returns_with_config(
18681                data: &[u8],
18682                config: alloy_sol_types::abi::AbiDecoderConfig,
18683            ) -> alloy_sol_types::Result<Self::Return> {
18684                <Self::ReturnTuple<
18685                    '_,
18686                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18687                        data,
18688                        config,
18689                    )
18690                    .map(Into::into)
18691            }
18692            #[inline]
18693            fn abi_decode_returns_validate(
18694                data: &[u8],
18695            ) -> alloy_sol_types::Result<Self::Return> {
18696                Self::abi_decode_returns_with_config(
18697                    data,
18698                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18699                )
18700            }
18701        }
18702    };
18703    #[derive(serde::Serialize, serde::Deserialize)]
18704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18705    /**Function with signature `registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)` and selector `0x6887cd36`.
18706```solidity
18707function registerValidatorV3(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri, bytes32 x25519Key, string memory p2pAddr) external;
18708```*/
18709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18710    #[derive(Clone)]
18711    pub struct registerValidatorV3Call {
18712        #[allow(missing_docs)]
18713        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18714        #[allow(missing_docs)]
18715        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18716        #[allow(missing_docs)]
18717        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18718        #[allow(missing_docs)]
18719        pub schnorrSig: alloy::sol_types::private::Bytes,
18720        #[allow(missing_docs)]
18721        pub commission: u16,
18722        #[allow(missing_docs)]
18723        pub metadataUri: alloy::sol_types::private::String,
18724        #[allow(missing_docs)]
18725        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
18726        #[allow(missing_docs)]
18727        pub p2pAddr: alloy::sol_types::private::String,
18728    }
18729    ///Container type for the return parameters of the [`registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)`](registerValidatorV3Call) function.
18730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18731    #[derive(Clone)]
18732    pub struct registerValidatorV3Return {}
18733    #[allow(
18734        non_camel_case_types,
18735        non_snake_case,
18736        clippy::pub_underscore_fields,
18737        clippy::style
18738    )]
18739    const _: () = {
18740        use alloy::sol_types as alloy_sol_types;
18741        {
18742            #[doc(hidden)]
18743            #[allow(dead_code)]
18744            type UnderlyingSolTuple<'a> = (
18745                BN254::G2Point,
18746                EdOnBN254::EdOnBN254Point,
18747                BN254::G1Point,
18748                alloy::sol_types::sol_data::Bytes,
18749                alloy::sol_types::sol_data::Uint<16>,
18750                alloy::sol_types::sol_data::String,
18751                alloy::sol_types::sol_data::FixedBytes<32>,
18752                alloy::sol_types::sol_data::String,
18753            );
18754            #[doc(hidden)]
18755            type UnderlyingRustTuple<'a> = (
18756                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18757                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18758                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18759                alloy::sol_types::private::Bytes,
18760                u16,
18761                alloy::sol_types::private::String,
18762                alloy::sol_types::private::FixedBytes<32>,
18763                alloy::sol_types::private::String,
18764            );
18765            #[cfg(test)]
18766            #[allow(dead_code, unreachable_patterns)]
18767            fn _type_assertion(
18768                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18769            ) {
18770                match _t {
18771                    alloy_sol_types::private::AssertTypeEq::<
18772                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18773                    >(_) => {}
18774                }
18775            }
18776            #[automatically_derived]
18777            #[doc(hidden)]
18778            impl ::core::convert::From<registerValidatorV3Call>
18779            for UnderlyingRustTuple<'_> {
18780                fn from(value: registerValidatorV3Call) -> Self {
18781                    (
18782                        value.blsVK,
18783                        value.schnorrVK,
18784                        value.blsSig,
18785                        value.schnorrSig,
18786                        value.commission,
18787                        value.metadataUri,
18788                        value.x25519Key,
18789                        value.p2pAddr,
18790                    )
18791                }
18792            }
18793            #[automatically_derived]
18794            #[doc(hidden)]
18795            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18796            for registerValidatorV3Call {
18797                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18798                    Self {
18799                        blsVK: tuple.0,
18800                        schnorrVK: tuple.1,
18801                        blsSig: tuple.2,
18802                        schnorrSig: tuple.3,
18803                        commission: tuple.4,
18804                        metadataUri: tuple.5,
18805                        x25519Key: tuple.6,
18806                        p2pAddr: tuple.7,
18807                    }
18808                }
18809            }
18810        }
18811        {
18812            #[doc(hidden)]
18813            #[allow(dead_code)]
18814            type UnderlyingSolTuple<'a> = ();
18815            #[doc(hidden)]
18816            type UnderlyingRustTuple<'a> = ();
18817            #[cfg(test)]
18818            #[allow(dead_code, unreachable_patterns)]
18819            fn _type_assertion(
18820                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18821            ) {
18822                match _t {
18823                    alloy_sol_types::private::AssertTypeEq::<
18824                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18825                    >(_) => {}
18826                }
18827            }
18828            #[automatically_derived]
18829            #[doc(hidden)]
18830            impl ::core::convert::From<registerValidatorV3Return>
18831            for UnderlyingRustTuple<'_> {
18832                fn from(value: registerValidatorV3Return) -> Self {
18833                    ()
18834                }
18835            }
18836            #[automatically_derived]
18837            #[doc(hidden)]
18838            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18839            for registerValidatorV3Return {
18840                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18841                    Self {}
18842                }
18843            }
18844        }
18845        impl registerValidatorV3Return {
18846            fn _tokenize(
18847                &self,
18848            ) -> <registerValidatorV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
18849                ()
18850            }
18851        }
18852        #[automatically_derived]
18853        impl alloy_sol_types::SolCall for registerValidatorV3Call {
18854            type Parameters<'a> = (
18855                BN254::G2Point,
18856                EdOnBN254::EdOnBN254Point,
18857                BN254::G1Point,
18858                alloy::sol_types::sol_data::Bytes,
18859                alloy::sol_types::sol_data::Uint<16>,
18860                alloy::sol_types::sol_data::String,
18861                alloy::sol_types::sol_data::FixedBytes<32>,
18862                alloy::sol_types::sol_data::String,
18863            );
18864            type Token<'a> = <Self::Parameters<
18865                'a,
18866            > as alloy_sol_types::SolType>::Token<'a>;
18867            type Return = registerValidatorV3Return;
18868            type ReturnTuple<'a> = ();
18869            type ReturnToken<'a> = <Self::ReturnTuple<
18870                'a,
18871            > as alloy_sol_types::SolType>::Token<'a>;
18872            const SIGNATURE: &'static str = "registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)";
18873            const SELECTOR: [u8; 4] = [104u8, 135u8, 205u8, 54u8];
18874            #[inline]
18875            fn new<'a>(
18876                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18877            ) -> Self {
18878                tuple.into()
18879            }
18880            #[inline]
18881            fn tokenize(&self) -> Self::Token<'_> {
18882                (
18883                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
18884                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18885                        &self.schnorrVK,
18886                    ),
18887                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
18888                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
18889                        &self.schnorrSig,
18890                    ),
18891                    <alloy::sol_types::sol_data::Uint<
18892                        16,
18893                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
18894                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
18895                        &self.metadataUri,
18896                    ),
18897                    <alloy::sol_types::sol_data::FixedBytes<
18898                        32,
18899                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
18900                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
18901                        &self.p2pAddr,
18902                    ),
18903                )
18904            }
18905            #[inline]
18906            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18907                registerValidatorV3Return::_tokenize(ret)
18908            }
18909            #[inline]
18910            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18911                <Self::ReturnTuple<
18912                    '_,
18913                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18914                    .map(Into::into)
18915            }
18916            #[inline]
18917            fn abi_decode_returns_with_config(
18918                data: &[u8],
18919                config: alloy_sol_types::abi::AbiDecoderConfig,
18920            ) -> alloy_sol_types::Result<Self::Return> {
18921                <Self::ReturnTuple<
18922                    '_,
18923                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18924                        data,
18925                        config,
18926                    )
18927                    .map(Into::into)
18928            }
18929            #[inline]
18930            fn abi_decode_returns_validate(
18931                data: &[u8],
18932            ) -> alloy_sol_types::Result<Self::Return> {
18933                Self::abi_decode_returns_with_config(
18934                    data,
18935                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18936                )
18937            }
18938        }
18939    };
18940    #[derive(serde::Serialize, serde::Deserialize)]
18941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18942    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
18943```solidity
18944function renounceOwnership() external;
18945```*/
18946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18947    #[derive(Clone)]
18948    pub struct renounceOwnershipCall;
18949    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
18950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18951    #[derive(Clone)]
18952    pub struct renounceOwnershipReturn {}
18953    #[allow(
18954        non_camel_case_types,
18955        non_snake_case,
18956        clippy::pub_underscore_fields,
18957        clippy::style
18958    )]
18959    const _: () = {
18960        use alloy::sol_types as alloy_sol_types;
18961        {
18962            #[doc(hidden)]
18963            #[allow(dead_code)]
18964            type UnderlyingSolTuple<'a> = ();
18965            #[doc(hidden)]
18966            type UnderlyingRustTuple<'a> = ();
18967            #[cfg(test)]
18968            #[allow(dead_code, unreachable_patterns)]
18969            fn _type_assertion(
18970                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18971            ) {
18972                match _t {
18973                    alloy_sol_types::private::AssertTypeEq::<
18974                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18975                    >(_) => {}
18976                }
18977            }
18978            #[automatically_derived]
18979            #[doc(hidden)]
18980            impl ::core::convert::From<renounceOwnershipCall>
18981            for UnderlyingRustTuple<'_> {
18982                fn from(value: renounceOwnershipCall) -> Self {
18983                    ()
18984                }
18985            }
18986            #[automatically_derived]
18987            #[doc(hidden)]
18988            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18989            for renounceOwnershipCall {
18990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18991                    Self
18992                }
18993            }
18994        }
18995        {
18996            #[doc(hidden)]
18997            #[allow(dead_code)]
18998            type UnderlyingSolTuple<'a> = ();
18999            #[doc(hidden)]
19000            type UnderlyingRustTuple<'a> = ();
19001            #[cfg(test)]
19002            #[allow(dead_code, unreachable_patterns)]
19003            fn _type_assertion(
19004                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19005            ) {
19006                match _t {
19007                    alloy_sol_types::private::AssertTypeEq::<
19008                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19009                    >(_) => {}
19010                }
19011            }
19012            #[automatically_derived]
19013            #[doc(hidden)]
19014            impl ::core::convert::From<renounceOwnershipReturn>
19015            for UnderlyingRustTuple<'_> {
19016                fn from(value: renounceOwnershipReturn) -> Self {
19017                    ()
19018                }
19019            }
19020            #[automatically_derived]
19021            #[doc(hidden)]
19022            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19023            for renounceOwnershipReturn {
19024                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19025                    Self {}
19026                }
19027            }
19028        }
19029        impl renounceOwnershipReturn {
19030            fn _tokenize(
19031                &self,
19032            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19033                ()
19034            }
19035        }
19036        #[automatically_derived]
19037        impl alloy_sol_types::SolCall for renounceOwnershipCall {
19038            type Parameters<'a> = ();
19039            type Token<'a> = <Self::Parameters<
19040                'a,
19041            > as alloy_sol_types::SolType>::Token<'a>;
19042            type Return = renounceOwnershipReturn;
19043            type ReturnTuple<'a> = ();
19044            type ReturnToken<'a> = <Self::ReturnTuple<
19045                'a,
19046            > as alloy_sol_types::SolType>::Token<'a>;
19047            const SIGNATURE: &'static str = "renounceOwnership()";
19048            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
19049            #[inline]
19050            fn new<'a>(
19051                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19052            ) -> Self {
19053                tuple.into()
19054            }
19055            #[inline]
19056            fn tokenize(&self) -> Self::Token<'_> {
19057                ()
19058            }
19059            #[inline]
19060            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19061                renounceOwnershipReturn::_tokenize(ret)
19062            }
19063            #[inline]
19064            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19065                <Self::ReturnTuple<
19066                    '_,
19067                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19068                    .map(Into::into)
19069            }
19070            #[inline]
19071            fn abi_decode_returns_with_config(
19072                data: &[u8],
19073                config: alloy_sol_types::abi::AbiDecoderConfig,
19074            ) -> alloy_sol_types::Result<Self::Return> {
19075                <Self::ReturnTuple<
19076                    '_,
19077                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19078                        data,
19079                        config,
19080                    )
19081                    .map(Into::into)
19082            }
19083            #[inline]
19084            fn abi_decode_returns_validate(
19085                data: &[u8],
19086            ) -> alloy_sol_types::Result<Self::Return> {
19087                Self::abi_decode_returns_with_config(
19088                    data,
19089                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19090                )
19091            }
19092        }
19093    };
19094    #[derive(serde::Serialize, serde::Deserialize)]
19095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19096    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
19097```solidity
19098function renounceRole(bytes32 role, address callerConfirmation) external;
19099```*/
19100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19101    #[derive(Clone)]
19102    pub struct renounceRoleCall {
19103        #[allow(missing_docs)]
19104        pub role: alloy::sol_types::private::FixedBytes<32>,
19105        #[allow(missing_docs)]
19106        pub callerConfirmation: alloy::sol_types::private::Address,
19107    }
19108    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
19109    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19110    #[derive(Clone)]
19111    pub struct renounceRoleReturn {}
19112    #[allow(
19113        non_camel_case_types,
19114        non_snake_case,
19115        clippy::pub_underscore_fields,
19116        clippy::style
19117    )]
19118    const _: () = {
19119        use alloy::sol_types as alloy_sol_types;
19120        {
19121            #[doc(hidden)]
19122            #[allow(dead_code)]
19123            type UnderlyingSolTuple<'a> = (
19124                alloy::sol_types::sol_data::FixedBytes<32>,
19125                alloy::sol_types::sol_data::Address,
19126            );
19127            #[doc(hidden)]
19128            type UnderlyingRustTuple<'a> = (
19129                alloy::sol_types::private::FixedBytes<32>,
19130                alloy::sol_types::private::Address,
19131            );
19132            #[cfg(test)]
19133            #[allow(dead_code, unreachable_patterns)]
19134            fn _type_assertion(
19135                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19136            ) {
19137                match _t {
19138                    alloy_sol_types::private::AssertTypeEq::<
19139                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19140                    >(_) => {}
19141                }
19142            }
19143            #[automatically_derived]
19144            #[doc(hidden)]
19145            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
19146                fn from(value: renounceRoleCall) -> Self {
19147                    (value.role, value.callerConfirmation)
19148                }
19149            }
19150            #[automatically_derived]
19151            #[doc(hidden)]
19152            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
19153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19154                    Self {
19155                        role: tuple.0,
19156                        callerConfirmation: tuple.1,
19157                    }
19158                }
19159            }
19160        }
19161        {
19162            #[doc(hidden)]
19163            #[allow(dead_code)]
19164            type UnderlyingSolTuple<'a> = ();
19165            #[doc(hidden)]
19166            type UnderlyingRustTuple<'a> = ();
19167            #[cfg(test)]
19168            #[allow(dead_code, unreachable_patterns)]
19169            fn _type_assertion(
19170                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19171            ) {
19172                match _t {
19173                    alloy_sol_types::private::AssertTypeEq::<
19174                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19175                    >(_) => {}
19176                }
19177            }
19178            #[automatically_derived]
19179            #[doc(hidden)]
19180            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
19181                fn from(value: renounceRoleReturn) -> Self {
19182                    ()
19183                }
19184            }
19185            #[automatically_derived]
19186            #[doc(hidden)]
19187            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
19188                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19189                    Self {}
19190                }
19191            }
19192        }
19193        impl renounceRoleReturn {
19194            fn _tokenize(
19195                &self,
19196            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19197                ()
19198            }
19199        }
19200        #[automatically_derived]
19201        impl alloy_sol_types::SolCall for renounceRoleCall {
19202            type Parameters<'a> = (
19203                alloy::sol_types::sol_data::FixedBytes<32>,
19204                alloy::sol_types::sol_data::Address,
19205            );
19206            type Token<'a> = <Self::Parameters<
19207                'a,
19208            > as alloy_sol_types::SolType>::Token<'a>;
19209            type Return = renounceRoleReturn;
19210            type ReturnTuple<'a> = ();
19211            type ReturnToken<'a> = <Self::ReturnTuple<
19212                'a,
19213            > as alloy_sol_types::SolType>::Token<'a>;
19214            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
19215            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
19216            #[inline]
19217            fn new<'a>(
19218                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19219            ) -> Self {
19220                tuple.into()
19221            }
19222            #[inline]
19223            fn tokenize(&self) -> Self::Token<'_> {
19224                (
19225                    <alloy::sol_types::sol_data::FixedBytes<
19226                        32,
19227                    > as alloy_sol_types::SolType>::tokenize(&self.role),
19228                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19229                        &self.callerConfirmation,
19230                    ),
19231                )
19232            }
19233            #[inline]
19234            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19235                renounceRoleReturn::_tokenize(ret)
19236            }
19237            #[inline]
19238            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19239                <Self::ReturnTuple<
19240                    '_,
19241                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19242                    .map(Into::into)
19243            }
19244            #[inline]
19245            fn abi_decode_returns_with_config(
19246                data: &[u8],
19247                config: alloy_sol_types::abi::AbiDecoderConfig,
19248            ) -> alloy_sol_types::Result<Self::Return> {
19249                <Self::ReturnTuple<
19250                    '_,
19251                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19252                        data,
19253                        config,
19254                    )
19255                    .map(Into::into)
19256            }
19257            #[inline]
19258            fn abi_decode_returns_validate(
19259                data: &[u8],
19260            ) -> alloy_sol_types::Result<Self::Return> {
19261                Self::abi_decode_returns_with_config(
19262                    data,
19263                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19264                )
19265            }
19266        }
19267    };
19268    #[derive(serde::Serialize, serde::Deserialize)]
19269    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19270    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
19271```solidity
19272function revokeRole(bytes32 role, address account) external;
19273```*/
19274    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19275    #[derive(Clone)]
19276    pub struct revokeRoleCall {
19277        #[allow(missing_docs)]
19278        pub role: alloy::sol_types::private::FixedBytes<32>,
19279        #[allow(missing_docs)]
19280        pub account: alloy::sol_types::private::Address,
19281    }
19282    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
19283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19284    #[derive(Clone)]
19285    pub struct revokeRoleReturn {}
19286    #[allow(
19287        non_camel_case_types,
19288        non_snake_case,
19289        clippy::pub_underscore_fields,
19290        clippy::style
19291    )]
19292    const _: () = {
19293        use alloy::sol_types as alloy_sol_types;
19294        {
19295            #[doc(hidden)]
19296            #[allow(dead_code)]
19297            type UnderlyingSolTuple<'a> = (
19298                alloy::sol_types::sol_data::FixedBytes<32>,
19299                alloy::sol_types::sol_data::Address,
19300            );
19301            #[doc(hidden)]
19302            type UnderlyingRustTuple<'a> = (
19303                alloy::sol_types::private::FixedBytes<32>,
19304                alloy::sol_types::private::Address,
19305            );
19306            #[cfg(test)]
19307            #[allow(dead_code, unreachable_patterns)]
19308            fn _type_assertion(
19309                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19310            ) {
19311                match _t {
19312                    alloy_sol_types::private::AssertTypeEq::<
19313                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19314                    >(_) => {}
19315                }
19316            }
19317            #[automatically_derived]
19318            #[doc(hidden)]
19319            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
19320                fn from(value: revokeRoleCall) -> Self {
19321                    (value.role, value.account)
19322                }
19323            }
19324            #[automatically_derived]
19325            #[doc(hidden)]
19326            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
19327                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19328                    Self {
19329                        role: tuple.0,
19330                        account: tuple.1,
19331                    }
19332                }
19333            }
19334        }
19335        {
19336            #[doc(hidden)]
19337            #[allow(dead_code)]
19338            type UnderlyingSolTuple<'a> = ();
19339            #[doc(hidden)]
19340            type UnderlyingRustTuple<'a> = ();
19341            #[cfg(test)]
19342            #[allow(dead_code, unreachable_patterns)]
19343            fn _type_assertion(
19344                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19345            ) {
19346                match _t {
19347                    alloy_sol_types::private::AssertTypeEq::<
19348                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19349                    >(_) => {}
19350                }
19351            }
19352            #[automatically_derived]
19353            #[doc(hidden)]
19354            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
19355                fn from(value: revokeRoleReturn) -> Self {
19356                    ()
19357                }
19358            }
19359            #[automatically_derived]
19360            #[doc(hidden)]
19361            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
19362                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19363                    Self {}
19364                }
19365            }
19366        }
19367        impl revokeRoleReturn {
19368            fn _tokenize(
19369                &self,
19370            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19371                ()
19372            }
19373        }
19374        #[automatically_derived]
19375        impl alloy_sol_types::SolCall for revokeRoleCall {
19376            type Parameters<'a> = (
19377                alloy::sol_types::sol_data::FixedBytes<32>,
19378                alloy::sol_types::sol_data::Address,
19379            );
19380            type Token<'a> = <Self::Parameters<
19381                'a,
19382            > as alloy_sol_types::SolType>::Token<'a>;
19383            type Return = revokeRoleReturn;
19384            type ReturnTuple<'a> = ();
19385            type ReturnToken<'a> = <Self::ReturnTuple<
19386                'a,
19387            > as alloy_sol_types::SolType>::Token<'a>;
19388            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
19389            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
19390            #[inline]
19391            fn new<'a>(
19392                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19393            ) -> Self {
19394                tuple.into()
19395            }
19396            #[inline]
19397            fn tokenize(&self) -> Self::Token<'_> {
19398                (
19399                    <alloy::sol_types::sol_data::FixedBytes<
19400                        32,
19401                    > as alloy_sol_types::SolType>::tokenize(&self.role),
19402                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19403                        &self.account,
19404                    ),
19405                )
19406            }
19407            #[inline]
19408            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19409                revokeRoleReturn::_tokenize(ret)
19410            }
19411            #[inline]
19412            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19413                <Self::ReturnTuple<
19414                    '_,
19415                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19416                    .map(Into::into)
19417            }
19418            #[inline]
19419            fn abi_decode_returns_with_config(
19420                data: &[u8],
19421                config: alloy_sol_types::abi::AbiDecoderConfig,
19422            ) -> alloy_sol_types::Result<Self::Return> {
19423                <Self::ReturnTuple<
19424                    '_,
19425                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19426                        data,
19427                        config,
19428                    )
19429                    .map(Into::into)
19430            }
19431            #[inline]
19432            fn abi_decode_returns_validate(
19433                data: &[u8],
19434            ) -> alloy_sol_types::Result<Self::Return> {
19435                Self::abi_decode_returns_with_config(
19436                    data,
19437                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19438                )
19439            }
19440        }
19441    };
19442    #[derive(serde::Serialize, serde::Deserialize)]
19443    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19444    /**Function with signature `schnorrKeys(bytes32)` and selector `0x5f8754a6`.
19445```solidity
19446function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
19447```*/
19448    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19449    #[derive(Clone)]
19450    pub struct schnorrKeysCall {
19451        #[allow(missing_docs)]
19452        pub schnorrKey: alloy::sol_types::private::FixedBytes<32>,
19453    }
19454    #[derive(serde::Serialize, serde::Deserialize)]
19455    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19456    ///Container type for the return parameters of the [`schnorrKeys(bytes32)`](schnorrKeysCall) function.
19457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19458    #[derive(Clone)]
19459    pub struct schnorrKeysReturn {
19460        #[allow(missing_docs)]
19461        pub used: bool,
19462    }
19463    #[allow(
19464        non_camel_case_types,
19465        non_snake_case,
19466        clippy::pub_underscore_fields,
19467        clippy::style
19468    )]
19469    const _: () = {
19470        use alloy::sol_types as alloy_sol_types;
19471        {
19472            #[doc(hidden)]
19473            #[allow(dead_code)]
19474            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
19475            #[doc(hidden)]
19476            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
19477            #[cfg(test)]
19478            #[allow(dead_code, unreachable_patterns)]
19479            fn _type_assertion(
19480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19481            ) {
19482                match _t {
19483                    alloy_sol_types::private::AssertTypeEq::<
19484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19485                    >(_) => {}
19486                }
19487            }
19488            #[automatically_derived]
19489            #[doc(hidden)]
19490            impl ::core::convert::From<schnorrKeysCall> for UnderlyingRustTuple<'_> {
19491                fn from(value: schnorrKeysCall) -> Self {
19492                    (value.schnorrKey,)
19493                }
19494            }
19495            #[automatically_derived]
19496            #[doc(hidden)]
19497            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysCall {
19498                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19499                    Self { schnorrKey: tuple.0 }
19500                }
19501            }
19502        }
19503        {
19504            #[doc(hidden)]
19505            #[allow(dead_code)]
19506            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
19507            #[doc(hidden)]
19508            type UnderlyingRustTuple<'a> = (bool,);
19509            #[cfg(test)]
19510            #[allow(dead_code, unreachable_patterns)]
19511            fn _type_assertion(
19512                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19513            ) {
19514                match _t {
19515                    alloy_sol_types::private::AssertTypeEq::<
19516                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19517                    >(_) => {}
19518                }
19519            }
19520            #[automatically_derived]
19521            #[doc(hidden)]
19522            impl ::core::convert::From<schnorrKeysReturn> for UnderlyingRustTuple<'_> {
19523                fn from(value: schnorrKeysReturn) -> Self {
19524                    (value.used,)
19525                }
19526            }
19527            #[automatically_derived]
19528            #[doc(hidden)]
19529            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysReturn {
19530                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19531                    Self { used: tuple.0 }
19532                }
19533            }
19534        }
19535        #[automatically_derived]
19536        impl alloy_sol_types::SolCall for schnorrKeysCall {
19537            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
19538            type Token<'a> = <Self::Parameters<
19539                'a,
19540            > as alloy_sol_types::SolType>::Token<'a>;
19541            type Return = bool;
19542            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
19543            type ReturnToken<'a> = <Self::ReturnTuple<
19544                'a,
19545            > as alloy_sol_types::SolType>::Token<'a>;
19546            const SIGNATURE: &'static str = "schnorrKeys(bytes32)";
19547            const SELECTOR: [u8; 4] = [95u8, 135u8, 84u8, 166u8];
19548            #[inline]
19549            fn new<'a>(
19550                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19551            ) -> Self {
19552                tuple.into()
19553            }
19554            #[inline]
19555            fn tokenize(&self) -> Self::Token<'_> {
19556                (
19557                    <alloy::sol_types::sol_data::FixedBytes<
19558                        32,
19559                    > as alloy_sol_types::SolType>::tokenize(&self.schnorrKey),
19560                )
19561            }
19562            #[inline]
19563            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19564                (
19565                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
19566                        ret,
19567                    ),
19568                )
19569            }
19570            #[inline]
19571            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19572                <Self::ReturnTuple<
19573                    '_,
19574                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19575                    .map(|r| {
19576                        let r: schnorrKeysReturn = r.into();
19577                        r.used
19578                    })
19579            }
19580            #[inline]
19581            fn abi_decode_returns_with_config(
19582                data: &[u8],
19583                config: alloy_sol_types::abi::AbiDecoderConfig,
19584            ) -> alloy_sol_types::Result<Self::Return> {
19585                <Self::ReturnTuple<
19586                    '_,
19587                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19588                        data,
19589                        config,
19590                    )
19591                    .map(|r| {
19592                        let r: schnorrKeysReturn = r.into();
19593                        r.used
19594                    })
19595            }
19596            #[inline]
19597            fn abi_decode_returns_validate(
19598                data: &[u8],
19599            ) -> alloy_sol_types::Result<Self::Return> {
19600                Self::abi_decode_returns_with_config(
19601                    data,
19602                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19603                )
19604            }
19605        }
19606    };
19607    #[derive(serde::Serialize, serde::Deserialize)]
19608    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19609    /**Function with signature `setMaxCommissionIncrease(uint16)` and selector `0x2dc9bac6`.
19610```solidity
19611function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
19612```*/
19613    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19614    #[derive(Clone)]
19615    pub struct setMaxCommissionIncreaseCall {
19616        #[allow(missing_docs)]
19617        pub newMaxIncrease: u16,
19618    }
19619    ///Container type for the return parameters of the [`setMaxCommissionIncrease(uint16)`](setMaxCommissionIncreaseCall) function.
19620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19621    #[derive(Clone)]
19622    pub struct setMaxCommissionIncreaseReturn {}
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::Uint<16>,);
19635            #[doc(hidden)]
19636            type UnderlyingRustTuple<'a> = (u16,);
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<setMaxCommissionIncreaseCall>
19651            for UnderlyingRustTuple<'_> {
19652                fn from(value: setMaxCommissionIncreaseCall) -> Self {
19653                    (value.newMaxIncrease,)
19654                }
19655            }
19656            #[automatically_derived]
19657            #[doc(hidden)]
19658            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19659            for setMaxCommissionIncreaseCall {
19660                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19661                    Self { newMaxIncrease: tuple.0 }
19662                }
19663            }
19664        }
19665        {
19666            #[doc(hidden)]
19667            #[allow(dead_code)]
19668            type UnderlyingSolTuple<'a> = ();
19669            #[doc(hidden)]
19670            type UnderlyingRustTuple<'a> = ();
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<setMaxCommissionIncreaseReturn>
19685            for UnderlyingRustTuple<'_> {
19686                fn from(value: setMaxCommissionIncreaseReturn) -> Self {
19687                    ()
19688                }
19689            }
19690            #[automatically_derived]
19691            #[doc(hidden)]
19692            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19693            for setMaxCommissionIncreaseReturn {
19694                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19695                    Self {}
19696                }
19697            }
19698        }
19699        impl setMaxCommissionIncreaseReturn {
19700            fn _tokenize(
19701                &self,
19702            ) -> <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::ReturnToken<
19703                '_,
19704            > {
19705                ()
19706            }
19707        }
19708        #[automatically_derived]
19709        impl alloy_sol_types::SolCall for setMaxCommissionIncreaseCall {
19710            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
19711            type Token<'a> = <Self::Parameters<
19712                'a,
19713            > as alloy_sol_types::SolType>::Token<'a>;
19714            type Return = setMaxCommissionIncreaseReturn;
19715            type ReturnTuple<'a> = ();
19716            type ReturnToken<'a> = <Self::ReturnTuple<
19717                'a,
19718            > as alloy_sol_types::SolType>::Token<'a>;
19719            const SIGNATURE: &'static str = "setMaxCommissionIncrease(uint16)";
19720            const SELECTOR: [u8; 4] = [45u8, 201u8, 186u8, 198u8];
19721            #[inline]
19722            fn new<'a>(
19723                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19724            ) -> Self {
19725                tuple.into()
19726            }
19727            #[inline]
19728            fn tokenize(&self) -> Self::Token<'_> {
19729                (
19730                    <alloy::sol_types::sol_data::Uint<
19731                        16,
19732                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
19733                )
19734            }
19735            #[inline]
19736            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19737                setMaxCommissionIncreaseReturn::_tokenize(ret)
19738            }
19739            #[inline]
19740            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19741                <Self::ReturnTuple<
19742                    '_,
19743                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19744                    .map(Into::into)
19745            }
19746            #[inline]
19747            fn abi_decode_returns_with_config(
19748                data: &[u8],
19749                config: alloy_sol_types::abi::AbiDecoderConfig,
19750            ) -> alloy_sol_types::Result<Self::Return> {
19751                <Self::ReturnTuple<
19752                    '_,
19753                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19754                        data,
19755                        config,
19756                    )
19757                    .map(Into::into)
19758            }
19759            #[inline]
19760            fn abi_decode_returns_validate(
19761                data: &[u8],
19762            ) -> alloy_sol_types::Result<Self::Return> {
19763                Self::abi_decode_returns_with_config(
19764                    data,
19765                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19766                )
19767            }
19768        }
19769    };
19770    #[derive(serde::Serialize, serde::Deserialize)]
19771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19772    /**Function with signature `setMinCommissionUpdateInterval(uint256)` and selector `0x394b348f`.
19773```solidity
19774function setMinCommissionUpdateInterval(uint256 newInterval) external;
19775```*/
19776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19777    #[derive(Clone)]
19778    pub struct setMinCommissionUpdateIntervalCall {
19779        #[allow(missing_docs)]
19780        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
19781    }
19782    ///Container type for the return parameters of the [`setMinCommissionUpdateInterval(uint256)`](setMinCommissionUpdateIntervalCall) function.
19783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19784    #[derive(Clone)]
19785    pub struct setMinCommissionUpdateIntervalReturn {}
19786    #[allow(
19787        non_camel_case_types,
19788        non_snake_case,
19789        clippy::pub_underscore_fields,
19790        clippy::style
19791    )]
19792    const _: () = {
19793        use alloy::sol_types as alloy_sol_types;
19794        {
19795            #[doc(hidden)]
19796            #[allow(dead_code)]
19797            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19798            #[doc(hidden)]
19799            type UnderlyingRustTuple<'a> = (
19800                alloy::sol_types::private::primitives::aliases::U256,
19801            );
19802            #[cfg(test)]
19803            #[allow(dead_code, unreachable_patterns)]
19804            fn _type_assertion(
19805                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19806            ) {
19807                match _t {
19808                    alloy_sol_types::private::AssertTypeEq::<
19809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19810                    >(_) => {}
19811                }
19812            }
19813            #[automatically_derived]
19814            #[doc(hidden)]
19815            impl ::core::convert::From<setMinCommissionUpdateIntervalCall>
19816            for UnderlyingRustTuple<'_> {
19817                fn from(value: setMinCommissionUpdateIntervalCall) -> Self {
19818                    (value.newInterval,)
19819                }
19820            }
19821            #[automatically_derived]
19822            #[doc(hidden)]
19823            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19824            for setMinCommissionUpdateIntervalCall {
19825                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19826                    Self { newInterval: tuple.0 }
19827                }
19828            }
19829        }
19830        {
19831            #[doc(hidden)]
19832            #[allow(dead_code)]
19833            type UnderlyingSolTuple<'a> = ();
19834            #[doc(hidden)]
19835            type UnderlyingRustTuple<'a> = ();
19836            #[cfg(test)]
19837            #[allow(dead_code, unreachable_patterns)]
19838            fn _type_assertion(
19839                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19840            ) {
19841                match _t {
19842                    alloy_sol_types::private::AssertTypeEq::<
19843                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19844                    >(_) => {}
19845                }
19846            }
19847            #[automatically_derived]
19848            #[doc(hidden)]
19849            impl ::core::convert::From<setMinCommissionUpdateIntervalReturn>
19850            for UnderlyingRustTuple<'_> {
19851                fn from(value: setMinCommissionUpdateIntervalReturn) -> Self {
19852                    ()
19853                }
19854            }
19855            #[automatically_derived]
19856            #[doc(hidden)]
19857            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19858            for setMinCommissionUpdateIntervalReturn {
19859                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19860                    Self {}
19861                }
19862            }
19863        }
19864        impl setMinCommissionUpdateIntervalReturn {
19865            fn _tokenize(
19866                &self,
19867            ) -> <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::ReturnToken<
19868                '_,
19869            > {
19870                ()
19871            }
19872        }
19873        #[automatically_derived]
19874        impl alloy_sol_types::SolCall for setMinCommissionUpdateIntervalCall {
19875            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19876            type Token<'a> = <Self::Parameters<
19877                'a,
19878            > as alloy_sol_types::SolType>::Token<'a>;
19879            type Return = setMinCommissionUpdateIntervalReturn;
19880            type ReturnTuple<'a> = ();
19881            type ReturnToken<'a> = <Self::ReturnTuple<
19882                'a,
19883            > as alloy_sol_types::SolType>::Token<'a>;
19884            const SIGNATURE: &'static str = "setMinCommissionUpdateInterval(uint256)";
19885            const SELECTOR: [u8; 4] = [57u8, 75u8, 52u8, 143u8];
19886            #[inline]
19887            fn new<'a>(
19888                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19889            ) -> Self {
19890                tuple.into()
19891            }
19892            #[inline]
19893            fn tokenize(&self) -> Self::Token<'_> {
19894                (
19895                    <alloy::sol_types::sol_data::Uint<
19896                        256,
19897                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
19898                )
19899            }
19900            #[inline]
19901            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19902                setMinCommissionUpdateIntervalReturn::_tokenize(ret)
19903            }
19904            #[inline]
19905            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19906                <Self::ReturnTuple<
19907                    '_,
19908                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19909                    .map(Into::into)
19910            }
19911            #[inline]
19912            fn abi_decode_returns_with_config(
19913                data: &[u8],
19914                config: alloy_sol_types::abi::AbiDecoderConfig,
19915            ) -> alloy_sol_types::Result<Self::Return> {
19916                <Self::ReturnTuple<
19917                    '_,
19918                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19919                        data,
19920                        config,
19921                    )
19922                    .map(Into::into)
19923            }
19924            #[inline]
19925            fn abi_decode_returns_validate(
19926                data: &[u8],
19927            ) -> alloy_sol_types::Result<Self::Return> {
19928                Self::abi_decode_returns_with_config(
19929                    data,
19930                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19931                )
19932            }
19933        }
19934    };
19935    #[derive(serde::Serialize, serde::Deserialize)]
19936    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19937    /**Function with signature `setMinDelegateAmount(uint256)` and selector `0x3e732eba`.
19938```solidity
19939function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
19940```*/
19941    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19942    #[derive(Clone)]
19943    pub struct setMinDelegateAmountCall {
19944        #[allow(missing_docs)]
19945        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
19946    }
19947    ///Container type for the return parameters of the [`setMinDelegateAmount(uint256)`](setMinDelegateAmountCall) function.
19948    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19949    #[derive(Clone)]
19950    pub struct setMinDelegateAmountReturn {}
19951    #[allow(
19952        non_camel_case_types,
19953        non_snake_case,
19954        clippy::pub_underscore_fields,
19955        clippy::style
19956    )]
19957    const _: () = {
19958        use alloy::sol_types as alloy_sol_types;
19959        {
19960            #[doc(hidden)]
19961            #[allow(dead_code)]
19962            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19963            #[doc(hidden)]
19964            type UnderlyingRustTuple<'a> = (
19965                alloy::sol_types::private::primitives::aliases::U256,
19966            );
19967            #[cfg(test)]
19968            #[allow(dead_code, unreachable_patterns)]
19969            fn _type_assertion(
19970                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19971            ) {
19972                match _t {
19973                    alloy_sol_types::private::AssertTypeEq::<
19974                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19975                    >(_) => {}
19976                }
19977            }
19978            #[automatically_derived]
19979            #[doc(hidden)]
19980            impl ::core::convert::From<setMinDelegateAmountCall>
19981            for UnderlyingRustTuple<'_> {
19982                fn from(value: setMinDelegateAmountCall) -> Self {
19983                    (value.newMinDelegateAmount,)
19984                }
19985            }
19986            #[automatically_derived]
19987            #[doc(hidden)]
19988            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19989            for setMinDelegateAmountCall {
19990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19991                    Self {
19992                        newMinDelegateAmount: tuple.0,
19993                    }
19994                }
19995            }
19996        }
19997        {
19998            #[doc(hidden)]
19999            #[allow(dead_code)]
20000            type UnderlyingSolTuple<'a> = ();
20001            #[doc(hidden)]
20002            type UnderlyingRustTuple<'a> = ();
20003            #[cfg(test)]
20004            #[allow(dead_code, unreachable_patterns)]
20005            fn _type_assertion(
20006                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20007            ) {
20008                match _t {
20009                    alloy_sol_types::private::AssertTypeEq::<
20010                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20011                    >(_) => {}
20012                }
20013            }
20014            #[automatically_derived]
20015            #[doc(hidden)]
20016            impl ::core::convert::From<setMinDelegateAmountReturn>
20017            for UnderlyingRustTuple<'_> {
20018                fn from(value: setMinDelegateAmountReturn) -> Self {
20019                    ()
20020                }
20021            }
20022            #[automatically_derived]
20023            #[doc(hidden)]
20024            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20025            for setMinDelegateAmountReturn {
20026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20027                    Self {}
20028                }
20029            }
20030        }
20031        impl setMinDelegateAmountReturn {
20032            fn _tokenize(
20033                &self,
20034            ) -> <setMinDelegateAmountCall as alloy_sol_types::SolCall>::ReturnToken<
20035                '_,
20036            > {
20037                ()
20038            }
20039        }
20040        #[automatically_derived]
20041        impl alloy_sol_types::SolCall for setMinDelegateAmountCall {
20042            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
20043            type Token<'a> = <Self::Parameters<
20044                'a,
20045            > as alloy_sol_types::SolType>::Token<'a>;
20046            type Return = setMinDelegateAmountReturn;
20047            type ReturnTuple<'a> = ();
20048            type ReturnToken<'a> = <Self::ReturnTuple<
20049                'a,
20050            > as alloy_sol_types::SolType>::Token<'a>;
20051            const SIGNATURE: &'static str = "setMinDelegateAmount(uint256)";
20052            const SELECTOR: [u8; 4] = [62u8, 115u8, 46u8, 186u8];
20053            #[inline]
20054            fn new<'a>(
20055                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20056            ) -> Self {
20057                tuple.into()
20058            }
20059            #[inline]
20060            fn tokenize(&self) -> Self::Token<'_> {
20061                (
20062                    <alloy::sol_types::sol_data::Uint<
20063                        256,
20064                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
20065                )
20066            }
20067            #[inline]
20068            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20069                setMinDelegateAmountReturn::_tokenize(ret)
20070            }
20071            #[inline]
20072            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20073                <Self::ReturnTuple<
20074                    '_,
20075                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20076                    .map(Into::into)
20077            }
20078            #[inline]
20079            fn abi_decode_returns_with_config(
20080                data: &[u8],
20081                config: alloy_sol_types::abi::AbiDecoderConfig,
20082            ) -> alloy_sol_types::Result<Self::Return> {
20083                <Self::ReturnTuple<
20084                    '_,
20085                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20086                        data,
20087                        config,
20088                    )
20089                    .map(Into::into)
20090            }
20091            #[inline]
20092            fn abi_decode_returns_validate(
20093                data: &[u8],
20094            ) -> alloy_sol_types::Result<Self::Return> {
20095                Self::abi_decode_returns_with_config(
20096                    data,
20097                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20098                )
20099            }
20100        }
20101    };
20102    #[derive(serde::Serialize, serde::Deserialize)]
20103    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20104    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
20105```solidity
20106function supportsInterface(bytes4 interfaceId) external view returns (bool);
20107```*/
20108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20109    #[derive(Clone)]
20110    pub struct supportsInterfaceCall {
20111        #[allow(missing_docs)]
20112        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
20113    }
20114    #[derive(serde::Serialize, serde::Deserialize)]
20115    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20116    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
20117    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20118    #[derive(Clone)]
20119    pub struct supportsInterfaceReturn {
20120        #[allow(missing_docs)]
20121        pub _0: bool,
20122    }
20123    #[allow(
20124        non_camel_case_types,
20125        non_snake_case,
20126        clippy::pub_underscore_fields,
20127        clippy::style
20128    )]
20129    const _: () = {
20130        use alloy::sol_types as alloy_sol_types;
20131        {
20132            #[doc(hidden)]
20133            #[allow(dead_code)]
20134            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
20135            #[doc(hidden)]
20136            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
20137            #[cfg(test)]
20138            #[allow(dead_code, unreachable_patterns)]
20139            fn _type_assertion(
20140                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20141            ) {
20142                match _t {
20143                    alloy_sol_types::private::AssertTypeEq::<
20144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20145                    >(_) => {}
20146                }
20147            }
20148            #[automatically_derived]
20149            #[doc(hidden)]
20150            impl ::core::convert::From<supportsInterfaceCall>
20151            for UnderlyingRustTuple<'_> {
20152                fn from(value: supportsInterfaceCall) -> Self {
20153                    (value.interfaceId,)
20154                }
20155            }
20156            #[automatically_derived]
20157            #[doc(hidden)]
20158            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20159            for supportsInterfaceCall {
20160                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20161                    Self { interfaceId: tuple.0 }
20162                }
20163            }
20164        }
20165        {
20166            #[doc(hidden)]
20167            #[allow(dead_code)]
20168            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
20169            #[doc(hidden)]
20170            type UnderlyingRustTuple<'a> = (bool,);
20171            #[cfg(test)]
20172            #[allow(dead_code, unreachable_patterns)]
20173            fn _type_assertion(
20174                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20175            ) {
20176                match _t {
20177                    alloy_sol_types::private::AssertTypeEq::<
20178                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20179                    >(_) => {}
20180                }
20181            }
20182            #[automatically_derived]
20183            #[doc(hidden)]
20184            impl ::core::convert::From<supportsInterfaceReturn>
20185            for UnderlyingRustTuple<'_> {
20186                fn from(value: supportsInterfaceReturn) -> Self {
20187                    (value._0,)
20188                }
20189            }
20190            #[automatically_derived]
20191            #[doc(hidden)]
20192            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20193            for supportsInterfaceReturn {
20194                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20195                    Self { _0: tuple.0 }
20196                }
20197            }
20198        }
20199        #[automatically_derived]
20200        impl alloy_sol_types::SolCall for supportsInterfaceCall {
20201            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
20202            type Token<'a> = <Self::Parameters<
20203                'a,
20204            > as alloy_sol_types::SolType>::Token<'a>;
20205            type Return = bool;
20206            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
20207            type ReturnToken<'a> = <Self::ReturnTuple<
20208                'a,
20209            > as alloy_sol_types::SolType>::Token<'a>;
20210            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
20211            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
20212            #[inline]
20213            fn new<'a>(
20214                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20215            ) -> Self {
20216                tuple.into()
20217            }
20218            #[inline]
20219            fn tokenize(&self) -> Self::Token<'_> {
20220                (
20221                    <alloy::sol_types::sol_data::FixedBytes<
20222                        4,
20223                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
20224                )
20225            }
20226            #[inline]
20227            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20228                (
20229                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
20230                        ret,
20231                    ),
20232                )
20233            }
20234            #[inline]
20235            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20236                <Self::ReturnTuple<
20237                    '_,
20238                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20239                    .map(|r| {
20240                        let r: supportsInterfaceReturn = r.into();
20241                        r._0
20242                    })
20243            }
20244            #[inline]
20245            fn abi_decode_returns_with_config(
20246                data: &[u8],
20247                config: alloy_sol_types::abi::AbiDecoderConfig,
20248            ) -> alloy_sol_types::Result<Self::Return> {
20249                <Self::ReturnTuple<
20250                    '_,
20251                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20252                        data,
20253                        config,
20254                    )
20255                    .map(|r| {
20256                        let r: supportsInterfaceReturn = r.into();
20257                        r._0
20258                    })
20259            }
20260            #[inline]
20261            fn abi_decode_returns_validate(
20262                data: &[u8],
20263            ) -> alloy_sol_types::Result<Self::Return> {
20264                Self::abi_decode_returns_with_config(
20265                    data,
20266                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20267                )
20268            }
20269        }
20270    };
20271    #[derive(serde::Serialize, serde::Deserialize)]
20272    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20273    /**Function with signature `token()` and selector `0xfc0c546a`.
20274```solidity
20275function token() external view returns (address);
20276```*/
20277    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20278    #[derive(Clone)]
20279    pub struct tokenCall;
20280    #[derive(serde::Serialize, serde::Deserialize)]
20281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20282    ///Container type for the return parameters of the [`token()`](tokenCall) function.
20283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20284    #[derive(Clone)]
20285    pub struct tokenReturn {
20286        #[allow(missing_docs)]
20287        pub _0: alloy::sol_types::private::Address,
20288    }
20289    #[allow(
20290        non_camel_case_types,
20291        non_snake_case,
20292        clippy::pub_underscore_fields,
20293        clippy::style
20294    )]
20295    const _: () = {
20296        use alloy::sol_types as alloy_sol_types;
20297        {
20298            #[doc(hidden)]
20299            #[allow(dead_code)]
20300            type UnderlyingSolTuple<'a> = ();
20301            #[doc(hidden)]
20302            type UnderlyingRustTuple<'a> = ();
20303            #[cfg(test)]
20304            #[allow(dead_code, unreachable_patterns)]
20305            fn _type_assertion(
20306                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20307            ) {
20308                match _t {
20309                    alloy_sol_types::private::AssertTypeEq::<
20310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20311                    >(_) => {}
20312                }
20313            }
20314            #[automatically_derived]
20315            #[doc(hidden)]
20316            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
20317                fn from(value: tokenCall) -> Self {
20318                    ()
20319                }
20320            }
20321            #[automatically_derived]
20322            #[doc(hidden)]
20323            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
20324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20325                    Self
20326                }
20327            }
20328        }
20329        {
20330            #[doc(hidden)]
20331            #[allow(dead_code)]
20332            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
20333            #[doc(hidden)]
20334            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
20335            #[cfg(test)]
20336            #[allow(dead_code, unreachable_patterns)]
20337            fn _type_assertion(
20338                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20339            ) {
20340                match _t {
20341                    alloy_sol_types::private::AssertTypeEq::<
20342                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20343                    >(_) => {}
20344                }
20345            }
20346            #[automatically_derived]
20347            #[doc(hidden)]
20348            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
20349                fn from(value: tokenReturn) -> Self {
20350                    (value._0,)
20351                }
20352            }
20353            #[automatically_derived]
20354            #[doc(hidden)]
20355            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
20356                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20357                    Self { _0: tuple.0 }
20358                }
20359            }
20360        }
20361        #[automatically_derived]
20362        impl alloy_sol_types::SolCall for tokenCall {
20363            type Parameters<'a> = ();
20364            type Token<'a> = <Self::Parameters<
20365                'a,
20366            > as alloy_sol_types::SolType>::Token<'a>;
20367            type Return = alloy::sol_types::private::Address;
20368            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
20369            type ReturnToken<'a> = <Self::ReturnTuple<
20370                'a,
20371            > as alloy_sol_types::SolType>::Token<'a>;
20372            const SIGNATURE: &'static str = "token()";
20373            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
20374            #[inline]
20375            fn new<'a>(
20376                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20377            ) -> Self {
20378                tuple.into()
20379            }
20380            #[inline]
20381            fn tokenize(&self) -> Self::Token<'_> {
20382                ()
20383            }
20384            #[inline]
20385            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20386                (
20387                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20388                        ret,
20389                    ),
20390                )
20391            }
20392            #[inline]
20393            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20394                <Self::ReturnTuple<
20395                    '_,
20396                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20397                    .map(|r| {
20398                        let r: tokenReturn = r.into();
20399                        r._0
20400                    })
20401            }
20402            #[inline]
20403            fn abi_decode_returns_with_config(
20404                data: &[u8],
20405                config: alloy_sol_types::abi::AbiDecoderConfig,
20406            ) -> alloy_sol_types::Result<Self::Return> {
20407                <Self::ReturnTuple<
20408                    '_,
20409                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20410                        data,
20411                        config,
20412                    )
20413                    .map(|r| {
20414                        let r: tokenReturn = r.into();
20415                        r._0
20416                    })
20417            }
20418            #[inline]
20419            fn abi_decode_returns_validate(
20420                data: &[u8],
20421            ) -> alloy_sol_types::Result<Self::Return> {
20422                Self::abi_decode_returns_with_config(
20423                    data,
20424                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20425                )
20426            }
20427        }
20428    };
20429    #[derive(serde::Serialize, serde::Deserialize)]
20430    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20431    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
20432```solidity
20433function transferOwnership(address newOwner) external;
20434```*/
20435    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20436    #[derive(Clone)]
20437    pub struct transferOwnershipCall {
20438        #[allow(missing_docs)]
20439        pub newOwner: alloy::sol_types::private::Address,
20440    }
20441    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
20442    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20443    #[derive(Clone)]
20444    pub struct transferOwnershipReturn {}
20445    #[allow(
20446        non_camel_case_types,
20447        non_snake_case,
20448        clippy::pub_underscore_fields,
20449        clippy::style
20450    )]
20451    const _: () = {
20452        use alloy::sol_types as alloy_sol_types;
20453        {
20454            #[doc(hidden)]
20455            #[allow(dead_code)]
20456            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
20457            #[doc(hidden)]
20458            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
20459            #[cfg(test)]
20460            #[allow(dead_code, unreachable_patterns)]
20461            fn _type_assertion(
20462                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20463            ) {
20464                match _t {
20465                    alloy_sol_types::private::AssertTypeEq::<
20466                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20467                    >(_) => {}
20468                }
20469            }
20470            #[automatically_derived]
20471            #[doc(hidden)]
20472            impl ::core::convert::From<transferOwnershipCall>
20473            for UnderlyingRustTuple<'_> {
20474                fn from(value: transferOwnershipCall) -> Self {
20475                    (value.newOwner,)
20476                }
20477            }
20478            #[automatically_derived]
20479            #[doc(hidden)]
20480            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20481            for transferOwnershipCall {
20482                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20483                    Self { newOwner: tuple.0 }
20484                }
20485            }
20486        }
20487        {
20488            #[doc(hidden)]
20489            #[allow(dead_code)]
20490            type UnderlyingSolTuple<'a> = ();
20491            #[doc(hidden)]
20492            type UnderlyingRustTuple<'a> = ();
20493            #[cfg(test)]
20494            #[allow(dead_code, unreachable_patterns)]
20495            fn _type_assertion(
20496                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20497            ) {
20498                match _t {
20499                    alloy_sol_types::private::AssertTypeEq::<
20500                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20501                    >(_) => {}
20502                }
20503            }
20504            #[automatically_derived]
20505            #[doc(hidden)]
20506            impl ::core::convert::From<transferOwnershipReturn>
20507            for UnderlyingRustTuple<'_> {
20508                fn from(value: transferOwnershipReturn) -> Self {
20509                    ()
20510                }
20511            }
20512            #[automatically_derived]
20513            #[doc(hidden)]
20514            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20515            for transferOwnershipReturn {
20516                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20517                    Self {}
20518                }
20519            }
20520        }
20521        impl transferOwnershipReturn {
20522            fn _tokenize(
20523                &self,
20524            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20525                ()
20526            }
20527        }
20528        #[automatically_derived]
20529        impl alloy_sol_types::SolCall for transferOwnershipCall {
20530            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
20531            type Token<'a> = <Self::Parameters<
20532                'a,
20533            > as alloy_sol_types::SolType>::Token<'a>;
20534            type Return = transferOwnershipReturn;
20535            type ReturnTuple<'a> = ();
20536            type ReturnToken<'a> = <Self::ReturnTuple<
20537                'a,
20538            > as alloy_sol_types::SolType>::Token<'a>;
20539            const SIGNATURE: &'static str = "transferOwnership(address)";
20540            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
20541            #[inline]
20542            fn new<'a>(
20543                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20544            ) -> Self {
20545                tuple.into()
20546            }
20547            #[inline]
20548            fn tokenize(&self) -> Self::Token<'_> {
20549                (
20550                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20551                        &self.newOwner,
20552                    ),
20553                )
20554            }
20555            #[inline]
20556            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20557                transferOwnershipReturn::_tokenize(ret)
20558            }
20559            #[inline]
20560            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20561                <Self::ReturnTuple<
20562                    '_,
20563                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20564                    .map(Into::into)
20565            }
20566            #[inline]
20567            fn abi_decode_returns_with_config(
20568                data: &[u8],
20569                config: alloy_sol_types::abi::AbiDecoderConfig,
20570            ) -> alloy_sol_types::Result<Self::Return> {
20571                <Self::ReturnTuple<
20572                    '_,
20573                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20574                        data,
20575                        config,
20576                    )
20577                    .map(Into::into)
20578            }
20579            #[inline]
20580            fn abi_decode_returns_validate(
20581                data: &[u8],
20582            ) -> alloy_sol_types::Result<Self::Return> {
20583                Self::abi_decode_returns_with_config(
20584                    data,
20585                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20586                )
20587            }
20588        }
20589    };
20590    #[derive(serde::Serialize, serde::Deserialize)]
20591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20592    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
20593```solidity
20594function undelegate(address validator, uint256 amount) external;
20595```*/
20596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20597    #[derive(Clone)]
20598    pub struct undelegateCall {
20599        #[allow(missing_docs)]
20600        pub validator: alloy::sol_types::private::Address,
20601        #[allow(missing_docs)]
20602        pub amount: alloy::sol_types::private::primitives::aliases::U256,
20603    }
20604    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
20605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20606    #[derive(Clone)]
20607    pub struct undelegateReturn {}
20608    #[allow(
20609        non_camel_case_types,
20610        non_snake_case,
20611        clippy::pub_underscore_fields,
20612        clippy::style
20613    )]
20614    const _: () = {
20615        use alloy::sol_types as alloy_sol_types;
20616        {
20617            #[doc(hidden)]
20618            #[allow(dead_code)]
20619            type UnderlyingSolTuple<'a> = (
20620                alloy::sol_types::sol_data::Address,
20621                alloy::sol_types::sol_data::Uint<256>,
20622            );
20623            #[doc(hidden)]
20624            type UnderlyingRustTuple<'a> = (
20625                alloy::sol_types::private::Address,
20626                alloy::sol_types::private::primitives::aliases::U256,
20627            );
20628            #[cfg(test)]
20629            #[allow(dead_code, unreachable_patterns)]
20630            fn _type_assertion(
20631                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20632            ) {
20633                match _t {
20634                    alloy_sol_types::private::AssertTypeEq::<
20635                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20636                    >(_) => {}
20637                }
20638            }
20639            #[automatically_derived]
20640            #[doc(hidden)]
20641            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
20642                fn from(value: undelegateCall) -> Self {
20643                    (value.validator, value.amount)
20644                }
20645            }
20646            #[automatically_derived]
20647            #[doc(hidden)]
20648            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
20649                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20650                    Self {
20651                        validator: tuple.0,
20652                        amount: tuple.1,
20653                    }
20654                }
20655            }
20656        }
20657        {
20658            #[doc(hidden)]
20659            #[allow(dead_code)]
20660            type UnderlyingSolTuple<'a> = ();
20661            #[doc(hidden)]
20662            type UnderlyingRustTuple<'a> = ();
20663            #[cfg(test)]
20664            #[allow(dead_code, unreachable_patterns)]
20665            fn _type_assertion(
20666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20667            ) {
20668                match _t {
20669                    alloy_sol_types::private::AssertTypeEq::<
20670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20671                    >(_) => {}
20672                }
20673            }
20674            #[automatically_derived]
20675            #[doc(hidden)]
20676            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
20677                fn from(value: undelegateReturn) -> Self {
20678                    ()
20679                }
20680            }
20681            #[automatically_derived]
20682            #[doc(hidden)]
20683            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
20684                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20685                    Self {}
20686                }
20687            }
20688        }
20689        impl undelegateReturn {
20690            fn _tokenize(
20691                &self,
20692            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20693                ()
20694            }
20695        }
20696        #[automatically_derived]
20697        impl alloy_sol_types::SolCall for undelegateCall {
20698            type Parameters<'a> = (
20699                alloy::sol_types::sol_data::Address,
20700                alloy::sol_types::sol_data::Uint<256>,
20701            );
20702            type Token<'a> = <Self::Parameters<
20703                'a,
20704            > as alloy_sol_types::SolType>::Token<'a>;
20705            type Return = undelegateReturn;
20706            type ReturnTuple<'a> = ();
20707            type ReturnToken<'a> = <Self::ReturnTuple<
20708                'a,
20709            > as alloy_sol_types::SolType>::Token<'a>;
20710            const SIGNATURE: &'static str = "undelegate(address,uint256)";
20711            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
20712            #[inline]
20713            fn new<'a>(
20714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20715            ) -> Self {
20716                tuple.into()
20717            }
20718            #[inline]
20719            fn tokenize(&self) -> Self::Token<'_> {
20720                (
20721                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20722                        &self.validator,
20723                    ),
20724                    <alloy::sol_types::sol_data::Uint<
20725                        256,
20726                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
20727                )
20728            }
20729            #[inline]
20730            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20731                undelegateReturn::_tokenize(ret)
20732            }
20733            #[inline]
20734            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20735                <Self::ReturnTuple<
20736                    '_,
20737                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20738                    .map(Into::into)
20739            }
20740            #[inline]
20741            fn abi_decode_returns_with_config(
20742                data: &[u8],
20743                config: alloy_sol_types::abi::AbiDecoderConfig,
20744            ) -> alloy_sol_types::Result<Self::Return> {
20745                <Self::ReturnTuple<
20746                    '_,
20747                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20748                        data,
20749                        config,
20750                    )
20751                    .map(Into::into)
20752            }
20753            #[inline]
20754            fn abi_decode_returns_validate(
20755                data: &[u8],
20756            ) -> alloy_sol_types::Result<Self::Return> {
20757                Self::abi_decode_returns_with_config(
20758                    data,
20759                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20760                )
20761            }
20762        }
20763    };
20764    #[derive(serde::Serialize, serde::Deserialize)]
20765    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20766    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
20767```solidity
20768function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
20769```*/
20770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20771    #[derive(Clone)]
20772    pub struct undelegationsCall {
20773        #[allow(missing_docs)]
20774        pub validator: alloy::sol_types::private::Address,
20775        #[allow(missing_docs)]
20776        pub delegator: alloy::sol_types::private::Address,
20777    }
20778    #[derive(serde::Serialize, serde::Deserialize)]
20779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20780    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
20781    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20782    #[derive(Clone)]
20783    pub struct undelegationsReturn {
20784        #[allow(missing_docs)]
20785        pub amount: alloy::sol_types::private::primitives::aliases::U256,
20786        #[allow(missing_docs)]
20787        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
20788    }
20789    #[allow(
20790        non_camel_case_types,
20791        non_snake_case,
20792        clippy::pub_underscore_fields,
20793        clippy::style
20794    )]
20795    const _: () = {
20796        use alloy::sol_types as alloy_sol_types;
20797        {
20798            #[doc(hidden)]
20799            #[allow(dead_code)]
20800            type UnderlyingSolTuple<'a> = (
20801                alloy::sol_types::sol_data::Address,
20802                alloy::sol_types::sol_data::Address,
20803            );
20804            #[doc(hidden)]
20805            type UnderlyingRustTuple<'a> = (
20806                alloy::sol_types::private::Address,
20807                alloy::sol_types::private::Address,
20808            );
20809            #[cfg(test)]
20810            #[allow(dead_code, unreachable_patterns)]
20811            fn _type_assertion(
20812                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20813            ) {
20814                match _t {
20815                    alloy_sol_types::private::AssertTypeEq::<
20816                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20817                    >(_) => {}
20818                }
20819            }
20820            #[automatically_derived]
20821            #[doc(hidden)]
20822            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
20823                fn from(value: undelegationsCall) -> Self {
20824                    (value.validator, value.delegator)
20825                }
20826            }
20827            #[automatically_derived]
20828            #[doc(hidden)]
20829            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
20830                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20831                    Self {
20832                        validator: tuple.0,
20833                        delegator: tuple.1,
20834                    }
20835                }
20836            }
20837        }
20838        {
20839            #[doc(hidden)]
20840            #[allow(dead_code)]
20841            type UnderlyingSolTuple<'a> = (
20842                alloy::sol_types::sol_data::Uint<256>,
20843                alloy::sol_types::sol_data::Uint<256>,
20844            );
20845            #[doc(hidden)]
20846            type UnderlyingRustTuple<'a> = (
20847                alloy::sol_types::private::primitives::aliases::U256,
20848                alloy::sol_types::private::primitives::aliases::U256,
20849            );
20850            #[cfg(test)]
20851            #[allow(dead_code, unreachable_patterns)]
20852            fn _type_assertion(
20853                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20854            ) {
20855                match _t {
20856                    alloy_sol_types::private::AssertTypeEq::<
20857                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20858                    >(_) => {}
20859                }
20860            }
20861            #[automatically_derived]
20862            #[doc(hidden)]
20863            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
20864                fn from(value: undelegationsReturn) -> Self {
20865                    (value.amount, value.unlocksAt)
20866                }
20867            }
20868            #[automatically_derived]
20869            #[doc(hidden)]
20870            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
20871                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20872                    Self {
20873                        amount: tuple.0,
20874                        unlocksAt: tuple.1,
20875                    }
20876                }
20877            }
20878        }
20879        impl undelegationsReturn {
20880            fn _tokenize(
20881                &self,
20882            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20883                (
20884                    <alloy::sol_types::sol_data::Uint<
20885                        256,
20886                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
20887                    <alloy::sol_types::sol_data::Uint<
20888                        256,
20889                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
20890                )
20891            }
20892        }
20893        #[automatically_derived]
20894        impl alloy_sol_types::SolCall for undelegationsCall {
20895            type Parameters<'a> = (
20896                alloy::sol_types::sol_data::Address,
20897                alloy::sol_types::sol_data::Address,
20898            );
20899            type Token<'a> = <Self::Parameters<
20900                'a,
20901            > as alloy_sol_types::SolType>::Token<'a>;
20902            type Return = undelegationsReturn;
20903            type ReturnTuple<'a> = (
20904                alloy::sol_types::sol_data::Uint<256>,
20905                alloy::sol_types::sol_data::Uint<256>,
20906            );
20907            type ReturnToken<'a> = <Self::ReturnTuple<
20908                'a,
20909            > as alloy_sol_types::SolType>::Token<'a>;
20910            const SIGNATURE: &'static str = "undelegations(address,address)";
20911            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
20912            #[inline]
20913            fn new<'a>(
20914                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20915            ) -> Self {
20916                tuple.into()
20917            }
20918            #[inline]
20919            fn tokenize(&self) -> Self::Token<'_> {
20920                (
20921                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20922                        &self.validator,
20923                    ),
20924                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20925                        &self.delegator,
20926                    ),
20927                )
20928            }
20929            #[inline]
20930            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20931                undelegationsReturn::_tokenize(ret)
20932            }
20933            #[inline]
20934            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20935                <Self::ReturnTuple<
20936                    '_,
20937                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20938                    .map(Into::into)
20939            }
20940            #[inline]
20941            fn abi_decode_returns_with_config(
20942                data: &[u8],
20943                config: alloy_sol_types::abi::AbiDecoderConfig,
20944            ) -> alloy_sol_types::Result<Self::Return> {
20945                <Self::ReturnTuple<
20946                    '_,
20947                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20948                        data,
20949                        config,
20950                    )
20951                    .map(Into::into)
20952            }
20953            #[inline]
20954            fn abi_decode_returns_validate(
20955                data: &[u8],
20956            ) -> alloy_sol_types::Result<Self::Return> {
20957                Self::abi_decode_returns_with_config(
20958                    data,
20959                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20960                )
20961            }
20962        }
20963    };
20964    #[derive(serde::Serialize, serde::Deserialize)]
20965    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20966    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
20967```solidity
20968function unpause() external;
20969```*/
20970    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20971    #[derive(Clone)]
20972    pub struct unpauseCall;
20973    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
20974    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20975    #[derive(Clone)]
20976    pub struct unpauseReturn {}
20977    #[allow(
20978        non_camel_case_types,
20979        non_snake_case,
20980        clippy::pub_underscore_fields,
20981        clippy::style
20982    )]
20983    const _: () = {
20984        use alloy::sol_types as alloy_sol_types;
20985        {
20986            #[doc(hidden)]
20987            #[allow(dead_code)]
20988            type UnderlyingSolTuple<'a> = ();
20989            #[doc(hidden)]
20990            type UnderlyingRustTuple<'a> = ();
20991            #[cfg(test)]
20992            #[allow(dead_code, unreachable_patterns)]
20993            fn _type_assertion(
20994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20995            ) {
20996                match _t {
20997                    alloy_sol_types::private::AssertTypeEq::<
20998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20999                    >(_) => {}
21000                }
21001            }
21002            #[automatically_derived]
21003            #[doc(hidden)]
21004            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
21005                fn from(value: unpauseCall) -> Self {
21006                    ()
21007                }
21008            }
21009            #[automatically_derived]
21010            #[doc(hidden)]
21011            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
21012                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21013                    Self
21014                }
21015            }
21016        }
21017        {
21018            #[doc(hidden)]
21019            #[allow(dead_code)]
21020            type UnderlyingSolTuple<'a> = ();
21021            #[doc(hidden)]
21022            type UnderlyingRustTuple<'a> = ();
21023            #[cfg(test)]
21024            #[allow(dead_code, unreachable_patterns)]
21025            fn _type_assertion(
21026                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21027            ) {
21028                match _t {
21029                    alloy_sol_types::private::AssertTypeEq::<
21030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21031                    >(_) => {}
21032                }
21033            }
21034            #[automatically_derived]
21035            #[doc(hidden)]
21036            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
21037                fn from(value: unpauseReturn) -> Self {
21038                    ()
21039                }
21040            }
21041            #[automatically_derived]
21042            #[doc(hidden)]
21043            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
21044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21045                    Self {}
21046                }
21047            }
21048        }
21049        impl unpauseReturn {
21050            fn _tokenize(
21051                &self,
21052            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21053                ()
21054            }
21055        }
21056        #[automatically_derived]
21057        impl alloy_sol_types::SolCall for unpauseCall {
21058            type Parameters<'a> = ();
21059            type Token<'a> = <Self::Parameters<
21060                'a,
21061            > as alloy_sol_types::SolType>::Token<'a>;
21062            type Return = unpauseReturn;
21063            type ReturnTuple<'a> = ();
21064            type ReturnToken<'a> = <Self::ReturnTuple<
21065                'a,
21066            > as alloy_sol_types::SolType>::Token<'a>;
21067            const SIGNATURE: &'static str = "unpause()";
21068            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
21069            #[inline]
21070            fn new<'a>(
21071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21072            ) -> Self {
21073                tuple.into()
21074            }
21075            #[inline]
21076            fn tokenize(&self) -> Self::Token<'_> {
21077                ()
21078            }
21079            #[inline]
21080            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21081                unpauseReturn::_tokenize(ret)
21082            }
21083            #[inline]
21084            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21085                <Self::ReturnTuple<
21086                    '_,
21087                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21088                    .map(Into::into)
21089            }
21090            #[inline]
21091            fn abi_decode_returns_with_config(
21092                data: &[u8],
21093                config: alloy_sol_types::abi::AbiDecoderConfig,
21094            ) -> alloy_sol_types::Result<Self::Return> {
21095                <Self::ReturnTuple<
21096                    '_,
21097                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
21098                        data,
21099                        config,
21100                    )
21101                    .map(Into::into)
21102            }
21103            #[inline]
21104            fn abi_decode_returns_validate(
21105                data: &[u8],
21106            ) -> alloy_sol_types::Result<Self::Return> {
21107                Self::abi_decode_returns_with_config(
21108                    data,
21109                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
21110                )
21111            }
21112        }
21113    };
21114    #[derive(serde::Serialize, serde::Deserialize)]
21115    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21116    /**Function with signature `updateCommission(uint16)` and selector `0x3b2b7ffa`.
21117```solidity
21118function updateCommission(uint16 newCommission) external;
21119```*/
21120    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21121    #[derive(Clone)]
21122    pub struct updateCommissionCall {
21123        #[allow(missing_docs)]
21124        pub newCommission: u16,
21125    }
21126    ///Container type for the return parameters of the [`updateCommission(uint16)`](updateCommissionCall) function.
21127    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21128    #[derive(Clone)]
21129    pub struct updateCommissionReturn {}
21130    #[allow(
21131        non_camel_case_types,
21132        non_snake_case,
21133        clippy::pub_underscore_fields,
21134        clippy::style
21135    )]
21136    const _: () = {
21137        use alloy::sol_types as alloy_sol_types;
21138        {
21139            #[doc(hidden)]
21140            #[allow(dead_code)]
21141            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
21142            #[doc(hidden)]
21143            type UnderlyingRustTuple<'a> = (u16,);
21144            #[cfg(test)]
21145            #[allow(dead_code, unreachable_patterns)]
21146            fn _type_assertion(
21147                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21148            ) {
21149                match _t {
21150                    alloy_sol_types::private::AssertTypeEq::<
21151                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21152                    >(_) => {}
21153                }
21154            }
21155            #[automatically_derived]
21156            #[doc(hidden)]
21157            impl ::core::convert::From<updateCommissionCall>
21158            for UnderlyingRustTuple<'_> {
21159                fn from(value: updateCommissionCall) -> Self {
21160                    (value.newCommission,)
21161                }
21162            }
21163            #[automatically_derived]
21164            #[doc(hidden)]
21165            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21166            for updateCommissionCall {
21167                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21168                    Self { newCommission: tuple.0 }
21169                }
21170            }
21171        }
21172        {
21173            #[doc(hidden)]
21174            #[allow(dead_code)]
21175            type UnderlyingSolTuple<'a> = ();
21176            #[doc(hidden)]
21177            type UnderlyingRustTuple<'a> = ();
21178            #[cfg(test)]
21179            #[allow(dead_code, unreachable_patterns)]
21180            fn _type_assertion(
21181                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21182            ) {
21183                match _t {
21184                    alloy_sol_types::private::AssertTypeEq::<
21185                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21186                    >(_) => {}
21187                }
21188            }
21189            #[automatically_derived]
21190            #[doc(hidden)]
21191            impl ::core::convert::From<updateCommissionReturn>
21192            for UnderlyingRustTuple<'_> {
21193                fn from(value: updateCommissionReturn) -> Self {
21194                    ()
21195                }
21196            }
21197            #[automatically_derived]
21198            #[doc(hidden)]
21199            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21200            for updateCommissionReturn {
21201                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21202                    Self {}
21203                }
21204            }
21205        }
21206        impl updateCommissionReturn {
21207            fn _tokenize(
21208                &self,
21209            ) -> <updateCommissionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21210                ()
21211            }
21212        }
21213        #[automatically_derived]
21214        impl alloy_sol_types::SolCall for updateCommissionCall {
21215            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
21216            type Token<'a> = <Self::Parameters<
21217                'a,
21218            > as alloy_sol_types::SolType>::Token<'a>;
21219            type Return = updateCommissionReturn;
21220            type ReturnTuple<'a> = ();
21221            type ReturnToken<'a> = <Self::ReturnTuple<
21222                'a,
21223            > as alloy_sol_types::SolType>::Token<'a>;
21224            const SIGNATURE: &'static str = "updateCommission(uint16)";
21225            const SELECTOR: [u8; 4] = [59u8, 43u8, 127u8, 250u8];
21226            #[inline]
21227            fn new<'a>(
21228                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21229            ) -> Self {
21230                tuple.into()
21231            }
21232            #[inline]
21233            fn tokenize(&self) -> Self::Token<'_> {
21234                (
21235                    <alloy::sol_types::sol_data::Uint<
21236                        16,
21237                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
21238                )
21239            }
21240            #[inline]
21241            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21242                updateCommissionReturn::_tokenize(ret)
21243            }
21244            #[inline]
21245            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21246                <Self::ReturnTuple<
21247                    '_,
21248                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21249                    .map(Into::into)
21250            }
21251            #[inline]
21252            fn abi_decode_returns_with_config(
21253                data: &[u8],
21254                config: alloy_sol_types::abi::AbiDecoderConfig,
21255            ) -> alloy_sol_types::Result<Self::Return> {
21256                <Self::ReturnTuple<
21257                    '_,
21258                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
21259                        data,
21260                        config,
21261                    )
21262                    .map(Into::into)
21263            }
21264            #[inline]
21265            fn abi_decode_returns_validate(
21266                data: &[u8],
21267            ) -> alloy_sol_types::Result<Self::Return> {
21268                Self::abi_decode_returns_with_config(
21269                    data,
21270                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
21271                )
21272            }
21273        }
21274    };
21275    #[derive(serde::Serialize, serde::Deserialize)]
21276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21277    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
21278```solidity
21279function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
21280```*/
21281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21282    #[derive(Clone)]
21283    pub struct updateConsensusKeysCall {
21284        #[allow(missing_docs)]
21285        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
21286        #[allow(missing_docs)]
21287        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
21288        #[allow(missing_docs)]
21289        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
21290    }
21291    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
21292    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21293    #[derive(Clone)]
21294    pub struct updateConsensusKeysReturn {}
21295    #[allow(
21296        non_camel_case_types,
21297        non_snake_case,
21298        clippy::pub_underscore_fields,
21299        clippy::style
21300    )]
21301    const _: () = {
21302        use alloy::sol_types as alloy_sol_types;
21303        {
21304            #[doc(hidden)]
21305            #[allow(dead_code)]
21306            type UnderlyingSolTuple<'a> = (
21307                BN254::G2Point,
21308                EdOnBN254::EdOnBN254Point,
21309                BN254::G1Point,
21310            );
21311            #[doc(hidden)]
21312            type UnderlyingRustTuple<'a> = (
21313                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
21314                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
21315                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
21316            );
21317            #[cfg(test)]
21318            #[allow(dead_code, unreachable_patterns)]
21319            fn _type_assertion(
21320                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21321            ) {
21322                match _t {
21323                    alloy_sol_types::private::AssertTypeEq::<
21324                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21325                    >(_) => {}
21326                }
21327            }
21328            #[automatically_derived]
21329            #[doc(hidden)]
21330            impl ::core::convert::From<updateConsensusKeysCall>
21331            for UnderlyingRustTuple<'_> {
21332                fn from(value: updateConsensusKeysCall) -> Self {
21333                    (value._0, value._1, value._2)
21334                }
21335            }
21336            #[automatically_derived]
21337            #[doc(hidden)]
21338            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21339            for updateConsensusKeysCall {
21340                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21341                    Self {
21342                        _0: tuple.0,
21343                        _1: tuple.1,
21344                        _2: tuple.2,
21345                    }
21346                }
21347            }
21348        }
21349        {
21350            #[doc(hidden)]
21351            #[allow(dead_code)]
21352            type UnderlyingSolTuple<'a> = ();
21353            #[doc(hidden)]
21354            type UnderlyingRustTuple<'a> = ();
21355            #[cfg(test)]
21356            #[allow(dead_code, unreachable_patterns)]
21357            fn _type_assertion(
21358                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21359            ) {
21360                match _t {
21361                    alloy_sol_types::private::AssertTypeEq::<
21362                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21363                    >(_) => {}
21364                }
21365            }
21366            #[automatically_derived]
21367            #[doc(hidden)]
21368            impl ::core::convert::From<updateConsensusKeysReturn>
21369            for UnderlyingRustTuple<'_> {
21370                fn from(value: updateConsensusKeysReturn) -> Self {
21371                    ()
21372                }
21373            }
21374            #[automatically_derived]
21375            #[doc(hidden)]
21376            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21377            for updateConsensusKeysReturn {
21378                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21379                    Self {}
21380                }
21381            }
21382        }
21383        impl updateConsensusKeysReturn {
21384            fn _tokenize(
21385                &self,
21386            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21387                ()
21388            }
21389        }
21390        #[automatically_derived]
21391        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
21392            type Parameters<'a> = (
21393                BN254::G2Point,
21394                EdOnBN254::EdOnBN254Point,
21395                BN254::G1Point,
21396            );
21397            type Token<'a> = <Self::Parameters<
21398                'a,
21399            > as alloy_sol_types::SolType>::Token<'a>;
21400            type Return = updateConsensusKeysReturn;
21401            type ReturnTuple<'a> = ();
21402            type ReturnToken<'a> = <Self::ReturnTuple<
21403                'a,
21404            > as alloy_sol_types::SolType>::Token<'a>;
21405            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
21406            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
21407            #[inline]
21408            fn new<'a>(
21409                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21410            ) -> Self {
21411                tuple.into()
21412            }
21413            #[inline]
21414            fn tokenize(&self) -> Self::Token<'_> {
21415                (
21416                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
21417                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
21418                        &self._1,
21419                    ),
21420                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
21421                )
21422            }
21423            #[inline]
21424            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21425                updateConsensusKeysReturn::_tokenize(ret)
21426            }
21427            #[inline]
21428            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21429                <Self::ReturnTuple<
21430                    '_,
21431                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21432                    .map(Into::into)
21433            }
21434            #[inline]
21435            fn abi_decode_returns_with_config(
21436                data: &[u8],
21437                config: alloy_sol_types::abi::AbiDecoderConfig,
21438            ) -> alloy_sol_types::Result<Self::Return> {
21439                <Self::ReturnTuple<
21440                    '_,
21441                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
21442                        data,
21443                        config,
21444                    )
21445                    .map(Into::into)
21446            }
21447            #[inline]
21448            fn abi_decode_returns_validate(
21449                data: &[u8],
21450            ) -> alloy_sol_types::Result<Self::Return> {
21451                Self::abi_decode_returns_with_config(
21452                    data,
21453                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
21454                )
21455            }
21456        }
21457    };
21458    #[derive(serde::Serialize, serde::Deserialize)]
21459    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21460    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
21461```solidity
21462function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
21463```*/
21464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21465    #[derive(Clone)]
21466    pub struct updateConsensusKeysV2Call {
21467        #[allow(missing_docs)]
21468        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
21469        #[allow(missing_docs)]
21470        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
21471        #[allow(missing_docs)]
21472        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
21473        #[allow(missing_docs)]
21474        pub schnorrSig: alloy::sol_types::private::Bytes,
21475    }
21476    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
21477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21478    #[derive(Clone)]
21479    pub struct updateConsensusKeysV2Return {}
21480    #[allow(
21481        non_camel_case_types,
21482        non_snake_case,
21483        clippy::pub_underscore_fields,
21484        clippy::style
21485    )]
21486    const _: () = {
21487        use alloy::sol_types as alloy_sol_types;
21488        {
21489            #[doc(hidden)]
21490            #[allow(dead_code)]
21491            type UnderlyingSolTuple<'a> = (
21492                BN254::G2Point,
21493                EdOnBN254::EdOnBN254Point,
21494                BN254::G1Point,
21495                alloy::sol_types::sol_data::Bytes,
21496            );
21497            #[doc(hidden)]
21498            type UnderlyingRustTuple<'a> = (
21499                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
21500                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
21501                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
21502                alloy::sol_types::private::Bytes,
21503            );
21504            #[cfg(test)]
21505            #[allow(dead_code, unreachable_patterns)]
21506            fn _type_assertion(
21507                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21508            ) {
21509                match _t {
21510                    alloy_sol_types::private::AssertTypeEq::<
21511                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21512                    >(_) => {}
21513                }
21514            }
21515            #[automatically_derived]
21516            #[doc(hidden)]
21517            impl ::core::convert::From<updateConsensusKeysV2Call>
21518            for UnderlyingRustTuple<'_> {
21519                fn from(value: updateConsensusKeysV2Call) -> Self {
21520                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
21521                }
21522            }
21523            #[automatically_derived]
21524            #[doc(hidden)]
21525            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21526            for updateConsensusKeysV2Call {
21527                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21528                    Self {
21529                        blsVK: tuple.0,
21530                        schnorrVK: tuple.1,
21531                        blsSig: tuple.2,
21532                        schnorrSig: tuple.3,
21533                    }
21534                }
21535            }
21536        }
21537        {
21538            #[doc(hidden)]
21539            #[allow(dead_code)]
21540            type UnderlyingSolTuple<'a> = ();
21541            #[doc(hidden)]
21542            type UnderlyingRustTuple<'a> = ();
21543            #[cfg(test)]
21544            #[allow(dead_code, unreachable_patterns)]
21545            fn _type_assertion(
21546                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21547            ) {
21548                match _t {
21549                    alloy_sol_types::private::AssertTypeEq::<
21550                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21551                    >(_) => {}
21552                }
21553            }
21554            #[automatically_derived]
21555            #[doc(hidden)]
21556            impl ::core::convert::From<updateConsensusKeysV2Return>
21557            for UnderlyingRustTuple<'_> {
21558                fn from(value: updateConsensusKeysV2Return) -> Self {
21559                    ()
21560                }
21561            }
21562            #[automatically_derived]
21563            #[doc(hidden)]
21564            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21565            for updateConsensusKeysV2Return {
21566                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21567                    Self {}
21568                }
21569            }
21570        }
21571        impl updateConsensusKeysV2Return {
21572            fn _tokenize(
21573                &self,
21574            ) -> <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::ReturnToken<
21575                '_,
21576            > {
21577                ()
21578            }
21579        }
21580        #[automatically_derived]
21581        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
21582            type Parameters<'a> = (
21583                BN254::G2Point,
21584                EdOnBN254::EdOnBN254Point,
21585                BN254::G1Point,
21586                alloy::sol_types::sol_data::Bytes,
21587            );
21588            type Token<'a> = <Self::Parameters<
21589                'a,
21590            > as alloy_sol_types::SolType>::Token<'a>;
21591            type Return = updateConsensusKeysV2Return;
21592            type ReturnTuple<'a> = ();
21593            type ReturnToken<'a> = <Self::ReturnTuple<
21594                'a,
21595            > as alloy_sol_types::SolType>::Token<'a>;
21596            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
21597            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
21598            #[inline]
21599            fn new<'a>(
21600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21601            ) -> Self {
21602                tuple.into()
21603            }
21604            #[inline]
21605            fn tokenize(&self) -> Self::Token<'_> {
21606                (
21607                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
21608                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
21609                        &self.schnorrVK,
21610                    ),
21611                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
21612                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
21613                        &self.schnorrSig,
21614                    ),
21615                )
21616            }
21617            #[inline]
21618            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21619                updateConsensusKeysV2Return::_tokenize(ret)
21620            }
21621            #[inline]
21622            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21623                <Self::ReturnTuple<
21624                    '_,
21625                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21626                    .map(Into::into)
21627            }
21628            #[inline]
21629            fn abi_decode_returns_with_config(
21630                data: &[u8],
21631                config: alloy_sol_types::abi::AbiDecoderConfig,
21632            ) -> alloy_sol_types::Result<Self::Return> {
21633                <Self::ReturnTuple<
21634                    '_,
21635                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
21636                        data,
21637                        config,
21638                    )
21639                    .map(Into::into)
21640            }
21641            #[inline]
21642            fn abi_decode_returns_validate(
21643                data: &[u8],
21644            ) -> alloy_sol_types::Result<Self::Return> {
21645                Self::abi_decode_returns_with_config(
21646                    data,
21647                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
21648                )
21649            }
21650        }
21651    };
21652    #[derive(serde::Serialize, serde::Deserialize)]
21653    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21654    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
21655```solidity
21656function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
21657```*/
21658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21659    #[derive(Clone)]
21660    pub struct updateExitEscrowPeriodCall {
21661        #[allow(missing_docs)]
21662        pub newExitEscrowPeriod: u64,
21663    }
21664    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
21665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21666    #[derive(Clone)]
21667    pub struct updateExitEscrowPeriodReturn {}
21668    #[allow(
21669        non_camel_case_types,
21670        non_snake_case,
21671        clippy::pub_underscore_fields,
21672        clippy::style
21673    )]
21674    const _: () = {
21675        use alloy::sol_types as alloy_sol_types;
21676        {
21677            #[doc(hidden)]
21678            #[allow(dead_code)]
21679            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
21680            #[doc(hidden)]
21681            type UnderlyingRustTuple<'a> = (u64,);
21682            #[cfg(test)]
21683            #[allow(dead_code, unreachable_patterns)]
21684            fn _type_assertion(
21685                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21686            ) {
21687                match _t {
21688                    alloy_sol_types::private::AssertTypeEq::<
21689                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21690                    >(_) => {}
21691                }
21692            }
21693            #[automatically_derived]
21694            #[doc(hidden)]
21695            impl ::core::convert::From<updateExitEscrowPeriodCall>
21696            for UnderlyingRustTuple<'_> {
21697                fn from(value: updateExitEscrowPeriodCall) -> Self {
21698                    (value.newExitEscrowPeriod,)
21699                }
21700            }
21701            #[automatically_derived]
21702            #[doc(hidden)]
21703            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21704            for updateExitEscrowPeriodCall {
21705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21706                    Self {
21707                        newExitEscrowPeriod: tuple.0,
21708                    }
21709                }
21710            }
21711        }
21712        {
21713            #[doc(hidden)]
21714            #[allow(dead_code)]
21715            type UnderlyingSolTuple<'a> = ();
21716            #[doc(hidden)]
21717            type UnderlyingRustTuple<'a> = ();
21718            #[cfg(test)]
21719            #[allow(dead_code, unreachable_patterns)]
21720            fn _type_assertion(
21721                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21722            ) {
21723                match _t {
21724                    alloy_sol_types::private::AssertTypeEq::<
21725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21726                    >(_) => {}
21727                }
21728            }
21729            #[automatically_derived]
21730            #[doc(hidden)]
21731            impl ::core::convert::From<updateExitEscrowPeriodReturn>
21732            for UnderlyingRustTuple<'_> {
21733                fn from(value: updateExitEscrowPeriodReturn) -> Self {
21734                    ()
21735                }
21736            }
21737            #[automatically_derived]
21738            #[doc(hidden)]
21739            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21740            for updateExitEscrowPeriodReturn {
21741                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21742                    Self {}
21743                }
21744            }
21745        }
21746        impl updateExitEscrowPeriodReturn {
21747            fn _tokenize(
21748                &self,
21749            ) -> <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
21750                '_,
21751            > {
21752                ()
21753            }
21754        }
21755        #[automatically_derived]
21756        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
21757            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
21758            type Token<'a> = <Self::Parameters<
21759                'a,
21760            > as alloy_sol_types::SolType>::Token<'a>;
21761            type Return = updateExitEscrowPeriodReturn;
21762            type ReturnTuple<'a> = ();
21763            type ReturnToken<'a> = <Self::ReturnTuple<
21764                'a,
21765            > as alloy_sol_types::SolType>::Token<'a>;
21766            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
21767            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
21768            #[inline]
21769            fn new<'a>(
21770                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21771            ) -> Self {
21772                tuple.into()
21773            }
21774            #[inline]
21775            fn tokenize(&self) -> Self::Token<'_> {
21776                (
21777                    <alloy::sol_types::sol_data::Uint<
21778                        64,
21779                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
21780                )
21781            }
21782            #[inline]
21783            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21784                updateExitEscrowPeriodReturn::_tokenize(ret)
21785            }
21786            #[inline]
21787            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21788                <Self::ReturnTuple<
21789                    '_,
21790                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21791                    .map(Into::into)
21792            }
21793            #[inline]
21794            fn abi_decode_returns_with_config(
21795                data: &[u8],
21796                config: alloy_sol_types::abi::AbiDecoderConfig,
21797            ) -> alloy_sol_types::Result<Self::Return> {
21798                <Self::ReturnTuple<
21799                    '_,
21800                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
21801                        data,
21802                        config,
21803                    )
21804                    .map(Into::into)
21805            }
21806            #[inline]
21807            fn abi_decode_returns_validate(
21808                data: &[u8],
21809            ) -> alloy_sol_types::Result<Self::Return> {
21810                Self::abi_decode_returns_with_config(
21811                    data,
21812                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
21813                )
21814            }
21815        }
21816    };
21817    #[derive(serde::Serialize, serde::Deserialize)]
21818    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21819    /**Function with signature `updateMetadataUri(string)` and selector `0x870c8f26`.
21820```solidity
21821function updateMetadataUri(string memory metadataUri) external;
21822```*/
21823    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21824    #[derive(Clone)]
21825    pub struct updateMetadataUriCall {
21826        #[allow(missing_docs)]
21827        pub metadataUri: alloy::sol_types::private::String,
21828    }
21829    ///Container type for the return parameters of the [`updateMetadataUri(string)`](updateMetadataUriCall) function.
21830    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21831    #[derive(Clone)]
21832    pub struct updateMetadataUriReturn {}
21833    #[allow(
21834        non_camel_case_types,
21835        non_snake_case,
21836        clippy::pub_underscore_fields,
21837        clippy::style
21838    )]
21839    const _: () = {
21840        use alloy::sol_types as alloy_sol_types;
21841        {
21842            #[doc(hidden)]
21843            #[allow(dead_code)]
21844            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
21845            #[doc(hidden)]
21846            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
21847            #[cfg(test)]
21848            #[allow(dead_code, unreachable_patterns)]
21849            fn _type_assertion(
21850                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21851            ) {
21852                match _t {
21853                    alloy_sol_types::private::AssertTypeEq::<
21854                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21855                    >(_) => {}
21856                }
21857            }
21858            #[automatically_derived]
21859            #[doc(hidden)]
21860            impl ::core::convert::From<updateMetadataUriCall>
21861            for UnderlyingRustTuple<'_> {
21862                fn from(value: updateMetadataUriCall) -> Self {
21863                    (value.metadataUri,)
21864                }
21865            }
21866            #[automatically_derived]
21867            #[doc(hidden)]
21868            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21869            for updateMetadataUriCall {
21870                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21871                    Self { metadataUri: tuple.0 }
21872                }
21873            }
21874        }
21875        {
21876            #[doc(hidden)]
21877            #[allow(dead_code)]
21878            type UnderlyingSolTuple<'a> = ();
21879            #[doc(hidden)]
21880            type UnderlyingRustTuple<'a> = ();
21881            #[cfg(test)]
21882            #[allow(dead_code, unreachable_patterns)]
21883            fn _type_assertion(
21884                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21885            ) {
21886                match _t {
21887                    alloy_sol_types::private::AssertTypeEq::<
21888                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21889                    >(_) => {}
21890                }
21891            }
21892            #[automatically_derived]
21893            #[doc(hidden)]
21894            impl ::core::convert::From<updateMetadataUriReturn>
21895            for UnderlyingRustTuple<'_> {
21896                fn from(value: updateMetadataUriReturn) -> Self {
21897                    ()
21898                }
21899            }
21900            #[automatically_derived]
21901            #[doc(hidden)]
21902            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21903            for updateMetadataUriReturn {
21904                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21905                    Self {}
21906                }
21907            }
21908        }
21909        impl updateMetadataUriReturn {
21910            fn _tokenize(
21911                &self,
21912            ) -> <updateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21913                ()
21914            }
21915        }
21916        #[automatically_derived]
21917        impl alloy_sol_types::SolCall for updateMetadataUriCall {
21918            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
21919            type Token<'a> = <Self::Parameters<
21920                'a,
21921            > as alloy_sol_types::SolType>::Token<'a>;
21922            type Return = updateMetadataUriReturn;
21923            type ReturnTuple<'a> = ();
21924            type ReturnToken<'a> = <Self::ReturnTuple<
21925                'a,
21926            > as alloy_sol_types::SolType>::Token<'a>;
21927            const SIGNATURE: &'static str = "updateMetadataUri(string)";
21928            const SELECTOR: [u8; 4] = [135u8, 12u8, 143u8, 38u8];
21929            #[inline]
21930            fn new<'a>(
21931                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21932            ) -> Self {
21933                tuple.into()
21934            }
21935            #[inline]
21936            fn tokenize(&self) -> Self::Token<'_> {
21937                (
21938                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21939                        &self.metadataUri,
21940                    ),
21941                )
21942            }
21943            #[inline]
21944            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21945                updateMetadataUriReturn::_tokenize(ret)
21946            }
21947            #[inline]
21948            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21949                <Self::ReturnTuple<
21950                    '_,
21951                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21952                    .map(Into::into)
21953            }
21954            #[inline]
21955            fn abi_decode_returns_with_config(
21956                data: &[u8],
21957                config: alloy_sol_types::abi::AbiDecoderConfig,
21958            ) -> alloy_sol_types::Result<Self::Return> {
21959                <Self::ReturnTuple<
21960                    '_,
21961                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
21962                        data,
21963                        config,
21964                    )
21965                    .map(Into::into)
21966            }
21967            #[inline]
21968            fn abi_decode_returns_validate(
21969                data: &[u8],
21970            ) -> alloy_sol_types::Result<Self::Return> {
21971                Self::abi_decode_returns_with_config(
21972                    data,
21973                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
21974                )
21975            }
21976        }
21977    };
21978    #[derive(serde::Serialize, serde::Deserialize)]
21979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21980    /**Function with signature `updateNetworkConfig(bytes32,string)` and selector `0x0cb29764`.
21981```solidity
21982function updateNetworkConfig(bytes32 x25519Key, string memory p2pAddr) external;
21983```*/
21984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21985    #[derive(Clone)]
21986    pub struct updateNetworkConfigCall {
21987        #[allow(missing_docs)]
21988        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
21989        #[allow(missing_docs)]
21990        pub p2pAddr: alloy::sol_types::private::String,
21991    }
21992    ///Container type for the return parameters of the [`updateNetworkConfig(bytes32,string)`](updateNetworkConfigCall) function.
21993    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21994    #[derive(Clone)]
21995    pub struct updateNetworkConfigReturn {}
21996    #[allow(
21997        non_camel_case_types,
21998        non_snake_case,
21999        clippy::pub_underscore_fields,
22000        clippy::style
22001    )]
22002    const _: () = {
22003        use alloy::sol_types as alloy_sol_types;
22004        {
22005            #[doc(hidden)]
22006            #[allow(dead_code)]
22007            type UnderlyingSolTuple<'a> = (
22008                alloy::sol_types::sol_data::FixedBytes<32>,
22009                alloy::sol_types::sol_data::String,
22010            );
22011            #[doc(hidden)]
22012            type UnderlyingRustTuple<'a> = (
22013                alloy::sol_types::private::FixedBytes<32>,
22014                alloy::sol_types::private::String,
22015            );
22016            #[cfg(test)]
22017            #[allow(dead_code, unreachable_patterns)]
22018            fn _type_assertion(
22019                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22020            ) {
22021                match _t {
22022                    alloy_sol_types::private::AssertTypeEq::<
22023                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22024                    >(_) => {}
22025                }
22026            }
22027            #[automatically_derived]
22028            #[doc(hidden)]
22029            impl ::core::convert::From<updateNetworkConfigCall>
22030            for UnderlyingRustTuple<'_> {
22031                fn from(value: updateNetworkConfigCall) -> Self {
22032                    (value.x25519Key, value.p2pAddr)
22033                }
22034            }
22035            #[automatically_derived]
22036            #[doc(hidden)]
22037            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22038            for updateNetworkConfigCall {
22039                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22040                    Self {
22041                        x25519Key: tuple.0,
22042                        p2pAddr: tuple.1,
22043                    }
22044                }
22045            }
22046        }
22047        {
22048            #[doc(hidden)]
22049            #[allow(dead_code)]
22050            type UnderlyingSolTuple<'a> = ();
22051            #[doc(hidden)]
22052            type UnderlyingRustTuple<'a> = ();
22053            #[cfg(test)]
22054            #[allow(dead_code, unreachable_patterns)]
22055            fn _type_assertion(
22056                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22057            ) {
22058                match _t {
22059                    alloy_sol_types::private::AssertTypeEq::<
22060                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22061                    >(_) => {}
22062                }
22063            }
22064            #[automatically_derived]
22065            #[doc(hidden)]
22066            impl ::core::convert::From<updateNetworkConfigReturn>
22067            for UnderlyingRustTuple<'_> {
22068                fn from(value: updateNetworkConfigReturn) -> Self {
22069                    ()
22070                }
22071            }
22072            #[automatically_derived]
22073            #[doc(hidden)]
22074            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22075            for updateNetworkConfigReturn {
22076                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22077                    Self {}
22078                }
22079            }
22080        }
22081        impl updateNetworkConfigReturn {
22082            fn _tokenize(
22083                &self,
22084            ) -> <updateNetworkConfigCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22085                ()
22086            }
22087        }
22088        #[automatically_derived]
22089        impl alloy_sol_types::SolCall for updateNetworkConfigCall {
22090            type Parameters<'a> = (
22091                alloy::sol_types::sol_data::FixedBytes<32>,
22092                alloy::sol_types::sol_data::String,
22093            );
22094            type Token<'a> = <Self::Parameters<
22095                'a,
22096            > as alloy_sol_types::SolType>::Token<'a>;
22097            type Return = updateNetworkConfigReturn;
22098            type ReturnTuple<'a> = ();
22099            type ReturnToken<'a> = <Self::ReturnTuple<
22100                'a,
22101            > as alloy_sol_types::SolType>::Token<'a>;
22102            const SIGNATURE: &'static str = "updateNetworkConfig(bytes32,string)";
22103            const SELECTOR: [u8; 4] = [12u8, 178u8, 151u8, 100u8];
22104            #[inline]
22105            fn new<'a>(
22106                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22107            ) -> Self {
22108                tuple.into()
22109            }
22110            #[inline]
22111            fn tokenize(&self) -> Self::Token<'_> {
22112                (
22113                    <alloy::sol_types::sol_data::FixedBytes<
22114                        32,
22115                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
22116                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
22117                        &self.p2pAddr,
22118                    ),
22119                )
22120            }
22121            #[inline]
22122            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22123                updateNetworkConfigReturn::_tokenize(ret)
22124            }
22125            #[inline]
22126            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22127                <Self::ReturnTuple<
22128                    '_,
22129                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22130                    .map(Into::into)
22131            }
22132            #[inline]
22133            fn abi_decode_returns_with_config(
22134                data: &[u8],
22135                config: alloy_sol_types::abi::AbiDecoderConfig,
22136            ) -> alloy_sol_types::Result<Self::Return> {
22137                <Self::ReturnTuple<
22138                    '_,
22139                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
22140                        data,
22141                        config,
22142                    )
22143                    .map(Into::into)
22144            }
22145            #[inline]
22146            fn abi_decode_returns_validate(
22147                data: &[u8],
22148            ) -> alloy_sol_types::Result<Self::Return> {
22149                Self::abi_decode_returns_with_config(
22150                    data,
22151                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
22152                )
22153            }
22154        }
22155    };
22156    #[derive(serde::Serialize, serde::Deserialize)]
22157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22158    /**Function with signature `updateP2pAddr(string)` and selector `0x9ec9c138`.
22159```solidity
22160function updateP2pAddr(string memory p2pAddr) external;
22161```*/
22162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22163    #[derive(Clone)]
22164    pub struct updateP2pAddrCall {
22165        #[allow(missing_docs)]
22166        pub p2pAddr: alloy::sol_types::private::String,
22167    }
22168    ///Container type for the return parameters of the [`updateP2pAddr(string)`](updateP2pAddrCall) function.
22169    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22170    #[derive(Clone)]
22171    pub struct updateP2pAddrReturn {}
22172    #[allow(
22173        non_camel_case_types,
22174        non_snake_case,
22175        clippy::pub_underscore_fields,
22176        clippy::style
22177    )]
22178    const _: () = {
22179        use alloy::sol_types as alloy_sol_types;
22180        {
22181            #[doc(hidden)]
22182            #[allow(dead_code)]
22183            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
22184            #[doc(hidden)]
22185            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
22186            #[cfg(test)]
22187            #[allow(dead_code, unreachable_patterns)]
22188            fn _type_assertion(
22189                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22190            ) {
22191                match _t {
22192                    alloy_sol_types::private::AssertTypeEq::<
22193                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22194                    >(_) => {}
22195                }
22196            }
22197            #[automatically_derived]
22198            #[doc(hidden)]
22199            impl ::core::convert::From<updateP2pAddrCall> for UnderlyingRustTuple<'_> {
22200                fn from(value: updateP2pAddrCall) -> Self {
22201                    (value.p2pAddr,)
22202                }
22203            }
22204            #[automatically_derived]
22205            #[doc(hidden)]
22206            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateP2pAddrCall {
22207                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22208                    Self { p2pAddr: tuple.0 }
22209                }
22210            }
22211        }
22212        {
22213            #[doc(hidden)]
22214            #[allow(dead_code)]
22215            type UnderlyingSolTuple<'a> = ();
22216            #[doc(hidden)]
22217            type UnderlyingRustTuple<'a> = ();
22218            #[cfg(test)]
22219            #[allow(dead_code, unreachable_patterns)]
22220            fn _type_assertion(
22221                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22222            ) {
22223                match _t {
22224                    alloy_sol_types::private::AssertTypeEq::<
22225                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22226                    >(_) => {}
22227                }
22228            }
22229            #[automatically_derived]
22230            #[doc(hidden)]
22231            impl ::core::convert::From<updateP2pAddrReturn> for UnderlyingRustTuple<'_> {
22232                fn from(value: updateP2pAddrReturn) -> Self {
22233                    ()
22234                }
22235            }
22236            #[automatically_derived]
22237            #[doc(hidden)]
22238            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateP2pAddrReturn {
22239                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22240                    Self {}
22241                }
22242            }
22243        }
22244        impl updateP2pAddrReturn {
22245            fn _tokenize(
22246                &self,
22247            ) -> <updateP2pAddrCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22248                ()
22249            }
22250        }
22251        #[automatically_derived]
22252        impl alloy_sol_types::SolCall for updateP2pAddrCall {
22253            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
22254            type Token<'a> = <Self::Parameters<
22255                'a,
22256            > as alloy_sol_types::SolType>::Token<'a>;
22257            type Return = updateP2pAddrReturn;
22258            type ReturnTuple<'a> = ();
22259            type ReturnToken<'a> = <Self::ReturnTuple<
22260                'a,
22261            > as alloy_sol_types::SolType>::Token<'a>;
22262            const SIGNATURE: &'static str = "updateP2pAddr(string)";
22263            const SELECTOR: [u8; 4] = [158u8, 201u8, 193u8, 56u8];
22264            #[inline]
22265            fn new<'a>(
22266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22267            ) -> Self {
22268                tuple.into()
22269            }
22270            #[inline]
22271            fn tokenize(&self) -> Self::Token<'_> {
22272                (
22273                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
22274                        &self.p2pAddr,
22275                    ),
22276                )
22277            }
22278            #[inline]
22279            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22280                updateP2pAddrReturn::_tokenize(ret)
22281            }
22282            #[inline]
22283            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22284                <Self::ReturnTuple<
22285                    '_,
22286                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22287                    .map(Into::into)
22288            }
22289            #[inline]
22290            fn abi_decode_returns_with_config(
22291                data: &[u8],
22292                config: alloy_sol_types::abi::AbiDecoderConfig,
22293            ) -> alloy_sol_types::Result<Self::Return> {
22294                <Self::ReturnTuple<
22295                    '_,
22296                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
22297                        data,
22298                        config,
22299                    )
22300                    .map(Into::into)
22301            }
22302            #[inline]
22303            fn abi_decode_returns_validate(
22304                data: &[u8],
22305            ) -> alloy_sol_types::Result<Self::Return> {
22306                Self::abi_decode_returns_with_config(
22307                    data,
22308                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
22309                )
22310            }
22311        }
22312    };
22313    #[derive(serde::Serialize, serde::Deserialize)]
22314    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22315    /**Function with signature `updateX25519Key(bytes32)` and selector `0x073d25fc`.
22316```solidity
22317function updateX25519Key(bytes32 x25519Key) external;
22318```*/
22319    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22320    #[derive(Clone)]
22321    pub struct updateX25519KeyCall {
22322        #[allow(missing_docs)]
22323        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
22324    }
22325    ///Container type for the return parameters of the [`updateX25519Key(bytes32)`](updateX25519KeyCall) function.
22326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22327    #[derive(Clone)]
22328    pub struct updateX25519KeyReturn {}
22329    #[allow(
22330        non_camel_case_types,
22331        non_snake_case,
22332        clippy::pub_underscore_fields,
22333        clippy::style
22334    )]
22335    const _: () = {
22336        use alloy::sol_types as alloy_sol_types;
22337        {
22338            #[doc(hidden)]
22339            #[allow(dead_code)]
22340            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
22341            #[doc(hidden)]
22342            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
22343            #[cfg(test)]
22344            #[allow(dead_code, unreachable_patterns)]
22345            fn _type_assertion(
22346                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22347            ) {
22348                match _t {
22349                    alloy_sol_types::private::AssertTypeEq::<
22350                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22351                    >(_) => {}
22352                }
22353            }
22354            #[automatically_derived]
22355            #[doc(hidden)]
22356            impl ::core::convert::From<updateX25519KeyCall> for UnderlyingRustTuple<'_> {
22357                fn from(value: updateX25519KeyCall) -> Self {
22358                    (value.x25519Key,)
22359                }
22360            }
22361            #[automatically_derived]
22362            #[doc(hidden)]
22363            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateX25519KeyCall {
22364                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22365                    Self { x25519Key: tuple.0 }
22366                }
22367            }
22368        }
22369        {
22370            #[doc(hidden)]
22371            #[allow(dead_code)]
22372            type UnderlyingSolTuple<'a> = ();
22373            #[doc(hidden)]
22374            type UnderlyingRustTuple<'a> = ();
22375            #[cfg(test)]
22376            #[allow(dead_code, unreachable_patterns)]
22377            fn _type_assertion(
22378                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22379            ) {
22380                match _t {
22381                    alloy_sol_types::private::AssertTypeEq::<
22382                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22383                    >(_) => {}
22384                }
22385            }
22386            #[automatically_derived]
22387            #[doc(hidden)]
22388            impl ::core::convert::From<updateX25519KeyReturn>
22389            for UnderlyingRustTuple<'_> {
22390                fn from(value: updateX25519KeyReturn) -> Self {
22391                    ()
22392                }
22393            }
22394            #[automatically_derived]
22395            #[doc(hidden)]
22396            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22397            for updateX25519KeyReturn {
22398                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22399                    Self {}
22400                }
22401            }
22402        }
22403        impl updateX25519KeyReturn {
22404            fn _tokenize(
22405                &self,
22406            ) -> <updateX25519KeyCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22407                ()
22408            }
22409        }
22410        #[automatically_derived]
22411        impl alloy_sol_types::SolCall for updateX25519KeyCall {
22412            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
22413            type Token<'a> = <Self::Parameters<
22414                'a,
22415            > as alloy_sol_types::SolType>::Token<'a>;
22416            type Return = updateX25519KeyReturn;
22417            type ReturnTuple<'a> = ();
22418            type ReturnToken<'a> = <Self::ReturnTuple<
22419                'a,
22420            > as alloy_sol_types::SolType>::Token<'a>;
22421            const SIGNATURE: &'static str = "updateX25519Key(bytes32)";
22422            const SELECTOR: [u8; 4] = [7u8, 61u8, 37u8, 252u8];
22423            #[inline]
22424            fn new<'a>(
22425                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22426            ) -> Self {
22427                tuple.into()
22428            }
22429            #[inline]
22430            fn tokenize(&self) -> Self::Token<'_> {
22431                (
22432                    <alloy::sol_types::sol_data::FixedBytes<
22433                        32,
22434                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
22435                )
22436            }
22437            #[inline]
22438            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22439                updateX25519KeyReturn::_tokenize(ret)
22440            }
22441            #[inline]
22442            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22443                <Self::ReturnTuple<
22444                    '_,
22445                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22446                    .map(Into::into)
22447            }
22448            #[inline]
22449            fn abi_decode_returns_with_config(
22450                data: &[u8],
22451                config: alloy_sol_types::abi::AbiDecoderConfig,
22452            ) -> alloy_sol_types::Result<Self::Return> {
22453                <Self::ReturnTuple<
22454                    '_,
22455                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
22456                        data,
22457                        config,
22458                    )
22459                    .map(Into::into)
22460            }
22461            #[inline]
22462            fn abi_decode_returns_validate(
22463                data: &[u8],
22464            ) -> alloy_sol_types::Result<Self::Return> {
22465                Self::abi_decode_returns_with_config(
22466                    data,
22467                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
22468                )
22469            }
22470        }
22471    };
22472    #[derive(serde::Serialize, serde::Deserialize)]
22473    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22474    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
22475```solidity
22476function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
22477```*/
22478    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22479    #[derive(Clone)]
22480    pub struct upgradeToAndCallCall {
22481        #[allow(missing_docs)]
22482        pub newImplementation: alloy::sol_types::private::Address,
22483        #[allow(missing_docs)]
22484        pub data: alloy::sol_types::private::Bytes,
22485    }
22486    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
22487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22488    #[derive(Clone)]
22489    pub struct upgradeToAndCallReturn {}
22490    #[allow(
22491        non_camel_case_types,
22492        non_snake_case,
22493        clippy::pub_underscore_fields,
22494        clippy::style
22495    )]
22496    const _: () = {
22497        use alloy::sol_types as alloy_sol_types;
22498        {
22499            #[doc(hidden)]
22500            #[allow(dead_code)]
22501            type UnderlyingSolTuple<'a> = (
22502                alloy::sol_types::sol_data::Address,
22503                alloy::sol_types::sol_data::Bytes,
22504            );
22505            #[doc(hidden)]
22506            type UnderlyingRustTuple<'a> = (
22507                alloy::sol_types::private::Address,
22508                alloy::sol_types::private::Bytes,
22509            );
22510            #[cfg(test)]
22511            #[allow(dead_code, unreachable_patterns)]
22512            fn _type_assertion(
22513                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22514            ) {
22515                match _t {
22516                    alloy_sol_types::private::AssertTypeEq::<
22517                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22518                    >(_) => {}
22519                }
22520            }
22521            #[automatically_derived]
22522            #[doc(hidden)]
22523            impl ::core::convert::From<upgradeToAndCallCall>
22524            for UnderlyingRustTuple<'_> {
22525                fn from(value: upgradeToAndCallCall) -> Self {
22526                    (value.newImplementation, value.data)
22527                }
22528            }
22529            #[automatically_derived]
22530            #[doc(hidden)]
22531            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22532            for upgradeToAndCallCall {
22533                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22534                    Self {
22535                        newImplementation: tuple.0,
22536                        data: tuple.1,
22537                    }
22538                }
22539            }
22540        }
22541        {
22542            #[doc(hidden)]
22543            #[allow(dead_code)]
22544            type UnderlyingSolTuple<'a> = ();
22545            #[doc(hidden)]
22546            type UnderlyingRustTuple<'a> = ();
22547            #[cfg(test)]
22548            #[allow(dead_code, unreachable_patterns)]
22549            fn _type_assertion(
22550                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22551            ) {
22552                match _t {
22553                    alloy_sol_types::private::AssertTypeEq::<
22554                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22555                    >(_) => {}
22556                }
22557            }
22558            #[automatically_derived]
22559            #[doc(hidden)]
22560            impl ::core::convert::From<upgradeToAndCallReturn>
22561            for UnderlyingRustTuple<'_> {
22562                fn from(value: upgradeToAndCallReturn) -> Self {
22563                    ()
22564                }
22565            }
22566            #[automatically_derived]
22567            #[doc(hidden)]
22568            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22569            for upgradeToAndCallReturn {
22570                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22571                    Self {}
22572                }
22573            }
22574        }
22575        impl upgradeToAndCallReturn {
22576            fn _tokenize(
22577                &self,
22578            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22579                ()
22580            }
22581        }
22582        #[automatically_derived]
22583        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
22584            type Parameters<'a> = (
22585                alloy::sol_types::sol_data::Address,
22586                alloy::sol_types::sol_data::Bytes,
22587            );
22588            type Token<'a> = <Self::Parameters<
22589                'a,
22590            > as alloy_sol_types::SolType>::Token<'a>;
22591            type Return = upgradeToAndCallReturn;
22592            type ReturnTuple<'a> = ();
22593            type ReturnToken<'a> = <Self::ReturnTuple<
22594                'a,
22595            > as alloy_sol_types::SolType>::Token<'a>;
22596            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
22597            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
22598            #[inline]
22599            fn new<'a>(
22600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22601            ) -> Self {
22602                tuple.into()
22603            }
22604            #[inline]
22605            fn tokenize(&self) -> Self::Token<'_> {
22606                (
22607                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
22608                        &self.newImplementation,
22609                    ),
22610                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
22611                        &self.data,
22612                    ),
22613                )
22614            }
22615            #[inline]
22616            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22617                upgradeToAndCallReturn::_tokenize(ret)
22618            }
22619            #[inline]
22620            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22621                <Self::ReturnTuple<
22622                    '_,
22623                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22624                    .map(Into::into)
22625            }
22626            #[inline]
22627            fn abi_decode_returns_with_config(
22628                data: &[u8],
22629                config: alloy_sol_types::abi::AbiDecoderConfig,
22630            ) -> alloy_sol_types::Result<Self::Return> {
22631                <Self::ReturnTuple<
22632                    '_,
22633                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
22634                        data,
22635                        config,
22636                    )
22637                    .map(Into::into)
22638            }
22639            #[inline]
22640            fn abi_decode_returns_validate(
22641                data: &[u8],
22642            ) -> alloy_sol_types::Result<Self::Return> {
22643                Self::abi_decode_returns_with_config(
22644                    data,
22645                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
22646                )
22647            }
22648        }
22649    };
22650    #[derive(serde::Serialize, serde::Deserialize)]
22651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22652    /**Function with signature `validateMetadataUri(string)` and selector `0xe3f237e6`.
22653```solidity
22654function validateMetadataUri(string memory metadataUri) external pure;
22655```*/
22656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22657    #[derive(Clone)]
22658    pub struct validateMetadataUriCall {
22659        #[allow(missing_docs)]
22660        pub metadataUri: alloy::sol_types::private::String,
22661    }
22662    ///Container type for the return parameters of the [`validateMetadataUri(string)`](validateMetadataUriCall) function.
22663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22664    #[derive(Clone)]
22665    pub struct validateMetadataUriReturn {}
22666    #[allow(
22667        non_camel_case_types,
22668        non_snake_case,
22669        clippy::pub_underscore_fields,
22670        clippy::style
22671    )]
22672    const _: () = {
22673        use alloy::sol_types as alloy_sol_types;
22674        {
22675            #[doc(hidden)]
22676            #[allow(dead_code)]
22677            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
22678            #[doc(hidden)]
22679            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
22680            #[cfg(test)]
22681            #[allow(dead_code, unreachable_patterns)]
22682            fn _type_assertion(
22683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22684            ) {
22685                match _t {
22686                    alloy_sol_types::private::AssertTypeEq::<
22687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22688                    >(_) => {}
22689                }
22690            }
22691            #[automatically_derived]
22692            #[doc(hidden)]
22693            impl ::core::convert::From<validateMetadataUriCall>
22694            for UnderlyingRustTuple<'_> {
22695                fn from(value: validateMetadataUriCall) -> Self {
22696                    (value.metadataUri,)
22697                }
22698            }
22699            #[automatically_derived]
22700            #[doc(hidden)]
22701            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22702            for validateMetadataUriCall {
22703                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22704                    Self { metadataUri: tuple.0 }
22705                }
22706            }
22707        }
22708        {
22709            #[doc(hidden)]
22710            #[allow(dead_code)]
22711            type UnderlyingSolTuple<'a> = ();
22712            #[doc(hidden)]
22713            type UnderlyingRustTuple<'a> = ();
22714            #[cfg(test)]
22715            #[allow(dead_code, unreachable_patterns)]
22716            fn _type_assertion(
22717                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22718            ) {
22719                match _t {
22720                    alloy_sol_types::private::AssertTypeEq::<
22721                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22722                    >(_) => {}
22723                }
22724            }
22725            #[automatically_derived]
22726            #[doc(hidden)]
22727            impl ::core::convert::From<validateMetadataUriReturn>
22728            for UnderlyingRustTuple<'_> {
22729                fn from(value: validateMetadataUriReturn) -> Self {
22730                    ()
22731                }
22732            }
22733            #[automatically_derived]
22734            #[doc(hidden)]
22735            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22736            for validateMetadataUriReturn {
22737                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22738                    Self {}
22739                }
22740            }
22741        }
22742        impl validateMetadataUriReturn {
22743            fn _tokenize(
22744                &self,
22745            ) -> <validateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22746                ()
22747            }
22748        }
22749        #[automatically_derived]
22750        impl alloy_sol_types::SolCall for validateMetadataUriCall {
22751            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
22752            type Token<'a> = <Self::Parameters<
22753                'a,
22754            > as alloy_sol_types::SolType>::Token<'a>;
22755            type Return = validateMetadataUriReturn;
22756            type ReturnTuple<'a> = ();
22757            type ReturnToken<'a> = <Self::ReturnTuple<
22758                'a,
22759            > as alloy_sol_types::SolType>::Token<'a>;
22760            const SIGNATURE: &'static str = "validateMetadataUri(string)";
22761            const SELECTOR: [u8; 4] = [227u8, 242u8, 55u8, 230u8];
22762            #[inline]
22763            fn new<'a>(
22764                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22765            ) -> Self {
22766                tuple.into()
22767            }
22768            #[inline]
22769            fn tokenize(&self) -> Self::Token<'_> {
22770                (
22771                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
22772                        &self.metadataUri,
22773                    ),
22774                )
22775            }
22776            #[inline]
22777            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22778                validateMetadataUriReturn::_tokenize(ret)
22779            }
22780            #[inline]
22781            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22782                <Self::ReturnTuple<
22783                    '_,
22784                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22785                    .map(Into::into)
22786            }
22787            #[inline]
22788            fn abi_decode_returns_with_config(
22789                data: &[u8],
22790                config: alloy_sol_types::abi::AbiDecoderConfig,
22791            ) -> alloy_sol_types::Result<Self::Return> {
22792                <Self::ReturnTuple<
22793                    '_,
22794                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
22795                        data,
22796                        config,
22797                    )
22798                    .map(Into::into)
22799            }
22800            #[inline]
22801            fn abi_decode_returns_validate(
22802                data: &[u8],
22803            ) -> alloy_sol_types::Result<Self::Return> {
22804                Self::abi_decode_returns_with_config(
22805                    data,
22806                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
22807                )
22808            }
22809        }
22810    };
22811    #[derive(serde::Serialize, serde::Deserialize)]
22812    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22813    /**Function with signature `validateP2pAddr(string)` and selector `0x15f31835`.
22814```solidity
22815function validateP2pAddr(string memory p2pAddr) external pure;
22816```*/
22817    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22818    #[derive(Clone)]
22819    pub struct validateP2pAddrCall {
22820        #[allow(missing_docs)]
22821        pub p2pAddr: alloy::sol_types::private::String,
22822    }
22823    ///Container type for the return parameters of the [`validateP2pAddr(string)`](validateP2pAddrCall) function.
22824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22825    #[derive(Clone)]
22826    pub struct validateP2pAddrReturn {}
22827    #[allow(
22828        non_camel_case_types,
22829        non_snake_case,
22830        clippy::pub_underscore_fields,
22831        clippy::style
22832    )]
22833    const _: () = {
22834        use alloy::sol_types as alloy_sol_types;
22835        {
22836            #[doc(hidden)]
22837            #[allow(dead_code)]
22838            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
22839            #[doc(hidden)]
22840            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
22841            #[cfg(test)]
22842            #[allow(dead_code, unreachable_patterns)]
22843            fn _type_assertion(
22844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22845            ) {
22846                match _t {
22847                    alloy_sol_types::private::AssertTypeEq::<
22848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22849                    >(_) => {}
22850                }
22851            }
22852            #[automatically_derived]
22853            #[doc(hidden)]
22854            impl ::core::convert::From<validateP2pAddrCall> for UnderlyingRustTuple<'_> {
22855                fn from(value: validateP2pAddrCall) -> Self {
22856                    (value.p2pAddr,)
22857                }
22858            }
22859            #[automatically_derived]
22860            #[doc(hidden)]
22861            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validateP2pAddrCall {
22862                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22863                    Self { p2pAddr: tuple.0 }
22864                }
22865            }
22866        }
22867        {
22868            #[doc(hidden)]
22869            #[allow(dead_code)]
22870            type UnderlyingSolTuple<'a> = ();
22871            #[doc(hidden)]
22872            type UnderlyingRustTuple<'a> = ();
22873            #[cfg(test)]
22874            #[allow(dead_code, unreachable_patterns)]
22875            fn _type_assertion(
22876                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22877            ) {
22878                match _t {
22879                    alloy_sol_types::private::AssertTypeEq::<
22880                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22881                    >(_) => {}
22882                }
22883            }
22884            #[automatically_derived]
22885            #[doc(hidden)]
22886            impl ::core::convert::From<validateP2pAddrReturn>
22887            for UnderlyingRustTuple<'_> {
22888                fn from(value: validateP2pAddrReturn) -> Self {
22889                    ()
22890                }
22891            }
22892            #[automatically_derived]
22893            #[doc(hidden)]
22894            impl ::core::convert::From<UnderlyingRustTuple<'_>>
22895            for validateP2pAddrReturn {
22896                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22897                    Self {}
22898                }
22899            }
22900        }
22901        impl validateP2pAddrReturn {
22902            fn _tokenize(
22903                &self,
22904            ) -> <validateP2pAddrCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22905                ()
22906            }
22907        }
22908        #[automatically_derived]
22909        impl alloy_sol_types::SolCall for validateP2pAddrCall {
22910            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
22911            type Token<'a> = <Self::Parameters<
22912                'a,
22913            > as alloy_sol_types::SolType>::Token<'a>;
22914            type Return = validateP2pAddrReturn;
22915            type ReturnTuple<'a> = ();
22916            type ReturnToken<'a> = <Self::ReturnTuple<
22917                'a,
22918            > as alloy_sol_types::SolType>::Token<'a>;
22919            const SIGNATURE: &'static str = "validateP2pAddr(string)";
22920            const SELECTOR: [u8; 4] = [21u8, 243u8, 24u8, 53u8];
22921            #[inline]
22922            fn new<'a>(
22923                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22924            ) -> Self {
22925                tuple.into()
22926            }
22927            #[inline]
22928            fn tokenize(&self) -> Self::Token<'_> {
22929                (
22930                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
22931                        &self.p2pAddr,
22932                    ),
22933                )
22934            }
22935            #[inline]
22936            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22937                validateP2pAddrReturn::_tokenize(ret)
22938            }
22939            #[inline]
22940            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22941                <Self::ReturnTuple<
22942                    '_,
22943                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22944                    .map(Into::into)
22945            }
22946            #[inline]
22947            fn abi_decode_returns_with_config(
22948                data: &[u8],
22949                config: alloy_sol_types::abi::AbiDecoderConfig,
22950            ) -> alloy_sol_types::Result<Self::Return> {
22951                <Self::ReturnTuple<
22952                    '_,
22953                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
22954                        data,
22955                        config,
22956                    )
22957                    .map(Into::into)
22958            }
22959            #[inline]
22960            fn abi_decode_returns_validate(
22961                data: &[u8],
22962            ) -> alloy_sol_types::Result<Self::Return> {
22963                Self::abi_decode_returns_with_config(
22964                    data,
22965                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
22966                )
22967            }
22968        }
22969    };
22970    #[derive(serde::Serialize, serde::Deserialize)]
22971    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22972    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
22973```solidity
22974function validatorExits(address validator) external view returns (uint256 unlocksAt);
22975```*/
22976    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22977    #[derive(Clone)]
22978    pub struct validatorExitsCall {
22979        #[allow(missing_docs)]
22980        pub validator: alloy::sol_types::private::Address,
22981    }
22982    #[derive(serde::Serialize, serde::Deserialize)]
22983    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22984    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
22985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22986    #[derive(Clone)]
22987    pub struct validatorExitsReturn {
22988        #[allow(missing_docs)]
22989        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
22990    }
22991    #[allow(
22992        non_camel_case_types,
22993        non_snake_case,
22994        clippy::pub_underscore_fields,
22995        clippy::style
22996    )]
22997    const _: () = {
22998        use alloy::sol_types as alloy_sol_types;
22999        {
23000            #[doc(hidden)]
23001            #[allow(dead_code)]
23002            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
23003            #[doc(hidden)]
23004            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
23005            #[cfg(test)]
23006            #[allow(dead_code, unreachable_patterns)]
23007            fn _type_assertion(
23008                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
23009            ) {
23010                match _t {
23011                    alloy_sol_types::private::AssertTypeEq::<
23012                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
23013                    >(_) => {}
23014                }
23015            }
23016            #[automatically_derived]
23017            #[doc(hidden)]
23018            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
23019                fn from(value: validatorExitsCall) -> Self {
23020                    (value.validator,)
23021                }
23022            }
23023            #[automatically_derived]
23024            #[doc(hidden)]
23025            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
23026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
23027                    Self { validator: tuple.0 }
23028                }
23029            }
23030        }
23031        {
23032            #[doc(hidden)]
23033            #[allow(dead_code)]
23034            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
23035            #[doc(hidden)]
23036            type UnderlyingRustTuple<'a> = (
23037                alloy::sol_types::private::primitives::aliases::U256,
23038            );
23039            #[cfg(test)]
23040            #[allow(dead_code, unreachable_patterns)]
23041            fn _type_assertion(
23042                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
23043            ) {
23044                match _t {
23045                    alloy_sol_types::private::AssertTypeEq::<
23046                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
23047                    >(_) => {}
23048                }
23049            }
23050            #[automatically_derived]
23051            #[doc(hidden)]
23052            impl ::core::convert::From<validatorExitsReturn>
23053            for UnderlyingRustTuple<'_> {
23054                fn from(value: validatorExitsReturn) -> Self {
23055                    (value.unlocksAt,)
23056                }
23057            }
23058            #[automatically_derived]
23059            #[doc(hidden)]
23060            impl ::core::convert::From<UnderlyingRustTuple<'_>>
23061            for validatorExitsReturn {
23062                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
23063                    Self { unlocksAt: tuple.0 }
23064                }
23065            }
23066        }
23067        #[automatically_derived]
23068        impl alloy_sol_types::SolCall for validatorExitsCall {
23069            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
23070            type Token<'a> = <Self::Parameters<
23071                'a,
23072            > as alloy_sol_types::SolType>::Token<'a>;
23073            type Return = alloy::sol_types::private::primitives::aliases::U256;
23074            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
23075            type ReturnToken<'a> = <Self::ReturnTuple<
23076                'a,
23077            > as alloy_sol_types::SolType>::Token<'a>;
23078            const SIGNATURE: &'static str = "validatorExits(address)";
23079            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
23080            #[inline]
23081            fn new<'a>(
23082                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
23083            ) -> Self {
23084                tuple.into()
23085            }
23086            #[inline]
23087            fn tokenize(&self) -> Self::Token<'_> {
23088                (
23089                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
23090                        &self.validator,
23091                    ),
23092                )
23093            }
23094            #[inline]
23095            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
23096                (
23097                    <alloy::sol_types::sol_data::Uint<
23098                        256,
23099                    > as alloy_sol_types::SolType>::tokenize(ret),
23100                )
23101            }
23102            #[inline]
23103            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
23104                <Self::ReturnTuple<
23105                    '_,
23106                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
23107                    .map(|r| {
23108                        let r: validatorExitsReturn = r.into();
23109                        r.unlocksAt
23110                    })
23111            }
23112            #[inline]
23113            fn abi_decode_returns_with_config(
23114                data: &[u8],
23115                config: alloy_sol_types::abi::AbiDecoderConfig,
23116            ) -> alloy_sol_types::Result<Self::Return> {
23117                <Self::ReturnTuple<
23118                    '_,
23119                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
23120                        data,
23121                        config,
23122                    )
23123                    .map(|r| {
23124                        let r: validatorExitsReturn = r.into();
23125                        r.unlocksAt
23126                    })
23127            }
23128            #[inline]
23129            fn abi_decode_returns_validate(
23130                data: &[u8],
23131            ) -> alloy_sol_types::Result<Self::Return> {
23132                Self::abi_decode_returns_with_config(
23133                    data,
23134                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
23135                )
23136            }
23137        }
23138    };
23139    #[derive(serde::Serialize, serde::Deserialize)]
23140    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23141    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
23142```solidity
23143function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
23144```*/
23145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23146    #[derive(Clone)]
23147    pub struct validatorsCall {
23148        #[allow(missing_docs)]
23149        pub account: alloy::sol_types::private::Address,
23150    }
23151    #[derive(serde::Serialize, serde::Deserialize)]
23152    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23153    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
23154    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23155    #[derive(Clone)]
23156    pub struct validatorsReturn {
23157        #[allow(missing_docs)]
23158        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
23159        #[allow(missing_docs)]
23160        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
23161    }
23162    #[allow(
23163        non_camel_case_types,
23164        non_snake_case,
23165        clippy::pub_underscore_fields,
23166        clippy::style
23167    )]
23168    const _: () = {
23169        use alloy::sol_types as alloy_sol_types;
23170        {
23171            #[doc(hidden)]
23172            #[allow(dead_code)]
23173            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
23174            #[doc(hidden)]
23175            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
23176            #[cfg(test)]
23177            #[allow(dead_code, unreachable_patterns)]
23178            fn _type_assertion(
23179                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
23180            ) {
23181                match _t {
23182                    alloy_sol_types::private::AssertTypeEq::<
23183                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
23184                    >(_) => {}
23185                }
23186            }
23187            #[automatically_derived]
23188            #[doc(hidden)]
23189            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
23190                fn from(value: validatorsCall) -> Self {
23191                    (value.account,)
23192                }
23193            }
23194            #[automatically_derived]
23195            #[doc(hidden)]
23196            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
23197                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
23198                    Self { account: tuple.0 }
23199                }
23200            }
23201        }
23202        {
23203            #[doc(hidden)]
23204            #[allow(dead_code)]
23205            type UnderlyingSolTuple<'a> = (
23206                alloy::sol_types::sol_data::Uint<256>,
23207                StakeTable::ValidatorStatus,
23208            );
23209            #[doc(hidden)]
23210            type UnderlyingRustTuple<'a> = (
23211                alloy::sol_types::private::primitives::aliases::U256,
23212                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
23213            );
23214            #[cfg(test)]
23215            #[allow(dead_code, unreachable_patterns)]
23216            fn _type_assertion(
23217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
23218            ) {
23219                match _t {
23220                    alloy_sol_types::private::AssertTypeEq::<
23221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
23222                    >(_) => {}
23223                }
23224            }
23225            #[automatically_derived]
23226            #[doc(hidden)]
23227            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
23228                fn from(value: validatorsReturn) -> Self {
23229                    (value.delegatedAmount, value.status)
23230                }
23231            }
23232            #[automatically_derived]
23233            #[doc(hidden)]
23234            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
23235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
23236                    Self {
23237                        delegatedAmount: tuple.0,
23238                        status: tuple.1,
23239                    }
23240                }
23241            }
23242        }
23243        impl validatorsReturn {
23244            fn _tokenize(
23245                &self,
23246            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
23247                (
23248                    <alloy::sol_types::sol_data::Uint<
23249                        256,
23250                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
23251                    <StakeTable::ValidatorStatus as alloy_sol_types::SolType>::tokenize(
23252                        &self.status,
23253                    ),
23254                )
23255            }
23256        }
23257        #[automatically_derived]
23258        impl alloy_sol_types::SolCall for validatorsCall {
23259            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
23260            type Token<'a> = <Self::Parameters<
23261                'a,
23262            > as alloy_sol_types::SolType>::Token<'a>;
23263            type Return = validatorsReturn;
23264            type ReturnTuple<'a> = (
23265                alloy::sol_types::sol_data::Uint<256>,
23266                StakeTable::ValidatorStatus,
23267            );
23268            type ReturnToken<'a> = <Self::ReturnTuple<
23269                'a,
23270            > as alloy_sol_types::SolType>::Token<'a>;
23271            const SIGNATURE: &'static str = "validators(address)";
23272            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
23273            #[inline]
23274            fn new<'a>(
23275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
23276            ) -> Self {
23277                tuple.into()
23278            }
23279            #[inline]
23280            fn tokenize(&self) -> Self::Token<'_> {
23281                (
23282                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
23283                        &self.account,
23284                    ),
23285                )
23286            }
23287            #[inline]
23288            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
23289                validatorsReturn::_tokenize(ret)
23290            }
23291            #[inline]
23292            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
23293                <Self::ReturnTuple<
23294                    '_,
23295                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
23296                    .map(Into::into)
23297            }
23298            #[inline]
23299            fn abi_decode_returns_with_config(
23300                data: &[u8],
23301                config: alloy_sol_types::abi::AbiDecoderConfig,
23302            ) -> alloy_sol_types::Result<Self::Return> {
23303                <Self::ReturnTuple<
23304                    '_,
23305                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
23306                        data,
23307                        config,
23308                    )
23309                    .map(Into::into)
23310            }
23311            #[inline]
23312            fn abi_decode_returns_validate(
23313                data: &[u8],
23314            ) -> alloy_sol_types::Result<Self::Return> {
23315                Self::abi_decode_returns_with_config(
23316                    data,
23317                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
23318                )
23319            }
23320        }
23321    };
23322    #[derive(serde::Serialize, serde::Deserialize)]
23323    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23324    /**Function with signature `x25519Keys(bytes32)` and selector `0x5a2f51fd`.
23325```solidity
23326function x25519Keys(bytes32 x25519Key) external view returns (bool used);
23327```*/
23328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23329    #[derive(Clone)]
23330    pub struct x25519KeysCall {
23331        #[allow(missing_docs)]
23332        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
23333    }
23334    #[derive(serde::Serialize, serde::Deserialize)]
23335    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23336    ///Container type for the return parameters of the [`x25519Keys(bytes32)`](x25519KeysCall) function.
23337    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23338    #[derive(Clone)]
23339    pub struct x25519KeysReturn {
23340        #[allow(missing_docs)]
23341        pub used: bool,
23342    }
23343    #[allow(
23344        non_camel_case_types,
23345        non_snake_case,
23346        clippy::pub_underscore_fields,
23347        clippy::style
23348    )]
23349    const _: () = {
23350        use alloy::sol_types as alloy_sol_types;
23351        {
23352            #[doc(hidden)]
23353            #[allow(dead_code)]
23354            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
23355            #[doc(hidden)]
23356            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
23357            #[cfg(test)]
23358            #[allow(dead_code, unreachable_patterns)]
23359            fn _type_assertion(
23360                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
23361            ) {
23362                match _t {
23363                    alloy_sol_types::private::AssertTypeEq::<
23364                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
23365                    >(_) => {}
23366                }
23367            }
23368            #[automatically_derived]
23369            #[doc(hidden)]
23370            impl ::core::convert::From<x25519KeysCall> for UnderlyingRustTuple<'_> {
23371                fn from(value: x25519KeysCall) -> Self {
23372                    (value.x25519Key,)
23373                }
23374            }
23375            #[automatically_derived]
23376            #[doc(hidden)]
23377            impl ::core::convert::From<UnderlyingRustTuple<'_>> for x25519KeysCall {
23378                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
23379                    Self { x25519Key: tuple.0 }
23380                }
23381            }
23382        }
23383        {
23384            #[doc(hidden)]
23385            #[allow(dead_code)]
23386            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
23387            #[doc(hidden)]
23388            type UnderlyingRustTuple<'a> = (bool,);
23389            #[cfg(test)]
23390            #[allow(dead_code, unreachable_patterns)]
23391            fn _type_assertion(
23392                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
23393            ) {
23394                match _t {
23395                    alloy_sol_types::private::AssertTypeEq::<
23396                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
23397                    >(_) => {}
23398                }
23399            }
23400            #[automatically_derived]
23401            #[doc(hidden)]
23402            impl ::core::convert::From<x25519KeysReturn> for UnderlyingRustTuple<'_> {
23403                fn from(value: x25519KeysReturn) -> Self {
23404                    (value.used,)
23405                }
23406            }
23407            #[automatically_derived]
23408            #[doc(hidden)]
23409            impl ::core::convert::From<UnderlyingRustTuple<'_>> for x25519KeysReturn {
23410                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
23411                    Self { used: tuple.0 }
23412                }
23413            }
23414        }
23415        #[automatically_derived]
23416        impl alloy_sol_types::SolCall for x25519KeysCall {
23417            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
23418            type Token<'a> = <Self::Parameters<
23419                'a,
23420            > as alloy_sol_types::SolType>::Token<'a>;
23421            type Return = bool;
23422            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
23423            type ReturnToken<'a> = <Self::ReturnTuple<
23424                'a,
23425            > as alloy_sol_types::SolType>::Token<'a>;
23426            const SIGNATURE: &'static str = "x25519Keys(bytes32)";
23427            const SELECTOR: [u8; 4] = [90u8, 47u8, 81u8, 253u8];
23428            #[inline]
23429            fn new<'a>(
23430                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
23431            ) -> Self {
23432                tuple.into()
23433            }
23434            #[inline]
23435            fn tokenize(&self) -> Self::Token<'_> {
23436                (
23437                    <alloy::sol_types::sol_data::FixedBytes<
23438                        32,
23439                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
23440                )
23441            }
23442            #[inline]
23443            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
23444                (
23445                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
23446                        ret,
23447                    ),
23448                )
23449            }
23450            #[inline]
23451            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
23452                <Self::ReturnTuple<
23453                    '_,
23454                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
23455                    .map(|r| {
23456                        let r: x25519KeysReturn = r.into();
23457                        r.used
23458                    })
23459            }
23460            #[inline]
23461            fn abi_decode_returns_with_config(
23462                data: &[u8],
23463                config: alloy_sol_types::abi::AbiDecoderConfig,
23464            ) -> alloy_sol_types::Result<Self::Return> {
23465                <Self::ReturnTuple<
23466                    '_,
23467                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
23468                        data,
23469                        config,
23470                    )
23471                    .map(|r| {
23472                        let r: x25519KeysReturn = r.into();
23473                        r.used
23474                    })
23475            }
23476            #[inline]
23477            fn abi_decode_returns_validate(
23478                data: &[u8],
23479            ) -> alloy_sol_types::Result<Self::Return> {
23480                Self::abi_decode_returns_with_config(
23481                    data,
23482                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
23483                )
23484            }
23485        }
23486    };
23487    ///Container for all the [`StakeTableV3`](self) function calls.
23488    #[derive(Clone)]
23489    #[derive(serde::Serialize, serde::Deserialize)]
23490    #[derive(Debug, PartialEq, Eq, Hash)]
23491    pub enum StakeTableV3Calls {
23492        #[allow(missing_docs)]
23493        CURVE25519_P(CURVE25519_PCall),
23494        #[allow(missing_docs)]
23495        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
23496        #[allow(missing_docs)]
23497        MAX_COMMISSION_BPS(MAX_COMMISSION_BPSCall),
23498        #[allow(missing_docs)]
23499        MAX_EXIT_ESCROW_PERIOD(MAX_EXIT_ESCROW_PERIODCall),
23500        #[allow(missing_docs)]
23501        MAX_METADATA_URI_LENGTH(MAX_METADATA_URI_LENGTHCall),
23502        #[allow(missing_docs)]
23503        MAX_P2P_ADDR_LENGTH(MAX_P2P_ADDR_LENGTHCall),
23504        #[allow(missing_docs)]
23505        MIN_EXIT_ESCROW_PERIOD(MIN_EXIT_ESCROW_PERIODCall),
23506        #[allow(missing_docs)]
23507        PAUSER_ROLE(PAUSER_ROLECall),
23508        #[allow(missing_docs)]
23509        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
23510        #[allow(missing_docs)]
23511        _hashBlsKey(_hashBlsKeyCall),
23512        #[allow(missing_docs)]
23513        activeStake(activeStakeCall),
23514        #[allow(missing_docs)]
23515        blsKeys(blsKeysCall),
23516        #[allow(missing_docs)]
23517        claimValidatorExit(claimValidatorExitCall),
23518        #[allow(missing_docs)]
23519        claimWithdrawal(claimWithdrawalCall),
23520        #[allow(missing_docs)]
23521        commissionTracking(commissionTrackingCall),
23522        #[allow(missing_docs)]
23523        delegate(delegateCall),
23524        #[allow(missing_docs)]
23525        delegations(delegationsCall),
23526        #[allow(missing_docs)]
23527        deregisterValidator(deregisterValidatorCall),
23528        #[allow(missing_docs)]
23529        exitEscrowPeriod(exitEscrowPeriodCall),
23530        #[allow(missing_docs)]
23531        getRoleAdmin(getRoleAdminCall),
23532        #[allow(missing_docs)]
23533        getUndelegation(getUndelegationCall),
23534        #[allow(missing_docs)]
23535        getVersion(getVersionCall),
23536        #[allow(missing_docs)]
23537        grantRole(grantRoleCall),
23538        #[allow(missing_docs)]
23539        hasRole(hasRoleCall),
23540        #[allow(missing_docs)]
23541        initialize(initializeCall),
23542        #[allow(missing_docs)]
23543        initializeV2(initializeV2Call),
23544        #[allow(missing_docs)]
23545        initializeV3(initializeV3Call),
23546        #[allow(missing_docs)]
23547        initializedAtBlock(initializedAtBlockCall),
23548        #[allow(missing_docs)]
23549        lightClient(lightClientCall),
23550        #[allow(missing_docs)]
23551        maxCommissionIncrease(maxCommissionIncreaseCall),
23552        #[allow(missing_docs)]
23553        minCommissionIncreaseInterval(minCommissionIncreaseIntervalCall),
23554        #[allow(missing_docs)]
23555        minDelegateAmount(minDelegateAmountCall),
23556        #[allow(missing_docs)]
23557        owner(ownerCall),
23558        #[allow(missing_docs)]
23559        pause(pauseCall),
23560        #[allow(missing_docs)]
23561        paused(pausedCall),
23562        #[allow(missing_docs)]
23563        proxiableUUID(proxiableUUIDCall),
23564        #[allow(missing_docs)]
23565        registerValidator(registerValidatorCall),
23566        #[allow(missing_docs)]
23567        registerValidatorV2(registerValidatorV2Call),
23568        #[allow(missing_docs)]
23569        registerValidatorV3(registerValidatorV3Call),
23570        #[allow(missing_docs)]
23571        renounceOwnership(renounceOwnershipCall),
23572        #[allow(missing_docs)]
23573        renounceRole(renounceRoleCall),
23574        #[allow(missing_docs)]
23575        revokeRole(revokeRoleCall),
23576        #[allow(missing_docs)]
23577        schnorrKeys(schnorrKeysCall),
23578        #[allow(missing_docs)]
23579        setMaxCommissionIncrease(setMaxCommissionIncreaseCall),
23580        #[allow(missing_docs)]
23581        setMinCommissionUpdateInterval(setMinCommissionUpdateIntervalCall),
23582        #[allow(missing_docs)]
23583        setMinDelegateAmount(setMinDelegateAmountCall),
23584        #[allow(missing_docs)]
23585        supportsInterface(supportsInterfaceCall),
23586        #[allow(missing_docs)]
23587        token(tokenCall),
23588        #[allow(missing_docs)]
23589        transferOwnership(transferOwnershipCall),
23590        #[allow(missing_docs)]
23591        undelegate(undelegateCall),
23592        #[allow(missing_docs)]
23593        undelegations(undelegationsCall),
23594        #[allow(missing_docs)]
23595        unpause(unpauseCall),
23596        #[allow(missing_docs)]
23597        updateCommission(updateCommissionCall),
23598        #[allow(missing_docs)]
23599        updateConsensusKeys(updateConsensusKeysCall),
23600        #[allow(missing_docs)]
23601        updateConsensusKeysV2(updateConsensusKeysV2Call),
23602        #[allow(missing_docs)]
23603        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
23604        #[allow(missing_docs)]
23605        updateMetadataUri(updateMetadataUriCall),
23606        #[allow(missing_docs)]
23607        updateNetworkConfig(updateNetworkConfigCall),
23608        #[allow(missing_docs)]
23609        updateP2pAddr(updateP2pAddrCall),
23610        #[allow(missing_docs)]
23611        updateX25519Key(updateX25519KeyCall),
23612        #[allow(missing_docs)]
23613        upgradeToAndCall(upgradeToAndCallCall),
23614        #[allow(missing_docs)]
23615        validateMetadataUri(validateMetadataUriCall),
23616        #[allow(missing_docs)]
23617        validateP2pAddr(validateP2pAddrCall),
23618        #[allow(missing_docs)]
23619        validatorExits(validatorExitsCall),
23620        #[allow(missing_docs)]
23621        validators(validatorsCall),
23622        #[allow(missing_docs)]
23623        x25519Keys(x25519KeysCall),
23624    }
23625    impl StakeTableV3Calls {
23626        /// All the selectors of this enum.
23627        ///
23628        /// Note that the selectors might not be in the same order as the variants.
23629        /// No guarantees are made about the order of the selectors.
23630        ///
23631        /// Prefer using `SolInterface` methods instead.
23632        pub const SELECTORS: &'static [[u8; 4usize]] = &[
23633            [1u8, 255u8, 201u8, 167u8],
23634            [2u8, 110u8, 64u8, 43u8],
23635            [7u8, 61u8, 37u8, 252u8],
23636            [12u8, 178u8, 151u8, 100u8],
23637            [13u8, 142u8, 110u8, 44u8],
23638            [19u8, 185u8, 5u8, 122u8],
23639            [21u8, 243u8, 24u8, 53u8],
23640            [26u8, 32u8, 205u8, 99u8],
23641            [33u8, 64u8, 254u8, 205u8],
23642            [36u8, 138u8, 156u8, 163u8],
23643            [43u8, 158u8, 92u8, 138u8],
23644            [45u8, 201u8, 186u8, 198u8],
23645            [47u8, 47u8, 241u8, 93u8],
23646            [47u8, 226u8, 135u8, 89u8],
23647            [54u8, 86u8, 138u8, 190u8],
23648            [56u8, 228u8, 84u8, 177u8],
23649            [57u8, 75u8, 52u8, 143u8],
23650            [59u8, 43u8, 127u8, 250u8],
23651            [62u8, 115u8, 46u8, 186u8],
23652            [62u8, 157u8, 249u8, 181u8],
23653            [63u8, 59u8, 179u8, 102u8],
23654            [63u8, 75u8, 168u8, 58u8],
23655            [77u8, 153u8, 221u8, 22u8],
23656            [79u8, 30u8, 242u8, 134u8],
23657            [82u8, 120u8, 11u8, 110u8],
23658            [82u8, 209u8, 144u8, 45u8],
23659            [85u8, 68u8, 194u8, 241u8],
23660            [90u8, 47u8, 81u8, 253u8],
23661            [92u8, 151u8, 90u8, 187u8],
23662            [95u8, 135u8, 84u8, 166u8],
23663            [97u8, 112u8, 102u8, 229u8],
23664            [104u8, 135u8, 205u8, 54u8],
23665            [106u8, 145u8, 28u8, 207u8],
23666            [106u8, 210u8, 142u8, 159u8],
23667            [113u8, 80u8, 24u8, 166u8],
23668            [114u8, 233u8, 201u8, 52u8],
23669            [132u8, 86u8, 203u8, 89u8],
23670            [135u8, 12u8, 143u8, 38u8],
23671            [141u8, 165u8, 203u8, 91u8],
23672            [145u8, 209u8, 72u8, 84u8],
23673            [155u8, 48u8, 165u8, 230u8],
23674            [158u8, 154u8, 143u8, 49u8],
23675            [158u8, 201u8, 193u8, 56u8],
23676            [159u8, 251u8, 107u8, 67u8],
23677            [162u8, 23u8, 253u8, 223u8],
23678            [162u8, 215u8, 141u8, 213u8],
23679            [163u8, 6u8, 106u8, 171u8],
23680            [172u8, 92u8, 42u8, 208u8],
23681            [173u8, 60u8, 177u8, 204u8],
23682            [179u8, 230u8, 235u8, 213u8],
23683            [181u8, 112u8, 14u8, 104u8],
23684            [181u8, 236u8, 179u8, 68u8],
23685            [187u8, 96u8, 191u8, 176u8],
23686            [189u8, 73u8, 195u8, 95u8],
23687            [190u8, 32u8, 48u8, 148u8],
23688            [198u8, 72u8, 20u8, 221u8],
23689            [213u8, 71u8, 116u8, 31u8],
23690            [217u8, 204u8, 125u8, 38u8],
23691            [227u8, 242u8, 55u8, 230u8],
23692            [228u8, 209u8, 251u8, 148u8],
23693            [230u8, 41u8, 119u8, 248u8],
23694            [230u8, 58u8, 177u8, 233u8],
23695            [242u8, 253u8, 227u8, 139u8],
23696            [246u8, 119u8, 122u8, 16u8],
23697            [250u8, 82u8, 199u8, 216u8],
23698            [252u8, 12u8, 84u8, 106u8],
23699        ];
23700        /// The names of the variants in the same order as `SELECTORS`.
23701        pub const VARIANT_NAMES: &'static [&'static str] = &[
23702            ::core::stringify!(supportsInterface),
23703            ::core::stringify!(delegate),
23704            ::core::stringify!(updateX25519Key),
23705            ::core::stringify!(updateNetworkConfig),
23706            ::core::stringify!(getVersion),
23707            ::core::stringify!(registerValidator),
23708            ::core::stringify!(validateP2pAddr),
23709            ::core::stringify!(updateExitEscrowPeriod),
23710            ::core::stringify!(claimValidatorExit),
23711            ::core::stringify!(getRoleAdmin),
23712            ::core::stringify!(registerValidatorV2),
23713            ::core::stringify!(setMaxCommissionIncrease),
23714            ::core::stringify!(grantRole),
23715            ::core::stringify!(MAX_METADATA_URI_LENGTH),
23716            ::core::stringify!(renounceRole),
23717            ::core::stringify!(initializeV3),
23718            ::core::stringify!(setMinCommissionUpdateInterval),
23719            ::core::stringify!(updateCommission),
23720            ::core::stringify!(setMinDelegateAmount),
23721            ::core::stringify!(initializedAtBlock),
23722            ::core::stringify!(maxCommissionIncrease),
23723            ::core::stringify!(unpause),
23724            ::core::stringify!(undelegate),
23725            ::core::stringify!(upgradeToAndCall),
23726            ::core::stringify!(initializeV2),
23727            ::core::stringify!(proxiableUUID),
23728            ::core::stringify!(updateConsensusKeys),
23729            ::core::stringify!(x25519Keys),
23730            ::core::stringify!(paused),
23731            ::core::stringify!(schnorrKeys),
23732            ::core::stringify!(MAX_P2P_ADDR_LENGTH),
23733            ::core::stringify!(registerValidatorV3),
23734            ::core::stringify!(deregisterValidator),
23735            ::core::stringify!(MIN_EXIT_ESCROW_PERIOD),
23736            ::core::stringify!(renounceOwnership),
23737            ::core::stringify!(minDelegateAmount),
23738            ::core::stringify!(pause),
23739            ::core::stringify!(updateMetadataUri),
23740            ::core::stringify!(owner),
23741            ::core::stringify!(hasRole),
23742            ::core::stringify!(_hashBlsKey),
23743            ::core::stringify!(exitEscrowPeriod),
23744            ::core::stringify!(updateP2pAddr),
23745            ::core::stringify!(commissionTracking),
23746            ::core::stringify!(DEFAULT_ADMIN_ROLE),
23747            ::core::stringify!(undelegations),
23748            ::core::stringify!(claimWithdrawal),
23749            ::core::stringify!(updateConsensusKeysV2),
23750            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
23751            ::core::stringify!(blsKeys),
23752            ::core::stringify!(lightClient),
23753            ::core::stringify!(validatorExits),
23754            ::core::stringify!(getUndelegation),
23755            ::core::stringify!(activeStake),
23756            ::core::stringify!(initialize),
23757            ::core::stringify!(delegations),
23758            ::core::stringify!(revokeRole),
23759            ::core::stringify!(minCommissionIncreaseInterval),
23760            ::core::stringify!(validateMetadataUri),
23761            ::core::stringify!(MAX_EXIT_ESCROW_PERIOD),
23762            ::core::stringify!(MAX_COMMISSION_BPS),
23763            ::core::stringify!(PAUSER_ROLE),
23764            ::core::stringify!(transferOwnership),
23765            ::core::stringify!(CURVE25519_P),
23766            ::core::stringify!(validators),
23767            ::core::stringify!(token),
23768        ];
23769        /// The signatures in the same order as `SELECTORS`.
23770        pub const SIGNATURES: &'static [&'static str] = &[
23771            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
23772            <delegateCall as alloy_sol_types::SolCall>::SIGNATURE,
23773            <updateX25519KeyCall as alloy_sol_types::SolCall>::SIGNATURE,
23774            <updateNetworkConfigCall as alloy_sol_types::SolCall>::SIGNATURE,
23775            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
23776            <registerValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
23777            <validateP2pAddrCall as alloy_sol_types::SolCall>::SIGNATURE,
23778            <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
23779            <claimValidatorExitCall as alloy_sol_types::SolCall>::SIGNATURE,
23780            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
23781            <registerValidatorV2Call as alloy_sol_types::SolCall>::SIGNATURE,
23782            <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
23783            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
23784            <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
23785            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
23786            <initializeV3Call as alloy_sol_types::SolCall>::SIGNATURE,
23787            <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
23788            <updateCommissionCall as alloy_sol_types::SolCall>::SIGNATURE,
23789            <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
23790            <initializedAtBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
23791            <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
23792            <unpauseCall as alloy_sol_types::SolCall>::SIGNATURE,
23793            <undelegateCall as alloy_sol_types::SolCall>::SIGNATURE,
23794            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
23795            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
23796            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
23797            <updateConsensusKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
23798            <x25519KeysCall as alloy_sol_types::SolCall>::SIGNATURE,
23799            <pausedCall as alloy_sol_types::SolCall>::SIGNATURE,
23800            <schnorrKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
23801            <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
23802            <registerValidatorV3Call as alloy_sol_types::SolCall>::SIGNATURE,
23803            <deregisterValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
23804            <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
23805            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
23806            <minDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
23807            <pauseCall as alloy_sol_types::SolCall>::SIGNATURE,
23808            <updateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
23809            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
23810            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
23811            <_hashBlsKeyCall as alloy_sol_types::SolCall>::SIGNATURE,
23812            <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
23813            <updateP2pAddrCall as alloy_sol_types::SolCall>::SIGNATURE,
23814            <commissionTrackingCall as alloy_sol_types::SolCall>::SIGNATURE,
23815            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
23816            <undelegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
23817            <claimWithdrawalCall as alloy_sol_types::SolCall>::SIGNATURE,
23818            <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SIGNATURE,
23819            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
23820            <blsKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
23821            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
23822            <validatorExitsCall as alloy_sol_types::SolCall>::SIGNATURE,
23823            <getUndelegationCall as alloy_sol_types::SolCall>::SIGNATURE,
23824            <activeStakeCall as alloy_sol_types::SolCall>::SIGNATURE,
23825            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
23826            <delegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
23827            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
23828            <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
23829            <validateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
23830            <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
23831            <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SIGNATURE,
23832            <PAUSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
23833            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
23834            <CURVE25519_PCall as alloy_sol_types::SolCall>::SIGNATURE,
23835            <validatorsCall as alloy_sol_types::SolCall>::SIGNATURE,
23836            <tokenCall as alloy_sol_types::SolCall>::SIGNATURE,
23837        ];
23838        /// Returns the signature for the given selector, if known.
23839        #[inline]
23840        pub fn signature_by_selector(
23841            selector: [u8; 4usize],
23842        ) -> ::core::option::Option<&'static str> {
23843            match Self::SELECTORS.binary_search(&selector) {
23844                ::core::result::Result::Ok(idx) => {
23845                    ::core::option::Option::Some(Self::SIGNATURES[idx])
23846                }
23847                ::core::result::Result::Err(_) => ::core::option::Option::None,
23848            }
23849        }
23850        /// Returns the enum variant name for the given selector, if known.
23851        #[inline]
23852        pub fn name_by_selector(
23853            selector: [u8; 4usize],
23854        ) -> ::core::option::Option<&'static str> {
23855            let sig = Self::signature_by_selector(selector)?;
23856            sig.split_once('(').map(|(name, _)| name)
23857        }
23858    }
23859    #[automatically_derived]
23860    impl alloy_sol_types::SolInterface for StakeTableV3Calls {
23861        const NAME: &'static str = "StakeTableV3Calls";
23862        const MIN_DATA_LENGTH: usize = 0usize;
23863        const COUNT: usize = 66usize;
23864        #[inline]
23865        fn selector(&self) -> [u8; 4] {
23866            match self {
23867                Self::CURVE25519_P(_) => {
23868                    <CURVE25519_PCall as alloy_sol_types::SolCall>::SELECTOR
23869                }
23870                Self::DEFAULT_ADMIN_ROLE(_) => {
23871                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
23872                }
23873                Self::MAX_COMMISSION_BPS(_) => {
23874                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SELECTOR
23875                }
23876                Self::MAX_EXIT_ESCROW_PERIOD(_) => {
23877                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
23878                }
23879                Self::MAX_METADATA_URI_LENGTH(_) => {
23880                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
23881                }
23882                Self::MAX_P2P_ADDR_LENGTH(_) => {
23883                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
23884                }
23885                Self::MIN_EXIT_ESCROW_PERIOD(_) => {
23886                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
23887                }
23888                Self::PAUSER_ROLE(_) => {
23889                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
23890                }
23891                Self::UPGRADE_INTERFACE_VERSION(_) => {
23892                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
23893                }
23894                Self::_hashBlsKey(_) => {
23895                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
23896                }
23897                Self::activeStake(_) => {
23898                    <activeStakeCall as alloy_sol_types::SolCall>::SELECTOR
23899                }
23900                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
23901                Self::claimValidatorExit(_) => {
23902                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
23903                }
23904                Self::claimWithdrawal(_) => {
23905                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
23906                }
23907                Self::commissionTracking(_) => {
23908                    <commissionTrackingCall as alloy_sol_types::SolCall>::SELECTOR
23909                }
23910                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
23911                Self::delegations(_) => {
23912                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
23913                }
23914                Self::deregisterValidator(_) => {
23915                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
23916                }
23917                Self::exitEscrowPeriod(_) => {
23918                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
23919                }
23920                Self::getRoleAdmin(_) => {
23921                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
23922                }
23923                Self::getUndelegation(_) => {
23924                    <getUndelegationCall as alloy_sol_types::SolCall>::SELECTOR
23925                }
23926                Self::getVersion(_) => {
23927                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
23928                }
23929                Self::grantRole(_) => {
23930                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
23931                }
23932                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
23933                Self::initialize(_) => {
23934                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
23935                }
23936                Self::initializeV2(_) => {
23937                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
23938                }
23939                Self::initializeV3(_) => {
23940                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
23941                }
23942                Self::initializedAtBlock(_) => {
23943                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
23944                }
23945                Self::lightClient(_) => {
23946                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
23947                }
23948                Self::maxCommissionIncrease(_) => {
23949                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
23950                }
23951                Self::minCommissionIncreaseInterval(_) => {
23952                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SELECTOR
23953                }
23954                Self::minDelegateAmount(_) => {
23955                    <minDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
23956                }
23957                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
23958                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
23959                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
23960                Self::proxiableUUID(_) => {
23961                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
23962                }
23963                Self::registerValidator(_) => {
23964                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
23965                }
23966                Self::registerValidatorV2(_) => {
23967                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
23968                }
23969                Self::registerValidatorV3(_) => {
23970                    <registerValidatorV3Call as alloy_sol_types::SolCall>::SELECTOR
23971                }
23972                Self::renounceOwnership(_) => {
23973                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
23974                }
23975                Self::renounceRole(_) => {
23976                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
23977                }
23978                Self::revokeRole(_) => {
23979                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
23980                }
23981                Self::schnorrKeys(_) => {
23982                    <schnorrKeysCall as alloy_sol_types::SolCall>::SELECTOR
23983                }
23984                Self::setMaxCommissionIncrease(_) => {
23985                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
23986                }
23987                Self::setMinCommissionUpdateInterval(_) => {
23988                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SELECTOR
23989                }
23990                Self::setMinDelegateAmount(_) => {
23991                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
23992                }
23993                Self::supportsInterface(_) => {
23994                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
23995                }
23996                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
23997                Self::transferOwnership(_) => {
23998                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
23999                }
24000                Self::undelegate(_) => {
24001                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
24002                }
24003                Self::undelegations(_) => {
24004                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
24005                }
24006                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
24007                Self::updateCommission(_) => {
24008                    <updateCommissionCall as alloy_sol_types::SolCall>::SELECTOR
24009                }
24010                Self::updateConsensusKeys(_) => {
24011                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
24012                }
24013                Self::updateConsensusKeysV2(_) => {
24014                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
24015                }
24016                Self::updateExitEscrowPeriod(_) => {
24017                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
24018                }
24019                Self::updateMetadataUri(_) => {
24020                    <updateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
24021                }
24022                Self::updateNetworkConfig(_) => {
24023                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::SELECTOR
24024                }
24025                Self::updateP2pAddr(_) => {
24026                    <updateP2pAddrCall as alloy_sol_types::SolCall>::SELECTOR
24027                }
24028                Self::updateX25519Key(_) => {
24029                    <updateX25519KeyCall as alloy_sol_types::SolCall>::SELECTOR
24030                }
24031                Self::upgradeToAndCall(_) => {
24032                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
24033                }
24034                Self::validateMetadataUri(_) => {
24035                    <validateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
24036                }
24037                Self::validateP2pAddr(_) => {
24038                    <validateP2pAddrCall as alloy_sol_types::SolCall>::SELECTOR
24039                }
24040                Self::validatorExits(_) => {
24041                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
24042                }
24043                Self::validators(_) => {
24044                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
24045                }
24046                Self::x25519Keys(_) => {
24047                    <x25519KeysCall as alloy_sol_types::SolCall>::SELECTOR
24048                }
24049            }
24050        }
24051        #[inline]
24052        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
24053            Self::SELECTORS.get(i).copied()
24054        }
24055        #[inline]
24056        fn valid_selector(selector: [u8; 4]) -> bool {
24057            Self::SELECTORS.binary_search(&selector).is_ok()
24058        }
24059        #[inline]
24060        #[allow(non_snake_case)]
24061        fn abi_decode_raw(
24062            selector: [u8; 4],
24063            data: &[u8],
24064        ) -> alloy_sol_types::Result<Self> {
24065            Self::abi_decode_raw_with_config(
24066                selector,
24067                data,
24068                alloy_sol_types::abi::AbiDecoderConfig::default(),
24069            )
24070        }
24071        #[inline]
24072        #[allow(non_snake_case)]
24073        fn abi_decode_raw_with_config(
24074            selector: [u8; 4],
24075            data: &[u8],
24076            config: alloy_sol_types::abi::AbiDecoderConfig,
24077        ) -> alloy_sol_types::Result<Self> {
24078            static DECODE_SHIMS: &[fn(
24079                &[u8],
24080                alloy_sol_types::abi::AbiDecoderConfig,
24081            ) -> alloy_sol_types::Result<StakeTableV3Calls>] = &[
24082                {
24083                    fn supportsInterface(
24084                        data: &[u8],
24085                        config: alloy_sol_types::abi::AbiDecoderConfig,
24086                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24087                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24088                                data,
24089                                config,
24090                            )
24091                            .map(StakeTableV3Calls::supportsInterface)
24092                    }
24093                    supportsInterface
24094                },
24095                {
24096                    fn delegate(
24097                        data: &[u8],
24098                        config: alloy_sol_types::abi::AbiDecoderConfig,
24099                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24100                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24101                                data,
24102                                config,
24103                            )
24104                            .map(StakeTableV3Calls::delegate)
24105                    }
24106                    delegate
24107                },
24108                {
24109                    fn updateX25519Key(
24110                        data: &[u8],
24111                        config: alloy_sol_types::abi::AbiDecoderConfig,
24112                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24113                        <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24114                                data,
24115                                config,
24116                            )
24117                            .map(StakeTableV3Calls::updateX25519Key)
24118                    }
24119                    updateX25519Key
24120                },
24121                {
24122                    fn updateNetworkConfig(
24123                        data: &[u8],
24124                        config: alloy_sol_types::abi::AbiDecoderConfig,
24125                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24126                        <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24127                                data,
24128                                config,
24129                            )
24130                            .map(StakeTableV3Calls::updateNetworkConfig)
24131                    }
24132                    updateNetworkConfig
24133                },
24134                {
24135                    fn getVersion(
24136                        data: &[u8],
24137                        config: alloy_sol_types::abi::AbiDecoderConfig,
24138                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24139                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24140                                data,
24141                                config,
24142                            )
24143                            .map(StakeTableV3Calls::getVersion)
24144                    }
24145                    getVersion
24146                },
24147                {
24148                    fn registerValidator(
24149                        data: &[u8],
24150                        config: alloy_sol_types::abi::AbiDecoderConfig,
24151                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24152                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24153                                data,
24154                                config,
24155                            )
24156                            .map(StakeTableV3Calls::registerValidator)
24157                    }
24158                    registerValidator
24159                },
24160                {
24161                    fn validateP2pAddr(
24162                        data: &[u8],
24163                        config: alloy_sol_types::abi::AbiDecoderConfig,
24164                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24165                        <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24166                                data,
24167                                config,
24168                            )
24169                            .map(StakeTableV3Calls::validateP2pAddr)
24170                    }
24171                    validateP2pAddr
24172                },
24173                {
24174                    fn updateExitEscrowPeriod(
24175                        data: &[u8],
24176                        config: alloy_sol_types::abi::AbiDecoderConfig,
24177                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24178                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24179                                data,
24180                                config,
24181                            )
24182                            .map(StakeTableV3Calls::updateExitEscrowPeriod)
24183                    }
24184                    updateExitEscrowPeriod
24185                },
24186                {
24187                    fn claimValidatorExit(
24188                        data: &[u8],
24189                        config: alloy_sol_types::abi::AbiDecoderConfig,
24190                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24191                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24192                                data,
24193                                config,
24194                            )
24195                            .map(StakeTableV3Calls::claimValidatorExit)
24196                    }
24197                    claimValidatorExit
24198                },
24199                {
24200                    fn getRoleAdmin(
24201                        data: &[u8],
24202                        config: alloy_sol_types::abi::AbiDecoderConfig,
24203                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24204                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24205                                data,
24206                                config,
24207                            )
24208                            .map(StakeTableV3Calls::getRoleAdmin)
24209                    }
24210                    getRoleAdmin
24211                },
24212                {
24213                    fn registerValidatorV2(
24214                        data: &[u8],
24215                        config: alloy_sol_types::abi::AbiDecoderConfig,
24216                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24217                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24218                                data,
24219                                config,
24220                            )
24221                            .map(StakeTableV3Calls::registerValidatorV2)
24222                    }
24223                    registerValidatorV2
24224                },
24225                {
24226                    fn setMaxCommissionIncrease(
24227                        data: &[u8],
24228                        config: alloy_sol_types::abi::AbiDecoderConfig,
24229                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24230                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24231                                data,
24232                                config,
24233                            )
24234                            .map(StakeTableV3Calls::setMaxCommissionIncrease)
24235                    }
24236                    setMaxCommissionIncrease
24237                },
24238                {
24239                    fn grantRole(
24240                        data: &[u8],
24241                        config: alloy_sol_types::abi::AbiDecoderConfig,
24242                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24243                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24244                                data,
24245                                config,
24246                            )
24247                            .map(StakeTableV3Calls::grantRole)
24248                    }
24249                    grantRole
24250                },
24251                {
24252                    fn MAX_METADATA_URI_LENGTH(
24253                        data: &[u8],
24254                        config: alloy_sol_types::abi::AbiDecoderConfig,
24255                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24256                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24257                                data,
24258                                config,
24259                            )
24260                            .map(StakeTableV3Calls::MAX_METADATA_URI_LENGTH)
24261                    }
24262                    MAX_METADATA_URI_LENGTH
24263                },
24264                {
24265                    fn renounceRole(
24266                        data: &[u8],
24267                        config: alloy_sol_types::abi::AbiDecoderConfig,
24268                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24269                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24270                                data,
24271                                config,
24272                            )
24273                            .map(StakeTableV3Calls::renounceRole)
24274                    }
24275                    renounceRole
24276                },
24277                {
24278                    fn initializeV3(
24279                        data: &[u8],
24280                        config: alloy_sol_types::abi::AbiDecoderConfig,
24281                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24282                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24283                                data,
24284                                config,
24285                            )
24286                            .map(StakeTableV3Calls::initializeV3)
24287                    }
24288                    initializeV3
24289                },
24290                {
24291                    fn setMinCommissionUpdateInterval(
24292                        data: &[u8],
24293                        config: alloy_sol_types::abi::AbiDecoderConfig,
24294                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24295                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24296                                data,
24297                                config,
24298                            )
24299                            .map(StakeTableV3Calls::setMinCommissionUpdateInterval)
24300                    }
24301                    setMinCommissionUpdateInterval
24302                },
24303                {
24304                    fn updateCommission(
24305                        data: &[u8],
24306                        config: alloy_sol_types::abi::AbiDecoderConfig,
24307                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24308                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24309                                data,
24310                                config,
24311                            )
24312                            .map(StakeTableV3Calls::updateCommission)
24313                    }
24314                    updateCommission
24315                },
24316                {
24317                    fn setMinDelegateAmount(
24318                        data: &[u8],
24319                        config: alloy_sol_types::abi::AbiDecoderConfig,
24320                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24321                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24322                                data,
24323                                config,
24324                            )
24325                            .map(StakeTableV3Calls::setMinDelegateAmount)
24326                    }
24327                    setMinDelegateAmount
24328                },
24329                {
24330                    fn initializedAtBlock(
24331                        data: &[u8],
24332                        config: alloy_sol_types::abi::AbiDecoderConfig,
24333                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24334                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24335                                data,
24336                                config,
24337                            )
24338                            .map(StakeTableV3Calls::initializedAtBlock)
24339                    }
24340                    initializedAtBlock
24341                },
24342                {
24343                    fn maxCommissionIncrease(
24344                        data: &[u8],
24345                        config: alloy_sol_types::abi::AbiDecoderConfig,
24346                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24347                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24348                                data,
24349                                config,
24350                            )
24351                            .map(StakeTableV3Calls::maxCommissionIncrease)
24352                    }
24353                    maxCommissionIncrease
24354                },
24355                {
24356                    fn unpause(
24357                        data: &[u8],
24358                        config: alloy_sol_types::abi::AbiDecoderConfig,
24359                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24360                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24361                                data,
24362                                config,
24363                            )
24364                            .map(StakeTableV3Calls::unpause)
24365                    }
24366                    unpause
24367                },
24368                {
24369                    fn undelegate(
24370                        data: &[u8],
24371                        config: alloy_sol_types::abi::AbiDecoderConfig,
24372                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24373                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24374                                data,
24375                                config,
24376                            )
24377                            .map(StakeTableV3Calls::undelegate)
24378                    }
24379                    undelegate
24380                },
24381                {
24382                    fn upgradeToAndCall(
24383                        data: &[u8],
24384                        config: alloy_sol_types::abi::AbiDecoderConfig,
24385                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24386                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24387                                data,
24388                                config,
24389                            )
24390                            .map(StakeTableV3Calls::upgradeToAndCall)
24391                    }
24392                    upgradeToAndCall
24393                },
24394                {
24395                    fn initializeV2(
24396                        data: &[u8],
24397                        config: alloy_sol_types::abi::AbiDecoderConfig,
24398                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24399                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24400                                data,
24401                                config,
24402                            )
24403                            .map(StakeTableV3Calls::initializeV2)
24404                    }
24405                    initializeV2
24406                },
24407                {
24408                    fn proxiableUUID(
24409                        data: &[u8],
24410                        config: alloy_sol_types::abi::AbiDecoderConfig,
24411                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24412                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24413                                data,
24414                                config,
24415                            )
24416                            .map(StakeTableV3Calls::proxiableUUID)
24417                    }
24418                    proxiableUUID
24419                },
24420                {
24421                    fn updateConsensusKeys(
24422                        data: &[u8],
24423                        config: alloy_sol_types::abi::AbiDecoderConfig,
24424                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24425                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24426                                data,
24427                                config,
24428                            )
24429                            .map(StakeTableV3Calls::updateConsensusKeys)
24430                    }
24431                    updateConsensusKeys
24432                },
24433                {
24434                    fn x25519Keys(
24435                        data: &[u8],
24436                        config: alloy_sol_types::abi::AbiDecoderConfig,
24437                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24438                        <x25519KeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24439                                data,
24440                                config,
24441                            )
24442                            .map(StakeTableV3Calls::x25519Keys)
24443                    }
24444                    x25519Keys
24445                },
24446                {
24447                    fn paused(
24448                        data: &[u8],
24449                        config: alloy_sol_types::abi::AbiDecoderConfig,
24450                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24451                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24452                                data,
24453                                config,
24454                            )
24455                            .map(StakeTableV3Calls::paused)
24456                    }
24457                    paused
24458                },
24459                {
24460                    fn schnorrKeys(
24461                        data: &[u8],
24462                        config: alloy_sol_types::abi::AbiDecoderConfig,
24463                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24464                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24465                                data,
24466                                config,
24467                            )
24468                            .map(StakeTableV3Calls::schnorrKeys)
24469                    }
24470                    schnorrKeys
24471                },
24472                {
24473                    fn MAX_P2P_ADDR_LENGTH(
24474                        data: &[u8],
24475                        config: alloy_sol_types::abi::AbiDecoderConfig,
24476                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24477                        <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24478                                data,
24479                                config,
24480                            )
24481                            .map(StakeTableV3Calls::MAX_P2P_ADDR_LENGTH)
24482                    }
24483                    MAX_P2P_ADDR_LENGTH
24484                },
24485                {
24486                    fn registerValidatorV3(
24487                        data: &[u8],
24488                        config: alloy_sol_types::abi::AbiDecoderConfig,
24489                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24490                        <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24491                                data,
24492                                config,
24493                            )
24494                            .map(StakeTableV3Calls::registerValidatorV3)
24495                    }
24496                    registerValidatorV3
24497                },
24498                {
24499                    fn deregisterValidator(
24500                        data: &[u8],
24501                        config: alloy_sol_types::abi::AbiDecoderConfig,
24502                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24503                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24504                                data,
24505                                config,
24506                            )
24507                            .map(StakeTableV3Calls::deregisterValidator)
24508                    }
24509                    deregisterValidator
24510                },
24511                {
24512                    fn MIN_EXIT_ESCROW_PERIOD(
24513                        data: &[u8],
24514                        config: alloy_sol_types::abi::AbiDecoderConfig,
24515                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24516                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24517                                data,
24518                                config,
24519                            )
24520                            .map(StakeTableV3Calls::MIN_EXIT_ESCROW_PERIOD)
24521                    }
24522                    MIN_EXIT_ESCROW_PERIOD
24523                },
24524                {
24525                    fn renounceOwnership(
24526                        data: &[u8],
24527                        config: alloy_sol_types::abi::AbiDecoderConfig,
24528                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24529                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24530                                data,
24531                                config,
24532                            )
24533                            .map(StakeTableV3Calls::renounceOwnership)
24534                    }
24535                    renounceOwnership
24536                },
24537                {
24538                    fn minDelegateAmount(
24539                        data: &[u8],
24540                        config: alloy_sol_types::abi::AbiDecoderConfig,
24541                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24542                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24543                                data,
24544                                config,
24545                            )
24546                            .map(StakeTableV3Calls::minDelegateAmount)
24547                    }
24548                    minDelegateAmount
24549                },
24550                {
24551                    fn pause(
24552                        data: &[u8],
24553                        config: alloy_sol_types::abi::AbiDecoderConfig,
24554                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24555                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24556                                data,
24557                                config,
24558                            )
24559                            .map(StakeTableV3Calls::pause)
24560                    }
24561                    pause
24562                },
24563                {
24564                    fn updateMetadataUri(
24565                        data: &[u8],
24566                        config: alloy_sol_types::abi::AbiDecoderConfig,
24567                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24568                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24569                                data,
24570                                config,
24571                            )
24572                            .map(StakeTableV3Calls::updateMetadataUri)
24573                    }
24574                    updateMetadataUri
24575                },
24576                {
24577                    fn owner(
24578                        data: &[u8],
24579                        config: alloy_sol_types::abi::AbiDecoderConfig,
24580                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24581                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24582                                data,
24583                                config,
24584                            )
24585                            .map(StakeTableV3Calls::owner)
24586                    }
24587                    owner
24588                },
24589                {
24590                    fn hasRole(
24591                        data: &[u8],
24592                        config: alloy_sol_types::abi::AbiDecoderConfig,
24593                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24594                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24595                                data,
24596                                config,
24597                            )
24598                            .map(StakeTableV3Calls::hasRole)
24599                    }
24600                    hasRole
24601                },
24602                {
24603                    fn _hashBlsKey(
24604                        data: &[u8],
24605                        config: alloy_sol_types::abi::AbiDecoderConfig,
24606                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24607                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24608                                data,
24609                                config,
24610                            )
24611                            .map(StakeTableV3Calls::_hashBlsKey)
24612                    }
24613                    _hashBlsKey
24614                },
24615                {
24616                    fn exitEscrowPeriod(
24617                        data: &[u8],
24618                        config: alloy_sol_types::abi::AbiDecoderConfig,
24619                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24620                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24621                                data,
24622                                config,
24623                            )
24624                            .map(StakeTableV3Calls::exitEscrowPeriod)
24625                    }
24626                    exitEscrowPeriod
24627                },
24628                {
24629                    fn updateP2pAddr(
24630                        data: &[u8],
24631                        config: alloy_sol_types::abi::AbiDecoderConfig,
24632                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24633                        <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24634                                data,
24635                                config,
24636                            )
24637                            .map(StakeTableV3Calls::updateP2pAddr)
24638                    }
24639                    updateP2pAddr
24640                },
24641                {
24642                    fn commissionTracking(
24643                        data: &[u8],
24644                        config: alloy_sol_types::abi::AbiDecoderConfig,
24645                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24646                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24647                                data,
24648                                config,
24649                            )
24650                            .map(StakeTableV3Calls::commissionTracking)
24651                    }
24652                    commissionTracking
24653                },
24654                {
24655                    fn DEFAULT_ADMIN_ROLE(
24656                        data: &[u8],
24657                        config: alloy_sol_types::abi::AbiDecoderConfig,
24658                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24659                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24660                                data,
24661                                config,
24662                            )
24663                            .map(StakeTableV3Calls::DEFAULT_ADMIN_ROLE)
24664                    }
24665                    DEFAULT_ADMIN_ROLE
24666                },
24667                {
24668                    fn undelegations(
24669                        data: &[u8],
24670                        config: alloy_sol_types::abi::AbiDecoderConfig,
24671                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24672                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24673                                data,
24674                                config,
24675                            )
24676                            .map(StakeTableV3Calls::undelegations)
24677                    }
24678                    undelegations
24679                },
24680                {
24681                    fn claimWithdrawal(
24682                        data: &[u8],
24683                        config: alloy_sol_types::abi::AbiDecoderConfig,
24684                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24685                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24686                                data,
24687                                config,
24688                            )
24689                            .map(StakeTableV3Calls::claimWithdrawal)
24690                    }
24691                    claimWithdrawal
24692                },
24693                {
24694                    fn updateConsensusKeysV2(
24695                        data: &[u8],
24696                        config: alloy_sol_types::abi::AbiDecoderConfig,
24697                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24698                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24699                                data,
24700                                config,
24701                            )
24702                            .map(StakeTableV3Calls::updateConsensusKeysV2)
24703                    }
24704                    updateConsensusKeysV2
24705                },
24706                {
24707                    fn UPGRADE_INTERFACE_VERSION(
24708                        data: &[u8],
24709                        config: alloy_sol_types::abi::AbiDecoderConfig,
24710                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24711                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24712                                data,
24713                                config,
24714                            )
24715                            .map(StakeTableV3Calls::UPGRADE_INTERFACE_VERSION)
24716                    }
24717                    UPGRADE_INTERFACE_VERSION
24718                },
24719                {
24720                    fn blsKeys(
24721                        data: &[u8],
24722                        config: alloy_sol_types::abi::AbiDecoderConfig,
24723                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24724                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24725                                data,
24726                                config,
24727                            )
24728                            .map(StakeTableV3Calls::blsKeys)
24729                    }
24730                    blsKeys
24731                },
24732                {
24733                    fn lightClient(
24734                        data: &[u8],
24735                        config: alloy_sol_types::abi::AbiDecoderConfig,
24736                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24737                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24738                                data,
24739                                config,
24740                            )
24741                            .map(StakeTableV3Calls::lightClient)
24742                    }
24743                    lightClient
24744                },
24745                {
24746                    fn validatorExits(
24747                        data: &[u8],
24748                        config: alloy_sol_types::abi::AbiDecoderConfig,
24749                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24750                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24751                                data,
24752                                config,
24753                            )
24754                            .map(StakeTableV3Calls::validatorExits)
24755                    }
24756                    validatorExits
24757                },
24758                {
24759                    fn getUndelegation(
24760                        data: &[u8],
24761                        config: alloy_sol_types::abi::AbiDecoderConfig,
24762                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24763                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24764                                data,
24765                                config,
24766                            )
24767                            .map(StakeTableV3Calls::getUndelegation)
24768                    }
24769                    getUndelegation
24770                },
24771                {
24772                    fn activeStake(
24773                        data: &[u8],
24774                        config: alloy_sol_types::abi::AbiDecoderConfig,
24775                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24776                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24777                                data,
24778                                config,
24779                            )
24780                            .map(StakeTableV3Calls::activeStake)
24781                    }
24782                    activeStake
24783                },
24784                {
24785                    fn initialize(
24786                        data: &[u8],
24787                        config: alloy_sol_types::abi::AbiDecoderConfig,
24788                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24789                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24790                                data,
24791                                config,
24792                            )
24793                            .map(StakeTableV3Calls::initialize)
24794                    }
24795                    initialize
24796                },
24797                {
24798                    fn delegations(
24799                        data: &[u8],
24800                        config: alloy_sol_types::abi::AbiDecoderConfig,
24801                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24802                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24803                                data,
24804                                config,
24805                            )
24806                            .map(StakeTableV3Calls::delegations)
24807                    }
24808                    delegations
24809                },
24810                {
24811                    fn revokeRole(
24812                        data: &[u8],
24813                        config: alloy_sol_types::abi::AbiDecoderConfig,
24814                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24815                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24816                                data,
24817                                config,
24818                            )
24819                            .map(StakeTableV3Calls::revokeRole)
24820                    }
24821                    revokeRole
24822                },
24823                {
24824                    fn minCommissionIncreaseInterval(
24825                        data: &[u8],
24826                        config: alloy_sol_types::abi::AbiDecoderConfig,
24827                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24828                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24829                                data,
24830                                config,
24831                            )
24832                            .map(StakeTableV3Calls::minCommissionIncreaseInterval)
24833                    }
24834                    minCommissionIncreaseInterval
24835                },
24836                {
24837                    fn validateMetadataUri(
24838                        data: &[u8],
24839                        config: alloy_sol_types::abi::AbiDecoderConfig,
24840                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24841                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24842                                data,
24843                                config,
24844                            )
24845                            .map(StakeTableV3Calls::validateMetadataUri)
24846                    }
24847                    validateMetadataUri
24848                },
24849                {
24850                    fn MAX_EXIT_ESCROW_PERIOD(
24851                        data: &[u8],
24852                        config: alloy_sol_types::abi::AbiDecoderConfig,
24853                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24854                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24855                                data,
24856                                config,
24857                            )
24858                            .map(StakeTableV3Calls::MAX_EXIT_ESCROW_PERIOD)
24859                    }
24860                    MAX_EXIT_ESCROW_PERIOD
24861                },
24862                {
24863                    fn MAX_COMMISSION_BPS(
24864                        data: &[u8],
24865                        config: alloy_sol_types::abi::AbiDecoderConfig,
24866                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24867                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24868                                data,
24869                                config,
24870                            )
24871                            .map(StakeTableV3Calls::MAX_COMMISSION_BPS)
24872                    }
24873                    MAX_COMMISSION_BPS
24874                },
24875                {
24876                    fn PAUSER_ROLE(
24877                        data: &[u8],
24878                        config: alloy_sol_types::abi::AbiDecoderConfig,
24879                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24880                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24881                                data,
24882                                config,
24883                            )
24884                            .map(StakeTableV3Calls::PAUSER_ROLE)
24885                    }
24886                    PAUSER_ROLE
24887                },
24888                {
24889                    fn transferOwnership(
24890                        data: &[u8],
24891                        config: alloy_sol_types::abi::AbiDecoderConfig,
24892                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24893                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24894                                data,
24895                                config,
24896                            )
24897                            .map(StakeTableV3Calls::transferOwnership)
24898                    }
24899                    transferOwnership
24900                },
24901                {
24902                    fn CURVE25519_P(
24903                        data: &[u8],
24904                        config: alloy_sol_types::abi::AbiDecoderConfig,
24905                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24906                        <CURVE25519_PCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24907                                data,
24908                                config,
24909                            )
24910                            .map(StakeTableV3Calls::CURVE25519_P)
24911                    }
24912                    CURVE25519_P
24913                },
24914                {
24915                    fn validators(
24916                        data: &[u8],
24917                        config: alloy_sol_types::abi::AbiDecoderConfig,
24918                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24919                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24920                                data,
24921                                config,
24922                            )
24923                            .map(StakeTableV3Calls::validators)
24924                    }
24925                    validators
24926                },
24927                {
24928                    fn token(
24929                        data: &[u8],
24930                        config: alloy_sol_types::abi::AbiDecoderConfig,
24931                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24932                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
24933                                data,
24934                                config,
24935                            )
24936                            .map(StakeTableV3Calls::token)
24937                    }
24938                    token
24939                },
24940            ];
24941            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
24942                return Err(
24943                    alloy_sol_types::Error::unknown_selector(
24944                        <Self as alloy_sol_types::SolInterface>::NAME,
24945                        selector,
24946                    ),
24947                );
24948            };
24949            DECODE_SHIMS[idx](data, config)
24950        }
24951        #[inline]
24952        #[allow(non_snake_case)]
24953        fn abi_decode_raw_validate(
24954            selector: [u8; 4],
24955            data: &[u8],
24956        ) -> alloy_sol_types::Result<Self> {
24957            Self::abi_decode_raw_with_config(
24958                selector,
24959                data,
24960                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
24961            )
24962        }
24963        #[inline]
24964        fn abi_encoded_size(&self) -> usize {
24965            match self {
24966                Self::CURVE25519_P(inner) => {
24967                    <CURVE25519_PCall as alloy_sol_types::SolCall>::abi_encoded_size(
24968                        inner,
24969                    )
24970                }
24971                Self::DEFAULT_ADMIN_ROLE(inner) => {
24972                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
24973                        inner,
24974                    )
24975                }
24976                Self::MAX_COMMISSION_BPS(inner) => {
24977                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encoded_size(
24978                        inner,
24979                    )
24980                }
24981                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
24982                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
24983                        inner,
24984                    )
24985                }
24986                Self::MAX_METADATA_URI_LENGTH(inner) => {
24987                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
24988                        inner,
24989                    )
24990                }
24991                Self::MAX_P2P_ADDR_LENGTH(inner) => {
24992                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
24993                        inner,
24994                    )
24995                }
24996                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
24997                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
24998                        inner,
24999                    )
25000                }
25001                Self::PAUSER_ROLE(inner) => {
25002                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
25003                        inner,
25004                    )
25005                }
25006                Self::UPGRADE_INTERFACE_VERSION(inner) => {
25007                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
25008                        inner,
25009                    )
25010                }
25011                Self::_hashBlsKey(inner) => {
25012                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
25013                        inner,
25014                    )
25015                }
25016                Self::activeStake(inner) => {
25017                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
25018                        inner,
25019                    )
25020                }
25021                Self::blsKeys(inner) => {
25022                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25023                }
25024                Self::claimValidatorExit(inner) => {
25025                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
25026                        inner,
25027                    )
25028                }
25029                Self::claimWithdrawal(inner) => {
25030                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
25031                        inner,
25032                    )
25033                }
25034                Self::commissionTracking(inner) => {
25035                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encoded_size(
25036                        inner,
25037                    )
25038                }
25039                Self::delegate(inner) => {
25040                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25041                }
25042                Self::delegations(inner) => {
25043                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
25044                        inner,
25045                    )
25046                }
25047                Self::deregisterValidator(inner) => {
25048                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
25049                        inner,
25050                    )
25051                }
25052                Self::exitEscrowPeriod(inner) => {
25053                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
25054                        inner,
25055                    )
25056                }
25057                Self::getRoleAdmin(inner) => {
25058                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
25059                        inner,
25060                    )
25061                }
25062                Self::getUndelegation(inner) => {
25063                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encoded_size(
25064                        inner,
25065                    )
25066                }
25067                Self::getVersion(inner) => {
25068                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25069                }
25070                Self::grantRole(inner) => {
25071                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25072                }
25073                Self::hasRole(inner) => {
25074                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25075                }
25076                Self::initialize(inner) => {
25077                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25078                }
25079                Self::initializeV2(inner) => {
25080                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
25081                        inner,
25082                    )
25083                }
25084                Self::initializeV3(inner) => {
25085                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
25086                        inner,
25087                    )
25088                }
25089                Self::initializedAtBlock(inner) => {
25090                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
25091                        inner,
25092                    )
25093                }
25094                Self::lightClient(inner) => {
25095                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
25096                        inner,
25097                    )
25098                }
25099                Self::maxCommissionIncrease(inner) => {
25100                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
25101                        inner,
25102                    )
25103                }
25104                Self::minCommissionIncreaseInterval(inner) => {
25105                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
25106                        inner,
25107                    )
25108                }
25109                Self::minDelegateAmount(inner) => {
25110                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
25111                        inner,
25112                    )
25113                }
25114                Self::owner(inner) => {
25115                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25116                }
25117                Self::pause(inner) => {
25118                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25119                }
25120                Self::paused(inner) => {
25121                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25122                }
25123                Self::proxiableUUID(inner) => {
25124                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
25125                        inner,
25126                    )
25127                }
25128                Self::registerValidator(inner) => {
25129                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
25130                        inner,
25131                    )
25132                }
25133                Self::registerValidatorV2(inner) => {
25134                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
25135                        inner,
25136                    )
25137                }
25138                Self::registerValidatorV3(inner) => {
25139                    <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
25140                        inner,
25141                    )
25142                }
25143                Self::renounceOwnership(inner) => {
25144                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
25145                        inner,
25146                    )
25147                }
25148                Self::renounceRole(inner) => {
25149                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
25150                        inner,
25151                    )
25152                }
25153                Self::revokeRole(inner) => {
25154                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25155                }
25156                Self::schnorrKeys(inner) => {
25157                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
25158                        inner,
25159                    )
25160                }
25161                Self::setMaxCommissionIncrease(inner) => {
25162                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
25163                        inner,
25164                    )
25165                }
25166                Self::setMinCommissionUpdateInterval(inner) => {
25167                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
25168                        inner,
25169                    )
25170                }
25171                Self::setMinDelegateAmount(inner) => {
25172                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
25173                        inner,
25174                    )
25175                }
25176                Self::supportsInterface(inner) => {
25177                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
25178                        inner,
25179                    )
25180                }
25181                Self::token(inner) => {
25182                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25183                }
25184                Self::transferOwnership(inner) => {
25185                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
25186                        inner,
25187                    )
25188                }
25189                Self::undelegate(inner) => {
25190                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25191                }
25192                Self::undelegations(inner) => {
25193                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
25194                        inner,
25195                    )
25196                }
25197                Self::unpause(inner) => {
25198                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25199                }
25200                Self::updateCommission(inner) => {
25201                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
25202                        inner,
25203                    )
25204                }
25205                Self::updateConsensusKeys(inner) => {
25206                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
25207                        inner,
25208                    )
25209                }
25210                Self::updateConsensusKeysV2(inner) => {
25211                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
25212                        inner,
25213                    )
25214                }
25215                Self::updateExitEscrowPeriod(inner) => {
25216                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
25217                        inner,
25218                    )
25219                }
25220                Self::updateMetadataUri(inner) => {
25221                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
25222                        inner,
25223                    )
25224                }
25225                Self::updateNetworkConfig(inner) => {
25226                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_encoded_size(
25227                        inner,
25228                    )
25229                }
25230                Self::updateP2pAddr(inner) => {
25231                    <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_encoded_size(
25232                        inner,
25233                    )
25234                }
25235                Self::updateX25519Key(inner) => {
25236                    <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
25237                        inner,
25238                    )
25239                }
25240                Self::upgradeToAndCall(inner) => {
25241                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
25242                        inner,
25243                    )
25244                }
25245                Self::validateMetadataUri(inner) => {
25246                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
25247                        inner,
25248                    )
25249                }
25250                Self::validateP2pAddr(inner) => {
25251                    <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_encoded_size(
25252                        inner,
25253                    )
25254                }
25255                Self::validatorExits(inner) => {
25256                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
25257                        inner,
25258                    )
25259                }
25260                Self::validators(inner) => {
25261                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25262                }
25263                Self::x25519Keys(inner) => {
25264                    <x25519KeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
25265                }
25266            }
25267        }
25268        #[inline]
25269        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
25270            match self {
25271                Self::CURVE25519_P(inner) => {
25272                    <CURVE25519_PCall as alloy_sol_types::SolCall>::abi_encode_raw(
25273                        inner,
25274                        out,
25275                    )
25276                }
25277                Self::DEFAULT_ADMIN_ROLE(inner) => {
25278                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
25279                        inner,
25280                        out,
25281                    )
25282                }
25283                Self::MAX_COMMISSION_BPS(inner) => {
25284                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encode_raw(
25285                        inner,
25286                        out,
25287                    )
25288                }
25289                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
25290                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
25291                        inner,
25292                        out,
25293                    )
25294                }
25295                Self::MAX_METADATA_URI_LENGTH(inner) => {
25296                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
25297                        inner,
25298                        out,
25299                    )
25300                }
25301                Self::MAX_P2P_ADDR_LENGTH(inner) => {
25302                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
25303                        inner,
25304                        out,
25305                    )
25306                }
25307                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
25308                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
25309                        inner,
25310                        out,
25311                    )
25312                }
25313                Self::PAUSER_ROLE(inner) => {
25314                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
25315                        inner,
25316                        out,
25317                    )
25318                }
25319                Self::UPGRADE_INTERFACE_VERSION(inner) => {
25320                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
25321                        inner,
25322                        out,
25323                    )
25324                }
25325                Self::_hashBlsKey(inner) => {
25326                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
25327                        inner,
25328                        out,
25329                    )
25330                }
25331                Self::activeStake(inner) => {
25332                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
25333                        inner,
25334                        out,
25335                    )
25336                }
25337                Self::blsKeys(inner) => {
25338                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25339                }
25340                Self::claimValidatorExit(inner) => {
25341                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
25342                        inner,
25343                        out,
25344                    )
25345                }
25346                Self::claimWithdrawal(inner) => {
25347                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
25348                        inner,
25349                        out,
25350                    )
25351                }
25352                Self::commissionTracking(inner) => {
25353                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encode_raw(
25354                        inner,
25355                        out,
25356                    )
25357                }
25358                Self::delegate(inner) => {
25359                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
25360                        inner,
25361                        out,
25362                    )
25363                }
25364                Self::delegations(inner) => {
25365                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
25366                        inner,
25367                        out,
25368                    )
25369                }
25370                Self::deregisterValidator(inner) => {
25371                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
25372                        inner,
25373                        out,
25374                    )
25375                }
25376                Self::exitEscrowPeriod(inner) => {
25377                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
25378                        inner,
25379                        out,
25380                    )
25381                }
25382                Self::getRoleAdmin(inner) => {
25383                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
25384                        inner,
25385                        out,
25386                    )
25387                }
25388                Self::getUndelegation(inner) => {
25389                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
25390                        inner,
25391                        out,
25392                    )
25393                }
25394                Self::getVersion(inner) => {
25395                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
25396                        inner,
25397                        out,
25398                    )
25399                }
25400                Self::grantRole(inner) => {
25401                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
25402                        inner,
25403                        out,
25404                    )
25405                }
25406                Self::hasRole(inner) => {
25407                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25408                }
25409                Self::initialize(inner) => {
25410                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
25411                        inner,
25412                        out,
25413                    )
25414                }
25415                Self::initializeV2(inner) => {
25416                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
25417                        inner,
25418                        out,
25419                    )
25420                }
25421                Self::initializeV3(inner) => {
25422                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
25423                        inner,
25424                        out,
25425                    )
25426                }
25427                Self::initializedAtBlock(inner) => {
25428                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
25429                        inner,
25430                        out,
25431                    )
25432                }
25433                Self::lightClient(inner) => {
25434                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
25435                        inner,
25436                        out,
25437                    )
25438                }
25439                Self::maxCommissionIncrease(inner) => {
25440                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
25441                        inner,
25442                        out,
25443                    )
25444                }
25445                Self::minCommissionIncreaseInterval(inner) => {
25446                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
25447                        inner,
25448                        out,
25449                    )
25450                }
25451                Self::minDelegateAmount(inner) => {
25452                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
25453                        inner,
25454                        out,
25455                    )
25456                }
25457                Self::owner(inner) => {
25458                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25459                }
25460                Self::pause(inner) => {
25461                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25462                }
25463                Self::paused(inner) => {
25464                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25465                }
25466                Self::proxiableUUID(inner) => {
25467                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
25468                        inner,
25469                        out,
25470                    )
25471                }
25472                Self::registerValidator(inner) => {
25473                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
25474                        inner,
25475                        out,
25476                    )
25477                }
25478                Self::registerValidatorV2(inner) => {
25479                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
25480                        inner,
25481                        out,
25482                    )
25483                }
25484                Self::registerValidatorV3(inner) => {
25485                    <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
25486                        inner,
25487                        out,
25488                    )
25489                }
25490                Self::renounceOwnership(inner) => {
25491                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
25492                        inner,
25493                        out,
25494                    )
25495                }
25496                Self::renounceRole(inner) => {
25497                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
25498                        inner,
25499                        out,
25500                    )
25501                }
25502                Self::revokeRole(inner) => {
25503                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
25504                        inner,
25505                        out,
25506                    )
25507                }
25508                Self::schnorrKeys(inner) => {
25509                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
25510                        inner,
25511                        out,
25512                    )
25513                }
25514                Self::setMaxCommissionIncrease(inner) => {
25515                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
25516                        inner,
25517                        out,
25518                    )
25519                }
25520                Self::setMinCommissionUpdateInterval(inner) => {
25521                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
25522                        inner,
25523                        out,
25524                    )
25525                }
25526                Self::setMinDelegateAmount(inner) => {
25527                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
25528                        inner,
25529                        out,
25530                    )
25531                }
25532                Self::supportsInterface(inner) => {
25533                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
25534                        inner,
25535                        out,
25536                    )
25537                }
25538                Self::token(inner) => {
25539                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25540                }
25541                Self::transferOwnership(inner) => {
25542                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
25543                        inner,
25544                        out,
25545                    )
25546                }
25547                Self::undelegate(inner) => {
25548                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
25549                        inner,
25550                        out,
25551                    )
25552                }
25553                Self::undelegations(inner) => {
25554                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
25555                        inner,
25556                        out,
25557                    )
25558                }
25559                Self::unpause(inner) => {
25560                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
25561                }
25562                Self::updateCommission(inner) => {
25563                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
25564                        inner,
25565                        out,
25566                    )
25567                }
25568                Self::updateConsensusKeys(inner) => {
25569                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
25570                        inner,
25571                        out,
25572                    )
25573                }
25574                Self::updateConsensusKeysV2(inner) => {
25575                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
25576                        inner,
25577                        out,
25578                    )
25579                }
25580                Self::updateExitEscrowPeriod(inner) => {
25581                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
25582                        inner,
25583                        out,
25584                    )
25585                }
25586                Self::updateMetadataUri(inner) => {
25587                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
25588                        inner,
25589                        out,
25590                    )
25591                }
25592                Self::updateNetworkConfig(inner) => {
25593                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_encode_raw(
25594                        inner,
25595                        out,
25596                    )
25597                }
25598                Self::updateP2pAddr(inner) => {
25599                    <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_encode_raw(
25600                        inner,
25601                        out,
25602                    )
25603                }
25604                Self::updateX25519Key(inner) => {
25605                    <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
25606                        inner,
25607                        out,
25608                    )
25609                }
25610                Self::upgradeToAndCall(inner) => {
25611                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
25612                        inner,
25613                        out,
25614                    )
25615                }
25616                Self::validateMetadataUri(inner) => {
25617                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
25618                        inner,
25619                        out,
25620                    )
25621                }
25622                Self::validateP2pAddr(inner) => {
25623                    <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_encode_raw(
25624                        inner,
25625                        out,
25626                    )
25627                }
25628                Self::validatorExits(inner) => {
25629                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
25630                        inner,
25631                        out,
25632                    )
25633                }
25634                Self::validators(inner) => {
25635                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
25636                        inner,
25637                        out,
25638                    )
25639                }
25640                Self::x25519Keys(inner) => {
25641                    <x25519KeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
25642                        inner,
25643                        out,
25644                    )
25645                }
25646            }
25647        }
25648    }
25649    ///Container for all the [`StakeTableV3`](self) custom errors.
25650    #[derive(Clone)]
25651    #[derive(serde::Serialize, serde::Deserialize)]
25652    #[derive(Debug, PartialEq, Eq, Hash)]
25653    pub enum StakeTableV3Errors {
25654        #[allow(missing_docs)]
25655        AccessControlBadConfirmation(AccessControlBadConfirmation),
25656        #[allow(missing_docs)]
25657        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
25658        #[allow(missing_docs)]
25659        AddressEmptyCode(AddressEmptyCode),
25660        #[allow(missing_docs)]
25661        BLSSigIsInfinity(BLSSigIsInfinity),
25662        #[allow(missing_docs)]
25663        BLSSigVerificationFailed(BLSSigVerificationFailed),
25664        #[allow(missing_docs)]
25665        BLSVKIsInfinity(BLSVKIsInfinity),
25666        #[allow(missing_docs)]
25667        BN254PairingProdFailed(BN254PairingProdFailed),
25668        #[allow(missing_docs)]
25669        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
25670        #[allow(missing_docs)]
25671        CommissionAlreadyInitialized(CommissionAlreadyInitialized),
25672        #[allow(missing_docs)]
25673        CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax),
25674        #[allow(missing_docs)]
25675        CommissionUnchanged(CommissionUnchanged),
25676        #[allow(missing_docs)]
25677        CommissionUpdateTooSoon(CommissionUpdateTooSoon),
25678        #[allow(missing_docs)]
25679        DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced),
25680        #[allow(missing_docs)]
25681        DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked),
25682        #[allow(missing_docs)]
25683        DelegateAmountTooSmall(DelegateAmountTooSmall),
25684        #[allow(missing_docs)]
25685        DeprecatedFunction(DeprecatedFunction),
25686        #[allow(missing_docs)]
25687        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
25688        #[allow(missing_docs)]
25689        ERC1967NonPayable(ERC1967NonPayable),
25690        #[allow(missing_docs)]
25691        EnforcedPause(EnforcedPause),
25692        #[allow(missing_docs)]
25693        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
25694        #[allow(missing_docs)]
25695        ExpectedPause(ExpectedPause),
25696        #[allow(missing_docs)]
25697        FailedInnerCall(FailedInnerCall),
25698        #[allow(missing_docs)]
25699        InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance),
25700        #[allow(missing_docs)]
25701        InsufficientAllowance(InsufficientAllowance),
25702        #[allow(missing_docs)]
25703        InsufficientBalance(InsufficientBalance),
25704        #[allow(missing_docs)]
25705        InvalidCommission(InvalidCommission),
25706        #[allow(missing_docs)]
25707        InvalidG1(InvalidG1),
25708        #[allow(missing_docs)]
25709        InvalidInitialization(InvalidInitialization),
25710        #[allow(missing_docs)]
25711        InvalidMetadataUriLength(InvalidMetadataUriLength),
25712        #[allow(missing_docs)]
25713        InvalidP2pAddr(InvalidP2pAddr),
25714        #[allow(missing_docs)]
25715        InvalidRateLimitParameters(InvalidRateLimitParameters),
25716        #[allow(missing_docs)]
25717        InvalidSchnorrSig(InvalidSchnorrSig),
25718        #[allow(missing_docs)]
25719        InvalidSchnorrVK(InvalidSchnorrVK),
25720        #[allow(missing_docs)]
25721        InvalidX25519Key(InvalidX25519Key),
25722        #[allow(missing_docs)]
25723        MinDelegateAmountTooSmall(MinDelegateAmountTooSmall),
25724        #[allow(missing_docs)]
25725        NoUndelegationFound(NoUndelegationFound),
25726        #[allow(missing_docs)]
25727        NotInitializing(NotInitializing),
25728        #[allow(missing_docs)]
25729        NothingToWithdraw(NothingToWithdraw),
25730        #[allow(missing_docs)]
25731        OwnableInvalidOwner(OwnableInvalidOwner),
25732        #[allow(missing_docs)]
25733        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
25734        #[allow(missing_docs)]
25735        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
25736        #[allow(missing_docs)]
25737        PowPrecompileFailed(PowPrecompileFailed),
25738        #[allow(missing_docs)]
25739        PrematureWithdrawal(PrematureWithdrawal),
25740        #[allow(missing_docs)]
25741        SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed),
25742        #[allow(missing_docs)]
25743        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
25744        #[allow(missing_docs)]
25745        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
25746        #[allow(missing_docs)]
25747        UndelegationAlreadyExists(UndelegationAlreadyExists),
25748        #[allow(missing_docs)]
25749        ValidatorAlreadyExited(ValidatorAlreadyExited),
25750        #[allow(missing_docs)]
25751        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
25752        #[allow(missing_docs)]
25753        ValidatorInactive(ValidatorInactive),
25754        #[allow(missing_docs)]
25755        ValidatorNotExited(ValidatorNotExited),
25756        #[allow(missing_docs)]
25757        X25519KeyAlreadyUsed(X25519KeyAlreadyUsed),
25758        #[allow(missing_docs)]
25759        ZeroAddress(ZeroAddress),
25760        #[allow(missing_docs)]
25761        ZeroAmount(ZeroAmount),
25762    }
25763    impl StakeTableV3Errors {
25764        /// All the selectors of this enum.
25765        ///
25766        /// Note that the selectors might not be in the same order as the variants.
25767        /// No guarantees are made about the order of the selectors.
25768        ///
25769        /// Prefer using `SolInterface` methods instead.
25770        pub const SELECTORS: &'static [[u8; 4usize]] = &[
25771            [1u8, 181u8, 20u8, 174u8],
25772            [6u8, 207u8, 67u8, 143u8],
25773            [12u8, 237u8, 62u8, 80u8],
25774            [17u8, 140u8, 218u8, 167u8],
25775            [20u8, 37u8, 234u8, 66u8],
25776            [22u8, 235u8, 148u8, 203u8],
25777            [30u8, 79u8, 189u8, 247u8],
25778            [31u8, 42u8, 32u8, 5u8],
25779            [35u8, 159u8, 245u8, 127u8],
25780            [37u8, 173u8, 72u8, 202u8],
25781            [42u8, 27u8, 45u8, 216u8],
25782            [47u8, 171u8, 146u8, 202u8],
25783            [50u8, 116u8, 250u8, 100u8],
25784            [62u8, 75u8, 161u8, 63u8],
25785            [66u8, 71u8, 6u8, 135u8],
25786            [76u8, 156u8, 140u8, 227u8],
25787            [80u8, 129u8, 78u8, 16u8],
25788            [80u8, 138u8, 121u8, 63u8],
25789            [90u8, 119u8, 67u8, 87u8],
25790            [102u8, 151u8, 178u8, 50u8],
25791            [103u8, 78u8, 142u8, 243u8],
25792            [116u8, 39u8, 35u8, 50u8],
25793            [121u8, 121u8, 13u8, 124u8],
25794            [123u8, 38u8, 158u8, 146u8],
25795            [125u8, 41u8, 135u8, 49u8],
25796            [139u8, 120u8, 99u8, 29u8],
25797            [141u8, 252u8, 32u8, 43u8],
25798            [144u8, 184u8, 103u8, 138u8],
25799            [146u8, 102u8, 83u8, 81u8],
25800            [153u8, 115u8, 247u8, 216u8],
25801            [153u8, 150u8, 179u8, 21u8],
25802            [158u8, 120u8, 209u8, 76u8],
25803            [170u8, 29u8, 73u8, 164u8],
25804            [174u8, 73u8, 59u8, 3u8],
25805            [176u8, 181u8, 251u8, 153u8],
25806            [178u8, 54u8, 64u8, 236u8],
25807            [179u8, 152u8, 151u8, 159u8],
25808            [181u8, 36u8, 253u8, 106u8],
25809            [181u8, 126u8, 33u8, 223u8],
25810            [188u8, 134u8, 197u8, 154u8],
25811            [194u8, 6u8, 51u8, 79u8],
25812            [194u8, 11u8, 172u8, 148u8],
25813            [194u8, 215u8, 248u8, 19u8],
25814            [208u8, 208u8, 79u8, 96u8],
25815            [212u8, 35u8, 164u8, 241u8],
25816            [215u8, 230u8, 188u8, 248u8],
25817            [217u8, 46u8, 35u8, 61u8],
25818            [217u8, 60u8, 6u8, 101u8],
25819            [220u8, 129u8, 219u8, 133u8],
25820            [224u8, 124u8, 141u8, 186u8],
25821            [226u8, 81u8, 125u8, 63u8],
25822            [234u8, 180u8, 169u8, 99u8],
25823            [242u8, 83u8, 20u8, 166u8],
25824            [249u8, 46u8, 232u8, 169u8],
25825        ];
25826        /// The names of the variants in the same order as `SELECTORS`.
25827        pub const VARIANT_NAMES: &'static [&'static str] = &[
25828            ::core::stringify!(BlsKeyAlreadyUsed),
25829            ::core::stringify!(InvalidSchnorrVK),
25830            ::core::stringify!(BLSSigVerificationFailed),
25831            ::core::stringify!(OwnableUnauthorizedAccount),
25832            ::core::stringify!(FailedInnerCall),
25833            ::core::stringify!(CommissionUpdateTooSoon),
25834            ::core::stringify!(OwnableInvalidOwner),
25835            ::core::stringify!(ZeroAmount),
25836            ::core::stringify!(InvalidMetadataUriLength),
25837            ::core::stringify!(CommissionIncreaseExceedsMax),
25838            ::core::stringify!(InsufficientAllowance),
25839            ::core::stringify!(OwnershipCannotBeRenounced),
25840            ::core::stringify!(PowPrecompileFailed),
25841            ::core::stringify!(InvalidX25519Key),
25842            ::core::stringify!(InvalidSchnorrSig),
25843            ::core::stringify!(ERC1967InvalidImplementation),
25844            ::core::stringify!(CommissionAlreadyInitialized),
25845            ::core::stringify!(ValidatorInactive),
25846            ::core::stringify!(PrematureWithdrawal),
25847            ::core::stringify!(AccessControlBadConfirmation),
25848            ::core::stringify!(InvalidRateLimitParameters),
25849            ::core::stringify!(BLSSigIsInfinity),
25850            ::core::stringify!(InvalidP2pAddr),
25851            ::core::stringify!(InitialActiveStakeExceedsBalance),
25852            ::core::stringify!(DelegateAmountTooSmall),
25853            ::core::stringify!(DefaultAdminCannotBeRenounced),
25854            ::core::stringify!(ExpectedPause),
25855            ::core::stringify!(MinDelegateAmountTooSmall),
25856            ::core::stringify!(InsufficientBalance),
25857            ::core::stringify!(ValidatorAlreadyRegistered),
25858            ::core::stringify!(AddressEmptyCode),
25859            ::core::stringify!(InvalidG1),
25860            ::core::stringify!(UUPSUnsupportedProxiableUUID),
25861            ::core::stringify!(SchnorrKeyAlreadyUsed),
25862            ::core::stringify!(DefaultAdminCannotBeRevoked),
25863            ::core::stringify!(X25519KeyAlreadyUsed),
25864            ::core::stringify!(ERC1967NonPayable),
25865            ::core::stringify!(NoUndelegationFound),
25866            ::core::stringify!(ExitEscrowPeriodInvalid),
25867            ::core::stringify!(BLSVKIsInfinity),
25868            ::core::stringify!(BN254PairingProdFailed),
25869            ::core::stringify!(CommissionUnchanged),
25870            ::core::stringify!(DeprecatedFunction),
25871            ::core::stringify!(NothingToWithdraw),
25872            ::core::stringify!(UndelegationAlreadyExists),
25873            ::core::stringify!(NotInitializing),
25874            ::core::stringify!(ZeroAddress),
25875            ::core::stringify!(EnforcedPause),
25876            ::core::stringify!(InvalidCommission),
25877            ::core::stringify!(UUPSUnauthorizedCallContext),
25878            ::core::stringify!(AccessControlUnauthorizedAccount),
25879            ::core::stringify!(ValidatorAlreadyExited),
25880            ::core::stringify!(ValidatorNotExited),
25881            ::core::stringify!(InvalidInitialization),
25882        ];
25883        /// The signatures in the same order as `SELECTORS`.
25884        pub const SIGNATURES: &'static [&'static str] = &[
25885            <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25886            <InvalidSchnorrVK as alloy_sol_types::SolError>::SIGNATURE,
25887            <BLSSigVerificationFailed as alloy_sol_types::SolError>::SIGNATURE,
25888            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
25889            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
25890            <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SIGNATURE,
25891            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
25892            <ZeroAmount as alloy_sol_types::SolError>::SIGNATURE,
25893            <InvalidMetadataUriLength as alloy_sol_types::SolError>::SIGNATURE,
25894            <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SIGNATURE,
25895            <InsufficientAllowance as alloy_sol_types::SolError>::SIGNATURE,
25896            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
25897            <PowPrecompileFailed as alloy_sol_types::SolError>::SIGNATURE,
25898            <InvalidX25519Key as alloy_sol_types::SolError>::SIGNATURE,
25899            <InvalidSchnorrSig as alloy_sol_types::SolError>::SIGNATURE,
25900            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
25901            <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SIGNATURE,
25902            <ValidatorInactive as alloy_sol_types::SolError>::SIGNATURE,
25903            <PrematureWithdrawal as alloy_sol_types::SolError>::SIGNATURE,
25904            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
25905            <InvalidRateLimitParameters as alloy_sol_types::SolError>::SIGNATURE,
25906            <BLSSigIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
25907            <InvalidP2pAddr as alloy_sol_types::SolError>::SIGNATURE,
25908            <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SIGNATURE,
25909            <DelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
25910            <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
25911            <ExpectedPause as alloy_sol_types::SolError>::SIGNATURE,
25912            <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
25913            <InsufficientBalance as alloy_sol_types::SolError>::SIGNATURE,
25914            <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SIGNATURE,
25915            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
25916            <InvalidG1 as alloy_sol_types::SolError>::SIGNATURE,
25917            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
25918            <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25919            <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SIGNATURE,
25920            <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25921            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
25922            <NoUndelegationFound as alloy_sol_types::SolError>::SIGNATURE,
25923            <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SIGNATURE,
25924            <BLSVKIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
25925            <BN254PairingProdFailed as alloy_sol_types::SolError>::SIGNATURE,
25926            <CommissionUnchanged as alloy_sol_types::SolError>::SIGNATURE,
25927            <DeprecatedFunction as alloy_sol_types::SolError>::SIGNATURE,
25928            <NothingToWithdraw as alloy_sol_types::SolError>::SIGNATURE,
25929            <UndelegationAlreadyExists as alloy_sol_types::SolError>::SIGNATURE,
25930            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
25931            <ZeroAddress as alloy_sol_types::SolError>::SIGNATURE,
25932            <EnforcedPause as alloy_sol_types::SolError>::SIGNATURE,
25933            <InvalidCommission as alloy_sol_types::SolError>::SIGNATURE,
25934            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
25935            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
25936            <ValidatorAlreadyExited as alloy_sol_types::SolError>::SIGNATURE,
25937            <ValidatorNotExited as alloy_sol_types::SolError>::SIGNATURE,
25938            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
25939        ];
25940        /// Returns the signature for the given selector, if known.
25941        #[inline]
25942        pub fn signature_by_selector(
25943            selector: [u8; 4usize],
25944        ) -> ::core::option::Option<&'static str> {
25945            match Self::SELECTORS.binary_search(&selector) {
25946                ::core::result::Result::Ok(idx) => {
25947                    ::core::option::Option::Some(Self::SIGNATURES[idx])
25948                }
25949                ::core::result::Result::Err(_) => ::core::option::Option::None,
25950            }
25951        }
25952        /// Returns the enum variant name for the given selector, if known.
25953        #[inline]
25954        pub fn name_by_selector(
25955            selector: [u8; 4usize],
25956        ) -> ::core::option::Option<&'static str> {
25957            let sig = Self::signature_by_selector(selector)?;
25958            sig.split_once('(').map(|(name, _)| name)
25959        }
25960    }
25961    #[automatically_derived]
25962    impl alloy_sol_types::SolInterface for StakeTableV3Errors {
25963        const NAME: &'static str = "StakeTableV3Errors";
25964        const MIN_DATA_LENGTH: usize = 0usize;
25965        const COUNT: usize = 54usize;
25966        #[inline]
25967        fn selector(&self) -> [u8; 4] {
25968            match self {
25969                Self::AccessControlBadConfirmation(_) => {
25970                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
25971                }
25972                Self::AccessControlUnauthorizedAccount(_) => {
25973                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
25974                }
25975                Self::AddressEmptyCode(_) => {
25976                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
25977                }
25978                Self::BLSSigIsInfinity(_) => {
25979                    <BLSSigIsInfinity as alloy_sol_types::SolError>::SELECTOR
25980                }
25981                Self::BLSSigVerificationFailed(_) => {
25982                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
25983                }
25984                Self::BLSVKIsInfinity(_) => {
25985                    <BLSVKIsInfinity as alloy_sol_types::SolError>::SELECTOR
25986                }
25987                Self::BN254PairingProdFailed(_) => {
25988                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
25989                }
25990                Self::BlsKeyAlreadyUsed(_) => {
25991                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
25992                }
25993                Self::CommissionAlreadyInitialized(_) => {
25994                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SELECTOR
25995                }
25996                Self::CommissionIncreaseExceedsMax(_) => {
25997                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SELECTOR
25998                }
25999                Self::CommissionUnchanged(_) => {
26000                    <CommissionUnchanged as alloy_sol_types::SolError>::SELECTOR
26001                }
26002                Self::CommissionUpdateTooSoon(_) => {
26003                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SELECTOR
26004                }
26005                Self::DefaultAdminCannotBeRenounced(_) => {
26006                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
26007                }
26008                Self::DefaultAdminCannotBeRevoked(_) => {
26009                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SELECTOR
26010                }
26011                Self::DelegateAmountTooSmall(_) => {
26012                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
26013                }
26014                Self::DeprecatedFunction(_) => {
26015                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
26016                }
26017                Self::ERC1967InvalidImplementation(_) => {
26018                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
26019                }
26020                Self::ERC1967NonPayable(_) => {
26021                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
26022                }
26023                Self::EnforcedPause(_) => {
26024                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
26025                }
26026                Self::ExitEscrowPeriodInvalid(_) => {
26027                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
26028                }
26029                Self::ExpectedPause(_) => {
26030                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
26031                }
26032                Self::FailedInnerCall(_) => {
26033                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
26034                }
26035                Self::InitialActiveStakeExceedsBalance(_) => {
26036                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SELECTOR
26037                }
26038                Self::InsufficientAllowance(_) => {
26039                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
26040                }
26041                Self::InsufficientBalance(_) => {
26042                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
26043                }
26044                Self::InvalidCommission(_) => {
26045                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
26046                }
26047                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
26048                Self::InvalidInitialization(_) => {
26049                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
26050                }
26051                Self::InvalidMetadataUriLength(_) => {
26052                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::SELECTOR
26053                }
26054                Self::InvalidP2pAddr(_) => {
26055                    <InvalidP2pAddr as alloy_sol_types::SolError>::SELECTOR
26056                }
26057                Self::InvalidRateLimitParameters(_) => {
26058                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::SELECTOR
26059                }
26060                Self::InvalidSchnorrSig(_) => {
26061                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
26062                }
26063                Self::InvalidSchnorrVK(_) => {
26064                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
26065                }
26066                Self::InvalidX25519Key(_) => {
26067                    <InvalidX25519Key as alloy_sol_types::SolError>::SELECTOR
26068                }
26069                Self::MinDelegateAmountTooSmall(_) => {
26070                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
26071                }
26072                Self::NoUndelegationFound(_) => {
26073                    <NoUndelegationFound as alloy_sol_types::SolError>::SELECTOR
26074                }
26075                Self::NotInitializing(_) => {
26076                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
26077                }
26078                Self::NothingToWithdraw(_) => {
26079                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
26080                }
26081                Self::OwnableInvalidOwner(_) => {
26082                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
26083                }
26084                Self::OwnableUnauthorizedAccount(_) => {
26085                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
26086                }
26087                Self::OwnershipCannotBeRenounced(_) => {
26088                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
26089                }
26090                Self::PowPrecompileFailed(_) => {
26091                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
26092                }
26093                Self::PrematureWithdrawal(_) => {
26094                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
26095                }
26096                Self::SchnorrKeyAlreadyUsed(_) => {
26097                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
26098                }
26099                Self::UUPSUnauthorizedCallContext(_) => {
26100                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
26101                }
26102                Self::UUPSUnsupportedProxiableUUID(_) => {
26103                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
26104                }
26105                Self::UndelegationAlreadyExists(_) => {
26106                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
26107                }
26108                Self::ValidatorAlreadyExited(_) => {
26109                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
26110                }
26111                Self::ValidatorAlreadyRegistered(_) => {
26112                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
26113                }
26114                Self::ValidatorInactive(_) => {
26115                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
26116                }
26117                Self::ValidatorNotExited(_) => {
26118                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
26119                }
26120                Self::X25519KeyAlreadyUsed(_) => {
26121                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
26122                }
26123                Self::ZeroAddress(_) => {
26124                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
26125                }
26126                Self::ZeroAmount(_) => {
26127                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
26128                }
26129            }
26130        }
26131        #[inline]
26132        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
26133            Self::SELECTORS.get(i).copied()
26134        }
26135        #[inline]
26136        fn valid_selector(selector: [u8; 4]) -> bool {
26137            Self::SELECTORS.binary_search(&selector).is_ok()
26138        }
26139        #[inline]
26140        #[allow(non_snake_case)]
26141        fn abi_decode_raw(
26142            selector: [u8; 4],
26143            data: &[u8],
26144        ) -> alloy_sol_types::Result<Self> {
26145            Self::abi_decode_raw_with_config(
26146                selector,
26147                data,
26148                alloy_sol_types::abi::AbiDecoderConfig::default(),
26149            )
26150        }
26151        #[inline]
26152        #[allow(non_snake_case)]
26153        fn abi_decode_raw_with_config(
26154            selector: [u8; 4],
26155            data: &[u8],
26156            config: alloy_sol_types::abi::AbiDecoderConfig,
26157        ) -> alloy_sol_types::Result<Self> {
26158            static DECODE_SHIMS: &[fn(
26159                &[u8],
26160                alloy_sol_types::abi::AbiDecoderConfig,
26161            ) -> alloy_sol_types::Result<StakeTableV3Errors>] = &[
26162                {
26163                    fn BlsKeyAlreadyUsed(
26164                        data: &[u8],
26165                        config: alloy_sol_types::abi::AbiDecoderConfig,
26166                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26167                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26168                                data,
26169                                config,
26170                            )
26171                            .map(StakeTableV3Errors::BlsKeyAlreadyUsed)
26172                    }
26173                    BlsKeyAlreadyUsed
26174                },
26175                {
26176                    fn InvalidSchnorrVK(
26177                        data: &[u8],
26178                        config: alloy_sol_types::abi::AbiDecoderConfig,
26179                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26180                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26181                                data,
26182                                config,
26183                            )
26184                            .map(StakeTableV3Errors::InvalidSchnorrVK)
26185                    }
26186                    InvalidSchnorrVK
26187                },
26188                {
26189                    fn BLSSigVerificationFailed(
26190                        data: &[u8],
26191                        config: alloy_sol_types::abi::AbiDecoderConfig,
26192                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26193                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26194                                data,
26195                                config,
26196                            )
26197                            .map(StakeTableV3Errors::BLSSigVerificationFailed)
26198                    }
26199                    BLSSigVerificationFailed
26200                },
26201                {
26202                    fn OwnableUnauthorizedAccount(
26203                        data: &[u8],
26204                        config: alloy_sol_types::abi::AbiDecoderConfig,
26205                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26206                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26207                                data,
26208                                config,
26209                            )
26210                            .map(StakeTableV3Errors::OwnableUnauthorizedAccount)
26211                    }
26212                    OwnableUnauthorizedAccount
26213                },
26214                {
26215                    fn FailedInnerCall(
26216                        data: &[u8],
26217                        config: alloy_sol_types::abi::AbiDecoderConfig,
26218                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26219                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26220                                data,
26221                                config,
26222                            )
26223                            .map(StakeTableV3Errors::FailedInnerCall)
26224                    }
26225                    FailedInnerCall
26226                },
26227                {
26228                    fn CommissionUpdateTooSoon(
26229                        data: &[u8],
26230                        config: alloy_sol_types::abi::AbiDecoderConfig,
26231                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26232                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26233                                data,
26234                                config,
26235                            )
26236                            .map(StakeTableV3Errors::CommissionUpdateTooSoon)
26237                    }
26238                    CommissionUpdateTooSoon
26239                },
26240                {
26241                    fn OwnableInvalidOwner(
26242                        data: &[u8],
26243                        config: alloy_sol_types::abi::AbiDecoderConfig,
26244                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26245                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26246                                data,
26247                                config,
26248                            )
26249                            .map(StakeTableV3Errors::OwnableInvalidOwner)
26250                    }
26251                    OwnableInvalidOwner
26252                },
26253                {
26254                    fn ZeroAmount(
26255                        data: &[u8],
26256                        config: alloy_sol_types::abi::AbiDecoderConfig,
26257                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26258                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26259                                data,
26260                                config,
26261                            )
26262                            .map(StakeTableV3Errors::ZeroAmount)
26263                    }
26264                    ZeroAmount
26265                },
26266                {
26267                    fn InvalidMetadataUriLength(
26268                        data: &[u8],
26269                        config: alloy_sol_types::abi::AbiDecoderConfig,
26270                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26271                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26272                                data,
26273                                config,
26274                            )
26275                            .map(StakeTableV3Errors::InvalidMetadataUriLength)
26276                    }
26277                    InvalidMetadataUriLength
26278                },
26279                {
26280                    fn CommissionIncreaseExceedsMax(
26281                        data: &[u8],
26282                        config: alloy_sol_types::abi::AbiDecoderConfig,
26283                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26284                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26285                                data,
26286                                config,
26287                            )
26288                            .map(StakeTableV3Errors::CommissionIncreaseExceedsMax)
26289                    }
26290                    CommissionIncreaseExceedsMax
26291                },
26292                {
26293                    fn InsufficientAllowance(
26294                        data: &[u8],
26295                        config: alloy_sol_types::abi::AbiDecoderConfig,
26296                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26297                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26298                                data,
26299                                config,
26300                            )
26301                            .map(StakeTableV3Errors::InsufficientAllowance)
26302                    }
26303                    InsufficientAllowance
26304                },
26305                {
26306                    fn OwnershipCannotBeRenounced(
26307                        data: &[u8],
26308                        config: alloy_sol_types::abi::AbiDecoderConfig,
26309                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26310                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26311                                data,
26312                                config,
26313                            )
26314                            .map(StakeTableV3Errors::OwnershipCannotBeRenounced)
26315                    }
26316                    OwnershipCannotBeRenounced
26317                },
26318                {
26319                    fn PowPrecompileFailed(
26320                        data: &[u8],
26321                        config: alloy_sol_types::abi::AbiDecoderConfig,
26322                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26323                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26324                                data,
26325                                config,
26326                            )
26327                            .map(StakeTableV3Errors::PowPrecompileFailed)
26328                    }
26329                    PowPrecompileFailed
26330                },
26331                {
26332                    fn InvalidX25519Key(
26333                        data: &[u8],
26334                        config: alloy_sol_types::abi::AbiDecoderConfig,
26335                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26336                        <InvalidX25519Key as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26337                                data,
26338                                config,
26339                            )
26340                            .map(StakeTableV3Errors::InvalidX25519Key)
26341                    }
26342                    InvalidX25519Key
26343                },
26344                {
26345                    fn InvalidSchnorrSig(
26346                        data: &[u8],
26347                        config: alloy_sol_types::abi::AbiDecoderConfig,
26348                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26349                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26350                                data,
26351                                config,
26352                            )
26353                            .map(StakeTableV3Errors::InvalidSchnorrSig)
26354                    }
26355                    InvalidSchnorrSig
26356                },
26357                {
26358                    fn ERC1967InvalidImplementation(
26359                        data: &[u8],
26360                        config: alloy_sol_types::abi::AbiDecoderConfig,
26361                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26362                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26363                                data,
26364                                config,
26365                            )
26366                            .map(StakeTableV3Errors::ERC1967InvalidImplementation)
26367                    }
26368                    ERC1967InvalidImplementation
26369                },
26370                {
26371                    fn CommissionAlreadyInitialized(
26372                        data: &[u8],
26373                        config: alloy_sol_types::abi::AbiDecoderConfig,
26374                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26375                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26376                                data,
26377                                config,
26378                            )
26379                            .map(StakeTableV3Errors::CommissionAlreadyInitialized)
26380                    }
26381                    CommissionAlreadyInitialized
26382                },
26383                {
26384                    fn ValidatorInactive(
26385                        data: &[u8],
26386                        config: alloy_sol_types::abi::AbiDecoderConfig,
26387                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26388                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26389                                data,
26390                                config,
26391                            )
26392                            .map(StakeTableV3Errors::ValidatorInactive)
26393                    }
26394                    ValidatorInactive
26395                },
26396                {
26397                    fn PrematureWithdrawal(
26398                        data: &[u8],
26399                        config: alloy_sol_types::abi::AbiDecoderConfig,
26400                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26401                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26402                                data,
26403                                config,
26404                            )
26405                            .map(StakeTableV3Errors::PrematureWithdrawal)
26406                    }
26407                    PrematureWithdrawal
26408                },
26409                {
26410                    fn AccessControlBadConfirmation(
26411                        data: &[u8],
26412                        config: alloy_sol_types::abi::AbiDecoderConfig,
26413                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26414                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26415                                data,
26416                                config,
26417                            )
26418                            .map(StakeTableV3Errors::AccessControlBadConfirmation)
26419                    }
26420                    AccessControlBadConfirmation
26421                },
26422                {
26423                    fn InvalidRateLimitParameters(
26424                        data: &[u8],
26425                        config: alloy_sol_types::abi::AbiDecoderConfig,
26426                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26427                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26428                                data,
26429                                config,
26430                            )
26431                            .map(StakeTableV3Errors::InvalidRateLimitParameters)
26432                    }
26433                    InvalidRateLimitParameters
26434                },
26435                {
26436                    fn BLSSigIsInfinity(
26437                        data: &[u8],
26438                        config: alloy_sol_types::abi::AbiDecoderConfig,
26439                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26440                        <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26441                                data,
26442                                config,
26443                            )
26444                            .map(StakeTableV3Errors::BLSSigIsInfinity)
26445                    }
26446                    BLSSigIsInfinity
26447                },
26448                {
26449                    fn InvalidP2pAddr(
26450                        data: &[u8],
26451                        config: alloy_sol_types::abi::AbiDecoderConfig,
26452                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26453                        <InvalidP2pAddr as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26454                                data,
26455                                config,
26456                            )
26457                            .map(StakeTableV3Errors::InvalidP2pAddr)
26458                    }
26459                    InvalidP2pAddr
26460                },
26461                {
26462                    fn InitialActiveStakeExceedsBalance(
26463                        data: &[u8],
26464                        config: alloy_sol_types::abi::AbiDecoderConfig,
26465                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26466                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26467                                data,
26468                                config,
26469                            )
26470                            .map(StakeTableV3Errors::InitialActiveStakeExceedsBalance)
26471                    }
26472                    InitialActiveStakeExceedsBalance
26473                },
26474                {
26475                    fn DelegateAmountTooSmall(
26476                        data: &[u8],
26477                        config: alloy_sol_types::abi::AbiDecoderConfig,
26478                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26479                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26480                                data,
26481                                config,
26482                            )
26483                            .map(StakeTableV3Errors::DelegateAmountTooSmall)
26484                    }
26485                    DelegateAmountTooSmall
26486                },
26487                {
26488                    fn DefaultAdminCannotBeRenounced(
26489                        data: &[u8],
26490                        config: alloy_sol_types::abi::AbiDecoderConfig,
26491                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26492                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26493                                data,
26494                                config,
26495                            )
26496                            .map(StakeTableV3Errors::DefaultAdminCannotBeRenounced)
26497                    }
26498                    DefaultAdminCannotBeRenounced
26499                },
26500                {
26501                    fn ExpectedPause(
26502                        data: &[u8],
26503                        config: alloy_sol_types::abi::AbiDecoderConfig,
26504                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26505                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26506                                data,
26507                                config,
26508                            )
26509                            .map(StakeTableV3Errors::ExpectedPause)
26510                    }
26511                    ExpectedPause
26512                },
26513                {
26514                    fn MinDelegateAmountTooSmall(
26515                        data: &[u8],
26516                        config: alloy_sol_types::abi::AbiDecoderConfig,
26517                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26518                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26519                                data,
26520                                config,
26521                            )
26522                            .map(StakeTableV3Errors::MinDelegateAmountTooSmall)
26523                    }
26524                    MinDelegateAmountTooSmall
26525                },
26526                {
26527                    fn InsufficientBalance(
26528                        data: &[u8],
26529                        config: alloy_sol_types::abi::AbiDecoderConfig,
26530                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26531                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26532                                data,
26533                                config,
26534                            )
26535                            .map(StakeTableV3Errors::InsufficientBalance)
26536                    }
26537                    InsufficientBalance
26538                },
26539                {
26540                    fn ValidatorAlreadyRegistered(
26541                        data: &[u8],
26542                        config: alloy_sol_types::abi::AbiDecoderConfig,
26543                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26544                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26545                                data,
26546                                config,
26547                            )
26548                            .map(StakeTableV3Errors::ValidatorAlreadyRegistered)
26549                    }
26550                    ValidatorAlreadyRegistered
26551                },
26552                {
26553                    fn AddressEmptyCode(
26554                        data: &[u8],
26555                        config: alloy_sol_types::abi::AbiDecoderConfig,
26556                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26557                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26558                                data,
26559                                config,
26560                            )
26561                            .map(StakeTableV3Errors::AddressEmptyCode)
26562                    }
26563                    AddressEmptyCode
26564                },
26565                {
26566                    fn InvalidG1(
26567                        data: &[u8],
26568                        config: alloy_sol_types::abi::AbiDecoderConfig,
26569                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26570                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26571                                data,
26572                                config,
26573                            )
26574                            .map(StakeTableV3Errors::InvalidG1)
26575                    }
26576                    InvalidG1
26577                },
26578                {
26579                    fn UUPSUnsupportedProxiableUUID(
26580                        data: &[u8],
26581                        config: alloy_sol_types::abi::AbiDecoderConfig,
26582                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26583                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26584                                data,
26585                                config,
26586                            )
26587                            .map(StakeTableV3Errors::UUPSUnsupportedProxiableUUID)
26588                    }
26589                    UUPSUnsupportedProxiableUUID
26590                },
26591                {
26592                    fn SchnorrKeyAlreadyUsed(
26593                        data: &[u8],
26594                        config: alloy_sol_types::abi::AbiDecoderConfig,
26595                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26596                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26597                                data,
26598                                config,
26599                            )
26600                            .map(StakeTableV3Errors::SchnorrKeyAlreadyUsed)
26601                    }
26602                    SchnorrKeyAlreadyUsed
26603                },
26604                {
26605                    fn DefaultAdminCannotBeRevoked(
26606                        data: &[u8],
26607                        config: alloy_sol_types::abi::AbiDecoderConfig,
26608                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26609                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26610                                data,
26611                                config,
26612                            )
26613                            .map(StakeTableV3Errors::DefaultAdminCannotBeRevoked)
26614                    }
26615                    DefaultAdminCannotBeRevoked
26616                },
26617                {
26618                    fn X25519KeyAlreadyUsed(
26619                        data: &[u8],
26620                        config: alloy_sol_types::abi::AbiDecoderConfig,
26621                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26622                        <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26623                                data,
26624                                config,
26625                            )
26626                            .map(StakeTableV3Errors::X25519KeyAlreadyUsed)
26627                    }
26628                    X25519KeyAlreadyUsed
26629                },
26630                {
26631                    fn ERC1967NonPayable(
26632                        data: &[u8],
26633                        config: alloy_sol_types::abi::AbiDecoderConfig,
26634                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26635                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26636                                data,
26637                                config,
26638                            )
26639                            .map(StakeTableV3Errors::ERC1967NonPayable)
26640                    }
26641                    ERC1967NonPayable
26642                },
26643                {
26644                    fn NoUndelegationFound(
26645                        data: &[u8],
26646                        config: alloy_sol_types::abi::AbiDecoderConfig,
26647                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26648                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26649                                data,
26650                                config,
26651                            )
26652                            .map(StakeTableV3Errors::NoUndelegationFound)
26653                    }
26654                    NoUndelegationFound
26655                },
26656                {
26657                    fn ExitEscrowPeriodInvalid(
26658                        data: &[u8],
26659                        config: alloy_sol_types::abi::AbiDecoderConfig,
26660                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26661                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26662                                data,
26663                                config,
26664                            )
26665                            .map(StakeTableV3Errors::ExitEscrowPeriodInvalid)
26666                    }
26667                    ExitEscrowPeriodInvalid
26668                },
26669                {
26670                    fn BLSVKIsInfinity(
26671                        data: &[u8],
26672                        config: alloy_sol_types::abi::AbiDecoderConfig,
26673                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26674                        <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26675                                data,
26676                                config,
26677                            )
26678                            .map(StakeTableV3Errors::BLSVKIsInfinity)
26679                    }
26680                    BLSVKIsInfinity
26681                },
26682                {
26683                    fn BN254PairingProdFailed(
26684                        data: &[u8],
26685                        config: alloy_sol_types::abi::AbiDecoderConfig,
26686                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26687                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26688                                data,
26689                                config,
26690                            )
26691                            .map(StakeTableV3Errors::BN254PairingProdFailed)
26692                    }
26693                    BN254PairingProdFailed
26694                },
26695                {
26696                    fn CommissionUnchanged(
26697                        data: &[u8],
26698                        config: alloy_sol_types::abi::AbiDecoderConfig,
26699                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26700                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26701                                data,
26702                                config,
26703                            )
26704                            .map(StakeTableV3Errors::CommissionUnchanged)
26705                    }
26706                    CommissionUnchanged
26707                },
26708                {
26709                    fn DeprecatedFunction(
26710                        data: &[u8],
26711                        config: alloy_sol_types::abi::AbiDecoderConfig,
26712                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26713                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26714                                data,
26715                                config,
26716                            )
26717                            .map(StakeTableV3Errors::DeprecatedFunction)
26718                    }
26719                    DeprecatedFunction
26720                },
26721                {
26722                    fn NothingToWithdraw(
26723                        data: &[u8],
26724                        config: alloy_sol_types::abi::AbiDecoderConfig,
26725                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26726                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26727                                data,
26728                                config,
26729                            )
26730                            .map(StakeTableV3Errors::NothingToWithdraw)
26731                    }
26732                    NothingToWithdraw
26733                },
26734                {
26735                    fn UndelegationAlreadyExists(
26736                        data: &[u8],
26737                        config: alloy_sol_types::abi::AbiDecoderConfig,
26738                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26739                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26740                                data,
26741                                config,
26742                            )
26743                            .map(StakeTableV3Errors::UndelegationAlreadyExists)
26744                    }
26745                    UndelegationAlreadyExists
26746                },
26747                {
26748                    fn NotInitializing(
26749                        data: &[u8],
26750                        config: alloy_sol_types::abi::AbiDecoderConfig,
26751                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26752                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26753                                data,
26754                                config,
26755                            )
26756                            .map(StakeTableV3Errors::NotInitializing)
26757                    }
26758                    NotInitializing
26759                },
26760                {
26761                    fn ZeroAddress(
26762                        data: &[u8],
26763                        config: alloy_sol_types::abi::AbiDecoderConfig,
26764                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26765                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26766                                data,
26767                                config,
26768                            )
26769                            .map(StakeTableV3Errors::ZeroAddress)
26770                    }
26771                    ZeroAddress
26772                },
26773                {
26774                    fn EnforcedPause(
26775                        data: &[u8],
26776                        config: alloy_sol_types::abi::AbiDecoderConfig,
26777                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26778                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26779                                data,
26780                                config,
26781                            )
26782                            .map(StakeTableV3Errors::EnforcedPause)
26783                    }
26784                    EnforcedPause
26785                },
26786                {
26787                    fn InvalidCommission(
26788                        data: &[u8],
26789                        config: alloy_sol_types::abi::AbiDecoderConfig,
26790                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26791                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26792                                data,
26793                                config,
26794                            )
26795                            .map(StakeTableV3Errors::InvalidCommission)
26796                    }
26797                    InvalidCommission
26798                },
26799                {
26800                    fn UUPSUnauthorizedCallContext(
26801                        data: &[u8],
26802                        config: alloy_sol_types::abi::AbiDecoderConfig,
26803                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26804                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26805                                data,
26806                                config,
26807                            )
26808                            .map(StakeTableV3Errors::UUPSUnauthorizedCallContext)
26809                    }
26810                    UUPSUnauthorizedCallContext
26811                },
26812                {
26813                    fn AccessControlUnauthorizedAccount(
26814                        data: &[u8],
26815                        config: alloy_sol_types::abi::AbiDecoderConfig,
26816                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26817                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26818                                data,
26819                                config,
26820                            )
26821                            .map(StakeTableV3Errors::AccessControlUnauthorizedAccount)
26822                    }
26823                    AccessControlUnauthorizedAccount
26824                },
26825                {
26826                    fn ValidatorAlreadyExited(
26827                        data: &[u8],
26828                        config: alloy_sol_types::abi::AbiDecoderConfig,
26829                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26830                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26831                                data,
26832                                config,
26833                            )
26834                            .map(StakeTableV3Errors::ValidatorAlreadyExited)
26835                    }
26836                    ValidatorAlreadyExited
26837                },
26838                {
26839                    fn ValidatorNotExited(
26840                        data: &[u8],
26841                        config: alloy_sol_types::abi::AbiDecoderConfig,
26842                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26843                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26844                                data,
26845                                config,
26846                            )
26847                            .map(StakeTableV3Errors::ValidatorNotExited)
26848                    }
26849                    ValidatorNotExited
26850                },
26851                {
26852                    fn InvalidInitialization(
26853                        data: &[u8],
26854                        config: alloy_sol_types::abi::AbiDecoderConfig,
26855                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26856                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
26857                                data,
26858                                config,
26859                            )
26860                            .map(StakeTableV3Errors::InvalidInitialization)
26861                    }
26862                    InvalidInitialization
26863                },
26864            ];
26865            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
26866                return Err(
26867                    alloy_sol_types::Error::unknown_selector(
26868                        <Self as alloy_sol_types::SolInterface>::NAME,
26869                        selector,
26870                    ),
26871                );
26872            };
26873            DECODE_SHIMS[idx](data, config)
26874        }
26875        #[inline]
26876        #[allow(non_snake_case)]
26877        fn abi_decode_raw_validate(
26878            selector: [u8; 4],
26879            data: &[u8],
26880        ) -> alloy_sol_types::Result<Self> {
26881            Self::abi_decode_raw_with_config(
26882                selector,
26883                data,
26884                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
26885            )
26886        }
26887        #[inline]
26888        fn abi_encoded_size(&self) -> usize {
26889            match self {
26890                Self::AccessControlBadConfirmation(inner) => {
26891                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
26892                        inner,
26893                    )
26894                }
26895                Self::AccessControlUnauthorizedAccount(inner) => {
26896                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
26897                        inner,
26898                    )
26899                }
26900                Self::AddressEmptyCode(inner) => {
26901                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
26902                        inner,
26903                    )
26904                }
26905                Self::BLSSigIsInfinity(inner) => {
26906                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
26907                        inner,
26908                    )
26909                }
26910                Self::BLSSigVerificationFailed(inner) => {
26911                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
26912                        inner,
26913                    )
26914                }
26915                Self::BLSVKIsInfinity(inner) => {
26916                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
26917                        inner,
26918                    )
26919                }
26920                Self::BN254PairingProdFailed(inner) => {
26921                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
26922                        inner,
26923                    )
26924                }
26925                Self::BlsKeyAlreadyUsed(inner) => {
26926                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
26927                        inner,
26928                    )
26929                }
26930                Self::CommissionAlreadyInitialized(inner) => {
26931                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encoded_size(
26932                        inner,
26933                    )
26934                }
26935                Self::CommissionIncreaseExceedsMax(inner) => {
26936                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encoded_size(
26937                        inner,
26938                    )
26939                }
26940                Self::CommissionUnchanged(inner) => {
26941                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encoded_size(
26942                        inner,
26943                    )
26944                }
26945                Self::CommissionUpdateTooSoon(inner) => {
26946                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encoded_size(
26947                        inner,
26948                    )
26949                }
26950                Self::DefaultAdminCannotBeRenounced(inner) => {
26951                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
26952                        inner,
26953                    )
26954                }
26955                Self::DefaultAdminCannotBeRevoked(inner) => {
26956                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encoded_size(
26957                        inner,
26958                    )
26959                }
26960                Self::DelegateAmountTooSmall(inner) => {
26961                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
26962                        inner,
26963                    )
26964                }
26965                Self::DeprecatedFunction(inner) => {
26966                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
26967                        inner,
26968                    )
26969                }
26970                Self::ERC1967InvalidImplementation(inner) => {
26971                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
26972                        inner,
26973                    )
26974                }
26975                Self::ERC1967NonPayable(inner) => {
26976                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
26977                        inner,
26978                    )
26979                }
26980                Self::EnforcedPause(inner) => {
26981                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
26982                }
26983                Self::ExitEscrowPeriodInvalid(inner) => {
26984                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
26985                        inner,
26986                    )
26987                }
26988                Self::ExpectedPause(inner) => {
26989                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
26990                }
26991                Self::FailedInnerCall(inner) => {
26992                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
26993                        inner,
26994                    )
26995                }
26996                Self::InitialActiveStakeExceedsBalance(inner) => {
26997                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encoded_size(
26998                        inner,
26999                    )
27000                }
27001                Self::InsufficientAllowance(inner) => {
27002                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
27003                        inner,
27004                    )
27005                }
27006                Self::InsufficientBalance(inner) => {
27007                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
27008                        inner,
27009                    )
27010                }
27011                Self::InvalidCommission(inner) => {
27012                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
27013                        inner,
27014                    )
27015                }
27016                Self::InvalidG1(inner) => {
27017                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
27018                }
27019                Self::InvalidInitialization(inner) => {
27020                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
27021                        inner,
27022                    )
27023                }
27024                Self::InvalidMetadataUriLength(inner) => {
27025                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encoded_size(
27026                        inner,
27027                    )
27028                }
27029                Self::InvalidP2pAddr(inner) => {
27030                    <InvalidP2pAddr as alloy_sol_types::SolError>::abi_encoded_size(
27031                        inner,
27032                    )
27033                }
27034                Self::InvalidRateLimitParameters(inner) => {
27035                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encoded_size(
27036                        inner,
27037                    )
27038                }
27039                Self::InvalidSchnorrSig(inner) => {
27040                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
27041                        inner,
27042                    )
27043                }
27044                Self::InvalidSchnorrVK(inner) => {
27045                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
27046                        inner,
27047                    )
27048                }
27049                Self::InvalidX25519Key(inner) => {
27050                    <InvalidX25519Key as alloy_sol_types::SolError>::abi_encoded_size(
27051                        inner,
27052                    )
27053                }
27054                Self::MinDelegateAmountTooSmall(inner) => {
27055                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
27056                        inner,
27057                    )
27058                }
27059                Self::NoUndelegationFound(inner) => {
27060                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encoded_size(
27061                        inner,
27062                    )
27063                }
27064                Self::NotInitializing(inner) => {
27065                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
27066                        inner,
27067                    )
27068                }
27069                Self::NothingToWithdraw(inner) => {
27070                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
27071                        inner,
27072                    )
27073                }
27074                Self::OwnableInvalidOwner(inner) => {
27075                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
27076                        inner,
27077                    )
27078                }
27079                Self::OwnableUnauthorizedAccount(inner) => {
27080                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
27081                        inner,
27082                    )
27083                }
27084                Self::OwnershipCannotBeRenounced(inner) => {
27085                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
27086                        inner,
27087                    )
27088                }
27089                Self::PowPrecompileFailed(inner) => {
27090                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
27091                        inner,
27092                    )
27093                }
27094                Self::PrematureWithdrawal(inner) => {
27095                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
27096                        inner,
27097                    )
27098                }
27099                Self::SchnorrKeyAlreadyUsed(inner) => {
27100                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
27101                        inner,
27102                    )
27103                }
27104                Self::UUPSUnauthorizedCallContext(inner) => {
27105                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
27106                        inner,
27107                    )
27108                }
27109                Self::UUPSUnsupportedProxiableUUID(inner) => {
27110                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
27111                        inner,
27112                    )
27113                }
27114                Self::UndelegationAlreadyExists(inner) => {
27115                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
27116                        inner,
27117                    )
27118                }
27119                Self::ValidatorAlreadyExited(inner) => {
27120                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
27121                        inner,
27122                    )
27123                }
27124                Self::ValidatorAlreadyRegistered(inner) => {
27125                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
27126                        inner,
27127                    )
27128                }
27129                Self::ValidatorInactive(inner) => {
27130                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
27131                        inner,
27132                    )
27133                }
27134                Self::ValidatorNotExited(inner) => {
27135                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
27136                        inner,
27137                    )
27138                }
27139                Self::X25519KeyAlreadyUsed(inner) => {
27140                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
27141                        inner,
27142                    )
27143                }
27144                Self::ZeroAddress(inner) => {
27145                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
27146                }
27147                Self::ZeroAmount(inner) => {
27148                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
27149                }
27150            }
27151        }
27152        #[inline]
27153        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
27154            match self {
27155                Self::AccessControlBadConfirmation(inner) => {
27156                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
27157                        inner,
27158                        out,
27159                    )
27160                }
27161                Self::AccessControlUnauthorizedAccount(inner) => {
27162                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
27163                        inner,
27164                        out,
27165                    )
27166                }
27167                Self::AddressEmptyCode(inner) => {
27168                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
27169                        inner,
27170                        out,
27171                    )
27172                }
27173                Self::BLSSigIsInfinity(inner) => {
27174                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
27175                        inner,
27176                        out,
27177                    )
27178                }
27179                Self::BLSSigVerificationFailed(inner) => {
27180                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
27181                        inner,
27182                        out,
27183                    )
27184                }
27185                Self::BLSVKIsInfinity(inner) => {
27186                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
27187                        inner,
27188                        out,
27189                    )
27190                }
27191                Self::BN254PairingProdFailed(inner) => {
27192                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
27193                        inner,
27194                        out,
27195                    )
27196                }
27197                Self::BlsKeyAlreadyUsed(inner) => {
27198                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
27199                        inner,
27200                        out,
27201                    )
27202                }
27203                Self::CommissionAlreadyInitialized(inner) => {
27204                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encode_raw(
27205                        inner,
27206                        out,
27207                    )
27208                }
27209                Self::CommissionIncreaseExceedsMax(inner) => {
27210                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encode_raw(
27211                        inner,
27212                        out,
27213                    )
27214                }
27215                Self::CommissionUnchanged(inner) => {
27216                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encode_raw(
27217                        inner,
27218                        out,
27219                    )
27220                }
27221                Self::CommissionUpdateTooSoon(inner) => {
27222                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encode_raw(
27223                        inner,
27224                        out,
27225                    )
27226                }
27227                Self::DefaultAdminCannotBeRenounced(inner) => {
27228                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
27229                        inner,
27230                        out,
27231                    )
27232                }
27233                Self::DefaultAdminCannotBeRevoked(inner) => {
27234                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encode_raw(
27235                        inner,
27236                        out,
27237                    )
27238                }
27239                Self::DelegateAmountTooSmall(inner) => {
27240                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
27241                        inner,
27242                        out,
27243                    )
27244                }
27245                Self::DeprecatedFunction(inner) => {
27246                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
27247                        inner,
27248                        out,
27249                    )
27250                }
27251                Self::ERC1967InvalidImplementation(inner) => {
27252                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
27253                        inner,
27254                        out,
27255                    )
27256                }
27257                Self::ERC1967NonPayable(inner) => {
27258                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
27259                        inner,
27260                        out,
27261                    )
27262                }
27263                Self::EnforcedPause(inner) => {
27264                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
27265                        inner,
27266                        out,
27267                    )
27268                }
27269                Self::ExitEscrowPeriodInvalid(inner) => {
27270                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
27271                        inner,
27272                        out,
27273                    )
27274                }
27275                Self::ExpectedPause(inner) => {
27276                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
27277                        inner,
27278                        out,
27279                    )
27280                }
27281                Self::FailedInnerCall(inner) => {
27282                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
27283                        inner,
27284                        out,
27285                    )
27286                }
27287                Self::InitialActiveStakeExceedsBalance(inner) => {
27288                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encode_raw(
27289                        inner,
27290                        out,
27291                    )
27292                }
27293                Self::InsufficientAllowance(inner) => {
27294                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
27295                        inner,
27296                        out,
27297                    )
27298                }
27299                Self::InsufficientBalance(inner) => {
27300                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
27301                        inner,
27302                        out,
27303                    )
27304                }
27305                Self::InvalidCommission(inner) => {
27306                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
27307                        inner,
27308                        out,
27309                    )
27310                }
27311                Self::InvalidG1(inner) => {
27312                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
27313                }
27314                Self::InvalidInitialization(inner) => {
27315                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
27316                        inner,
27317                        out,
27318                    )
27319                }
27320                Self::InvalidMetadataUriLength(inner) => {
27321                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encode_raw(
27322                        inner,
27323                        out,
27324                    )
27325                }
27326                Self::InvalidP2pAddr(inner) => {
27327                    <InvalidP2pAddr as alloy_sol_types::SolError>::abi_encode_raw(
27328                        inner,
27329                        out,
27330                    )
27331                }
27332                Self::InvalidRateLimitParameters(inner) => {
27333                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encode_raw(
27334                        inner,
27335                        out,
27336                    )
27337                }
27338                Self::InvalidSchnorrSig(inner) => {
27339                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
27340                        inner,
27341                        out,
27342                    )
27343                }
27344                Self::InvalidSchnorrVK(inner) => {
27345                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
27346                        inner,
27347                        out,
27348                    )
27349                }
27350                Self::InvalidX25519Key(inner) => {
27351                    <InvalidX25519Key as alloy_sol_types::SolError>::abi_encode_raw(
27352                        inner,
27353                        out,
27354                    )
27355                }
27356                Self::MinDelegateAmountTooSmall(inner) => {
27357                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
27358                        inner,
27359                        out,
27360                    )
27361                }
27362                Self::NoUndelegationFound(inner) => {
27363                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encode_raw(
27364                        inner,
27365                        out,
27366                    )
27367                }
27368                Self::NotInitializing(inner) => {
27369                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
27370                        inner,
27371                        out,
27372                    )
27373                }
27374                Self::NothingToWithdraw(inner) => {
27375                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
27376                        inner,
27377                        out,
27378                    )
27379                }
27380                Self::OwnableInvalidOwner(inner) => {
27381                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
27382                        inner,
27383                        out,
27384                    )
27385                }
27386                Self::OwnableUnauthorizedAccount(inner) => {
27387                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
27388                        inner,
27389                        out,
27390                    )
27391                }
27392                Self::OwnershipCannotBeRenounced(inner) => {
27393                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
27394                        inner,
27395                        out,
27396                    )
27397                }
27398                Self::PowPrecompileFailed(inner) => {
27399                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
27400                        inner,
27401                        out,
27402                    )
27403                }
27404                Self::PrematureWithdrawal(inner) => {
27405                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
27406                        inner,
27407                        out,
27408                    )
27409                }
27410                Self::SchnorrKeyAlreadyUsed(inner) => {
27411                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
27412                        inner,
27413                        out,
27414                    )
27415                }
27416                Self::UUPSUnauthorizedCallContext(inner) => {
27417                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
27418                        inner,
27419                        out,
27420                    )
27421                }
27422                Self::UUPSUnsupportedProxiableUUID(inner) => {
27423                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
27424                        inner,
27425                        out,
27426                    )
27427                }
27428                Self::UndelegationAlreadyExists(inner) => {
27429                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
27430                        inner,
27431                        out,
27432                    )
27433                }
27434                Self::ValidatorAlreadyExited(inner) => {
27435                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
27436                        inner,
27437                        out,
27438                    )
27439                }
27440                Self::ValidatorAlreadyRegistered(inner) => {
27441                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
27442                        inner,
27443                        out,
27444                    )
27445                }
27446                Self::ValidatorInactive(inner) => {
27447                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
27448                        inner,
27449                        out,
27450                    )
27451                }
27452                Self::ValidatorNotExited(inner) => {
27453                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
27454                        inner,
27455                        out,
27456                    )
27457                }
27458                Self::X25519KeyAlreadyUsed(inner) => {
27459                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
27460                        inner,
27461                        out,
27462                    )
27463                }
27464                Self::ZeroAddress(inner) => {
27465                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
27466                        inner,
27467                        out,
27468                    )
27469                }
27470                Self::ZeroAmount(inner) => {
27471                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
27472                }
27473            }
27474        }
27475    }
27476    #[automatically_derived]
27477    impl StakeTableV3Errors {
27478        /**Creates a [`AccessControlBadConfirmation`] error.
27479
27480```solidity
27481error AccessControlBadConfirmation()
27482```*/
27483        #[inline]
27484        pub fn access_control_bad_confirmation() -> Self {
27485            Self::AccessControlBadConfirmation(AccessControlBadConfirmation)
27486        }
27487        /**Creates a [`AccessControlUnauthorizedAccount`] error.
27488
27489```solidity
27490error AccessControlUnauthorizedAccount(address,bytes32)
27491```*/
27492        #[inline]
27493        pub fn access_control_unauthorized_account(
27494            account: alloy::sol_types::private::Address,
27495            needed_role: alloy::sol_types::private::FixedBytes<32>,
27496        ) -> Self {
27497            Self::AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount {
27498                account: account,
27499                neededRole: needed_role,
27500            })
27501        }
27502        /**Creates a [`AddressEmptyCode`] error.
27503
27504```solidity
27505error AddressEmptyCode(address)
27506```*/
27507        #[inline]
27508        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
27509            Self::AddressEmptyCode(AddressEmptyCode { target: target })
27510        }
27511        /**Creates a [`BLSSigIsInfinity`] error.
27512
27513```solidity
27514error BLSSigIsInfinity()
27515```*/
27516        #[inline]
27517        pub fn bls_sig_is_infinity() -> Self {
27518            Self::BLSSigIsInfinity(BLSSigIsInfinity)
27519        }
27520        /**Creates a [`BLSSigVerificationFailed`] error.
27521
27522```solidity
27523error BLSSigVerificationFailed()
27524```*/
27525        #[inline]
27526        pub fn bls_sig_verification_failed() -> Self {
27527            Self::BLSSigVerificationFailed(BLSSigVerificationFailed)
27528        }
27529        /**Creates a [`BLSVKIsInfinity`] error.
27530
27531```solidity
27532error BLSVKIsInfinity()
27533```*/
27534        #[inline]
27535        pub fn blsvk_is_infinity() -> Self {
27536            Self::BLSVKIsInfinity(BLSVKIsInfinity)
27537        }
27538        /**Creates a [`BN254PairingProdFailed`] error.
27539
27540```solidity
27541error BN254PairingProdFailed()
27542```*/
27543        #[inline]
27544        pub fn bn_254_pairing_prod_failed() -> Self {
27545            Self::BN254PairingProdFailed(BN254PairingProdFailed)
27546        }
27547        /**Creates a [`BlsKeyAlreadyUsed`] error.
27548
27549```solidity
27550error BlsKeyAlreadyUsed()
27551```*/
27552        #[inline]
27553        pub fn bls_key_already_used() -> Self {
27554            Self::BlsKeyAlreadyUsed(BlsKeyAlreadyUsed)
27555        }
27556        /**Creates a [`CommissionAlreadyInitialized`] error.
27557
27558```solidity
27559error CommissionAlreadyInitialized(address)
27560```*/
27561        #[inline]
27562        pub fn commission_already_initialized(
27563            validator: alloy::sol_types::private::Address,
27564        ) -> Self {
27565            Self::CommissionAlreadyInitialized(CommissionAlreadyInitialized {
27566                validator: validator,
27567            })
27568        }
27569        /**Creates a [`CommissionIncreaseExceedsMax`] error.
27570
27571```solidity
27572error CommissionIncreaseExceedsMax()
27573```*/
27574        #[inline]
27575        pub fn commission_increase_exceeds_max() -> Self {
27576            Self::CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax)
27577        }
27578        /**Creates a [`CommissionUnchanged`] error.
27579
27580```solidity
27581error CommissionUnchanged()
27582```*/
27583        #[inline]
27584        pub fn commission_unchanged() -> Self {
27585            Self::CommissionUnchanged(CommissionUnchanged)
27586        }
27587        /**Creates a [`CommissionUpdateTooSoon`] error.
27588
27589```solidity
27590error CommissionUpdateTooSoon()
27591```*/
27592        #[inline]
27593        pub fn commission_update_too_soon() -> Self {
27594            Self::CommissionUpdateTooSoon(CommissionUpdateTooSoon)
27595        }
27596        /**Creates a [`DefaultAdminCannotBeRenounced`] error.
27597
27598```solidity
27599error DefaultAdminCannotBeRenounced()
27600```*/
27601        #[inline]
27602        pub fn default_admin_cannot_be_renounced() -> Self {
27603            Self::DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced)
27604        }
27605        /**Creates a [`DefaultAdminCannotBeRevoked`] error.
27606
27607```solidity
27608error DefaultAdminCannotBeRevoked()
27609```*/
27610        #[inline]
27611        pub fn default_admin_cannot_be_revoked() -> Self {
27612            Self::DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked)
27613        }
27614        /**Creates a [`DelegateAmountTooSmall`] error.
27615
27616```solidity
27617error DelegateAmountTooSmall()
27618```*/
27619        #[inline]
27620        pub fn delegate_amount_too_small() -> Self {
27621            Self::DelegateAmountTooSmall(DelegateAmountTooSmall)
27622        }
27623        /**Creates a [`DeprecatedFunction`] error.
27624
27625```solidity
27626error DeprecatedFunction()
27627```*/
27628        #[inline]
27629        pub fn deprecated_function() -> Self {
27630            Self::DeprecatedFunction(DeprecatedFunction)
27631        }
27632        /**Creates a [`ERC1967InvalidImplementation`] error.
27633
27634```solidity
27635error ERC1967InvalidImplementation(address)
27636```*/
27637        #[inline]
27638        pub fn erc_1967_invalid_implementation(
27639            implementation: alloy::sol_types::private::Address,
27640        ) -> Self {
27641            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
27642                implementation: implementation,
27643            })
27644        }
27645        /**Creates a [`ERC1967NonPayable`] error.
27646
27647```solidity
27648error ERC1967NonPayable()
27649```*/
27650        #[inline]
27651        pub fn erc_1967_non_payable() -> Self {
27652            Self::ERC1967NonPayable(ERC1967NonPayable)
27653        }
27654        /**Creates a [`EnforcedPause`] error.
27655
27656```solidity
27657error EnforcedPause()
27658```*/
27659        #[inline]
27660        pub fn enforced_pause() -> Self {
27661            Self::EnforcedPause(EnforcedPause)
27662        }
27663        /**Creates a [`ExitEscrowPeriodInvalid`] error.
27664
27665```solidity
27666error ExitEscrowPeriodInvalid()
27667```*/
27668        #[inline]
27669        pub fn exit_escrow_period_invalid() -> Self {
27670            Self::ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid)
27671        }
27672        /**Creates a [`ExpectedPause`] error.
27673
27674```solidity
27675error ExpectedPause()
27676```*/
27677        #[inline]
27678        pub fn expected_pause() -> Self {
27679            Self::ExpectedPause(ExpectedPause)
27680        }
27681        /**Creates a [`FailedInnerCall`] error.
27682
27683```solidity
27684error FailedInnerCall()
27685```*/
27686        #[inline]
27687        pub fn failed_inner_call() -> Self {
27688            Self::FailedInnerCall(FailedInnerCall)
27689        }
27690        /**Creates a [`InitialActiveStakeExceedsBalance`] error.
27691
27692```solidity
27693error InitialActiveStakeExceedsBalance()
27694```*/
27695        #[inline]
27696        pub fn initial_active_stake_exceeds_balance() -> Self {
27697            Self::InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance)
27698        }
27699        /**Creates a [`InsufficientAllowance`] error.
27700
27701```solidity
27702error InsufficientAllowance(uint256,uint256)
27703```*/
27704        #[inline]
27705        pub fn insufficient_allowance(
27706            _0: alloy::sol_types::private::primitives::aliases::U256,
27707            _1: alloy::sol_types::private::primitives::aliases::U256,
27708        ) -> Self {
27709            Self::InsufficientAllowance(InsufficientAllowance {
27710                _0: _0,
27711                _1: _1,
27712            })
27713        }
27714        /**Creates a [`InsufficientBalance`] error.
27715
27716```solidity
27717error InsufficientBalance(uint256)
27718```*/
27719        #[inline]
27720        pub fn insufficient_balance(
27721            _0: alloy::sol_types::private::primitives::aliases::U256,
27722        ) -> Self {
27723            Self::InsufficientBalance(InsufficientBalance(_0))
27724        }
27725        /**Creates a [`InvalidCommission`] error.
27726
27727```solidity
27728error InvalidCommission()
27729```*/
27730        #[inline]
27731        pub fn invalid_commission() -> Self {
27732            Self::InvalidCommission(InvalidCommission)
27733        }
27734        /**Creates a [`InvalidG1`] error.
27735
27736```solidity
27737error InvalidG1()
27738```*/
27739        #[inline]
27740        pub fn invalid_g_1() -> Self {
27741            Self::InvalidG1(InvalidG1)
27742        }
27743        /**Creates a [`InvalidInitialization`] error.
27744
27745```solidity
27746error InvalidInitialization()
27747```*/
27748        #[inline]
27749        pub fn invalid_initialization() -> Self {
27750            Self::InvalidInitialization(InvalidInitialization)
27751        }
27752        /**Creates a [`InvalidMetadataUriLength`] error.
27753
27754```solidity
27755error InvalidMetadataUriLength()
27756```*/
27757        #[inline]
27758        pub fn invalid_metadata_uri_length() -> Self {
27759            Self::InvalidMetadataUriLength(InvalidMetadataUriLength)
27760        }
27761        /**Creates a [`InvalidP2pAddr`] error.
27762
27763```solidity
27764error InvalidP2pAddr()
27765```*/
27766        #[inline]
27767        pub fn invalid_p_2p_addr() -> Self {
27768            Self::InvalidP2pAddr(InvalidP2pAddr)
27769        }
27770        /**Creates a [`InvalidRateLimitParameters`] error.
27771
27772```solidity
27773error InvalidRateLimitParameters()
27774```*/
27775        #[inline]
27776        pub fn invalid_rate_limit_parameters() -> Self {
27777            Self::InvalidRateLimitParameters(InvalidRateLimitParameters)
27778        }
27779        /**Creates a [`InvalidSchnorrSig`] error.
27780
27781```solidity
27782error InvalidSchnorrSig()
27783```*/
27784        #[inline]
27785        pub fn invalid_schnorr_sig() -> Self {
27786            Self::InvalidSchnorrSig(InvalidSchnorrSig)
27787        }
27788        /**Creates a [`InvalidSchnorrVK`] error.
27789
27790```solidity
27791error InvalidSchnorrVK()
27792```*/
27793        #[inline]
27794        pub fn invalid_schnorr_vk() -> Self {
27795            Self::InvalidSchnorrVK(InvalidSchnorrVK)
27796        }
27797        /**Creates a [`InvalidX25519Key`] error.
27798
27799```solidity
27800error InvalidX25519Key()
27801```*/
27802        #[inline]
27803        pub fn invalid_x_25519_key() -> Self {
27804            Self::InvalidX25519Key(InvalidX25519Key)
27805        }
27806        /**Creates a [`MinDelegateAmountTooSmall`] error.
27807
27808```solidity
27809error MinDelegateAmountTooSmall()
27810```*/
27811        #[inline]
27812        pub fn min_delegate_amount_too_small() -> Self {
27813            Self::MinDelegateAmountTooSmall(MinDelegateAmountTooSmall)
27814        }
27815        /**Creates a [`NoUndelegationFound`] error.
27816
27817```solidity
27818error NoUndelegationFound()
27819```*/
27820        #[inline]
27821        pub fn no_undelegation_found() -> Self {
27822            Self::NoUndelegationFound(NoUndelegationFound)
27823        }
27824        /**Creates a [`NotInitializing`] error.
27825
27826```solidity
27827error NotInitializing()
27828```*/
27829        #[inline]
27830        pub fn not_initializing() -> Self {
27831            Self::NotInitializing(NotInitializing)
27832        }
27833        /**Creates a [`NothingToWithdraw`] error.
27834
27835```solidity
27836error NothingToWithdraw()
27837```*/
27838        #[inline]
27839        pub fn nothing_to_withdraw() -> Self {
27840            Self::NothingToWithdraw(NothingToWithdraw)
27841        }
27842        /**Creates a [`OwnableInvalidOwner`] error.
27843
27844```solidity
27845error OwnableInvalidOwner(address)
27846```*/
27847        #[inline]
27848        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
27849            Self::OwnableInvalidOwner(OwnableInvalidOwner {
27850                owner: owner,
27851            })
27852        }
27853        /**Creates a [`OwnableUnauthorizedAccount`] error.
27854
27855```solidity
27856error OwnableUnauthorizedAccount(address)
27857```*/
27858        #[inline]
27859        pub fn ownable_unauthorized_account(
27860            account: alloy::sol_types::private::Address,
27861        ) -> Self {
27862            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
27863                account: account,
27864            })
27865        }
27866        /**Creates a [`OwnershipCannotBeRenounced`] error.
27867
27868```solidity
27869error OwnershipCannotBeRenounced()
27870```*/
27871        #[inline]
27872        pub fn ownership_cannot_be_renounced() -> Self {
27873            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
27874        }
27875        /**Creates a [`PowPrecompileFailed`] error.
27876
27877```solidity
27878error PowPrecompileFailed()
27879```*/
27880        #[inline]
27881        pub fn pow_precompile_failed() -> Self {
27882            Self::PowPrecompileFailed(PowPrecompileFailed)
27883        }
27884        /**Creates a [`PrematureWithdrawal`] error.
27885
27886```solidity
27887error PrematureWithdrawal()
27888```*/
27889        #[inline]
27890        pub fn premature_withdrawal() -> Self {
27891            Self::PrematureWithdrawal(PrematureWithdrawal)
27892        }
27893        /**Creates a [`SchnorrKeyAlreadyUsed`] error.
27894
27895```solidity
27896error SchnorrKeyAlreadyUsed()
27897```*/
27898        #[inline]
27899        pub fn schnorr_key_already_used() -> Self {
27900            Self::SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed)
27901        }
27902        /**Creates a [`UUPSUnauthorizedCallContext`] error.
27903
27904```solidity
27905error UUPSUnauthorizedCallContext()
27906```*/
27907        #[inline]
27908        pub fn uups_unauthorized_call_context() -> Self {
27909            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
27910        }
27911        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
27912
27913```solidity
27914error UUPSUnsupportedProxiableUUID(bytes32)
27915```*/
27916        #[inline]
27917        pub fn uups_unsupported_proxiable_uuid(
27918            slot: alloy::sol_types::private::FixedBytes<32>,
27919        ) -> Self {
27920            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
27921                slot: slot,
27922            })
27923        }
27924        /**Creates a [`UndelegationAlreadyExists`] error.
27925
27926```solidity
27927error UndelegationAlreadyExists()
27928```*/
27929        #[inline]
27930        pub fn undelegation_already_exists() -> Self {
27931            Self::UndelegationAlreadyExists(UndelegationAlreadyExists)
27932        }
27933        /**Creates a [`ValidatorAlreadyExited`] error.
27934
27935```solidity
27936error ValidatorAlreadyExited()
27937```*/
27938        #[inline]
27939        pub fn validator_already_exited() -> Self {
27940            Self::ValidatorAlreadyExited(ValidatorAlreadyExited)
27941        }
27942        /**Creates a [`ValidatorAlreadyRegistered`] error.
27943
27944```solidity
27945error ValidatorAlreadyRegistered()
27946```*/
27947        #[inline]
27948        pub fn validator_already_registered() -> Self {
27949            Self::ValidatorAlreadyRegistered(ValidatorAlreadyRegistered)
27950        }
27951        /**Creates a [`ValidatorInactive`] error.
27952
27953```solidity
27954error ValidatorInactive()
27955```*/
27956        #[inline]
27957        pub fn validator_inactive() -> Self {
27958            Self::ValidatorInactive(ValidatorInactive)
27959        }
27960        /**Creates a [`ValidatorNotExited`] error.
27961
27962```solidity
27963error ValidatorNotExited()
27964```*/
27965        #[inline]
27966        pub fn validator_not_exited() -> Self {
27967            Self::ValidatorNotExited(ValidatorNotExited)
27968        }
27969        /**Creates a [`X25519KeyAlreadyUsed`] error.
27970
27971```solidity
27972error X25519KeyAlreadyUsed()
27973```*/
27974        #[inline]
27975        pub fn x_25519_key_already_used() -> Self {
27976            Self::X25519KeyAlreadyUsed(X25519KeyAlreadyUsed)
27977        }
27978        /**Creates a [`ZeroAddress`] error.
27979
27980```solidity
27981error ZeroAddress()
27982```*/
27983        #[inline]
27984        pub fn zero_address() -> Self {
27985            Self::ZeroAddress(ZeroAddress)
27986        }
27987        /**Creates a [`ZeroAmount`] error.
27988
27989```solidity
27990error ZeroAmount()
27991```*/
27992        #[inline]
27993        pub fn zero_amount() -> Self {
27994            Self::ZeroAmount(ZeroAmount)
27995        }
27996    }
27997    ///Container for all the [`StakeTableV3`](self) events.
27998    #[derive(Clone)]
27999    #[derive(serde::Serialize, serde::Deserialize)]
28000    #[derive(Debug, PartialEq, Eq, Hash)]
28001    pub enum StakeTableV3Events {
28002        #[allow(missing_docs)]
28003        CommissionUpdated(CommissionUpdated),
28004        #[allow(missing_docs)]
28005        ConsensusKeysUpdated(ConsensusKeysUpdated),
28006        #[allow(missing_docs)]
28007        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
28008        #[allow(missing_docs)]
28009        Delegated(Delegated),
28010        #[allow(missing_docs)]
28011        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
28012        #[allow(missing_docs)]
28013        Initialized(Initialized),
28014        #[allow(missing_docs)]
28015        MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated),
28016        #[allow(missing_docs)]
28017        MetadataUriUpdated(MetadataUriUpdated),
28018        #[allow(missing_docs)]
28019        MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated),
28020        #[allow(missing_docs)]
28021        MinDelegateAmountUpdated(MinDelegateAmountUpdated),
28022        #[allow(missing_docs)]
28023        OwnershipTransferred(OwnershipTransferred),
28024        #[allow(missing_docs)]
28025        P2pAddrUpdated(P2pAddrUpdated),
28026        #[allow(missing_docs)]
28027        Paused(Paused),
28028        #[allow(missing_docs)]
28029        RoleAdminChanged(RoleAdminChanged),
28030        #[allow(missing_docs)]
28031        RoleGranted(RoleGranted),
28032        #[allow(missing_docs)]
28033        RoleRevoked(RoleRevoked),
28034        #[allow(missing_docs)]
28035        Undelegated(Undelegated),
28036        #[allow(missing_docs)]
28037        UndelegatedV2(UndelegatedV2),
28038        #[allow(missing_docs)]
28039        Unpaused(Unpaused),
28040        #[allow(missing_docs)]
28041        Upgraded(Upgraded),
28042        #[allow(missing_docs)]
28043        ValidatorExit(ValidatorExit),
28044        #[allow(missing_docs)]
28045        ValidatorExitClaimed(ValidatorExitClaimed),
28046        #[allow(missing_docs)]
28047        ValidatorExitV2(ValidatorExitV2),
28048        #[allow(missing_docs)]
28049        ValidatorRegistered(ValidatorRegistered),
28050        #[allow(missing_docs)]
28051        ValidatorRegisteredV2(ValidatorRegisteredV2),
28052        #[allow(missing_docs)]
28053        ValidatorRegisteredV3(ValidatorRegisteredV3),
28054        #[allow(missing_docs)]
28055        Withdrawal(Withdrawal),
28056        #[allow(missing_docs)]
28057        WithdrawalClaimed(WithdrawalClaimed),
28058        #[allow(missing_docs)]
28059        X25519KeyUpdated(X25519KeyUpdated),
28060    }
28061    impl StakeTableV3Events {
28062        /// All the selectors of this enum.
28063        ///
28064        /// Note that the selectors might not be in the same order as the variants.
28065        /// No guarantees are made about the order of the selectors.
28066        ///
28067        /// Prefer using `SolInterface` methods instead.
28068        pub const SELECTORS: &'static [[u8; 32usize]] = &[
28069            [
28070                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
28071                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
28072                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
28073            ],
28074            [
28075                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
28076                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
28077                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
28078            ],
28079            [
28080                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
28081                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
28082                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
28083            ],
28084            [
28085                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
28086                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
28087                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
28088            ],
28089            [
28090                59u8, 76u8, 200u8, 138u8, 254u8, 62u8, 92u8, 230u8, 190u8, 234u8, 121u8,
28091                9u8, 222u8, 32u8, 11u8, 242u8, 24u8, 158u8, 238u8, 204u8, 179u8, 150u8,
28092                87u8, 31u8, 31u8, 148u8, 213u8, 24u8, 53u8, 242u8, 71u8, 223u8,
28093            ],
28094            [
28095                67u8, 6u8, 97u8, 130u8, 175u8, 137u8, 242u8, 48u8, 69u8, 34u8, 7u8, 26u8,
28096                87u8, 192u8, 96u8, 99u8, 225u8, 27u8, 38u8, 89u8, 29u8, 109u8, 156u8,
28097                51u8, 241u8, 135u8, 76u8, 45u8, 10u8, 20u8, 187u8, 34u8,
28098            ],
28099            [
28100                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
28101                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
28102                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
28103            ],
28104            [
28105                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
28106                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
28107                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
28108            ],
28109            [
28110                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
28111                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
28112                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
28113            ],
28114            [
28115                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
28116                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
28117                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
28118            ],
28119            [
28120                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
28121                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
28122                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
28123            ],
28124            [
28125                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
28126                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
28127                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
28128            ],
28129            [
28130                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
28131                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
28132                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
28133            ],
28134            [
28135                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
28136                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
28137                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
28138            ],
28139            [
28140                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
28141                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
28142                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
28143            ],
28144            [
28145                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
28146                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
28147                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
28148            ],
28149            [
28150                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
28151                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
28152                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
28153            ],
28154            [
28155                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
28156                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
28157                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
28158            ],
28159            [
28160                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
28161                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
28162                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
28163            ],
28164            [
28165                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
28166                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
28167                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
28168            ],
28169            [
28170                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
28171                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
28172                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
28173            ],
28174            [
28175                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
28176                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
28177                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
28178            ],
28179            [
28180                191u8, 20u8, 205u8, 127u8, 234u8, 112u8, 67u8, 93u8, 66u8, 79u8, 146u8,
28181                247u8, 163u8, 208u8, 17u8, 9u8, 165u8, 131u8, 68u8, 157u8, 113u8, 136u8,
28182                152u8, 166u8, 169u8, 105u8, 135u8, 156u8, 84u8, 118u8, 236u8, 20u8,
28183            ],
28184            [
28185                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
28186                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
28187                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
28188            ],
28189            [
28190                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
28191                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
28192                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
28193            ],
28194            [
28195                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
28196                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
28197                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
28198            ],
28199            [
28200                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
28201                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
28202                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
28203            ],
28204            [
28205                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
28206                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
28207                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
28208            ],
28209            [
28210                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
28211                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
28212                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
28213            ],
28214        ];
28215        /// The names of the variants in the same order as `SELECTORS`.
28216        pub const VARIANT_NAMES: &'static [&'static str] = &[
28217            ::core::stringify!(MinDelegateAmountUpdated),
28218            ::core::stringify!(MetadataUriUpdated),
28219            ::core::stringify!(ValidatorRegisteredV2),
28220            ::core::stringify!(RoleGranted),
28221            ::core::stringify!(X25519KeyUpdated),
28222            ::core::stringify!(P2pAddrUpdated),
28223            ::core::stringify!(Undelegated),
28224            ::core::stringify!(ValidatorExitV2),
28225            ::core::stringify!(MinCommissionUpdateIntervalUpdated),
28226            ::core::stringify!(Unpaused),
28227            ::core::stringify!(Paused),
28228            ::core::stringify!(UndelegatedV2),
28229            ::core::stringify!(ExitEscrowPeriodUpdated),
28230            ::core::stringify!(Withdrawal),
28231            ::core::stringify!(ConsensusKeysUpdated),
28232            ::core::stringify!(ValidatorExitClaimed),
28233            ::core::stringify!(OwnershipTransferred),
28234            ::core::stringify!(WithdrawalClaimed),
28235            ::core::stringify!(Upgraded),
28236            ::core::stringify!(RoleAdminChanged),
28237            ::core::stringify!(CommissionUpdated),
28238            ::core::stringify!(MaxCommissionIncreaseUpdated),
28239            ::core::stringify!(ValidatorRegisteredV3),
28240            ::core::stringify!(Initialized),
28241            ::core::stringify!(ConsensusKeysUpdatedV2),
28242            ::core::stringify!(Delegated),
28243            ::core::stringify!(RoleRevoked),
28244            ::core::stringify!(ValidatorRegistered),
28245            ::core::stringify!(ValidatorExit),
28246        ];
28247        /// The signatures in the same order as `SELECTORS`.
28248        pub const SIGNATURES: &'static [&'static str] = &[
28249            <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28250            <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28251            <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE,
28252            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
28253            <X25519KeyUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28254            <P2pAddrUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28255            <Undelegated as alloy_sol_types::SolEvent>::SIGNATURE,
28256            <ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE,
28257            <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28258            <Unpaused as alloy_sol_types::SolEvent>::SIGNATURE,
28259            <Paused as alloy_sol_types::SolEvent>::SIGNATURE,
28260            <UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
28261            <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28262            <Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE,
28263            <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28264            <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
28265            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
28266            <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
28267            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
28268            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
28269            <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28270            <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
28271            <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::SIGNATURE,
28272            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
28273            <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
28274            <Delegated as alloy_sol_types::SolEvent>::SIGNATURE,
28275            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
28276            <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE,
28277            <ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE,
28278        ];
28279        /// Returns the signature for the given selector, if known.
28280        #[inline]
28281        pub fn signature_by_selector(
28282            selector: [u8; 32usize],
28283        ) -> ::core::option::Option<&'static str> {
28284            match Self::SELECTORS.binary_search(&selector) {
28285                ::core::result::Result::Ok(idx) => {
28286                    ::core::option::Option::Some(Self::SIGNATURES[idx])
28287                }
28288                ::core::result::Result::Err(_) => ::core::option::Option::None,
28289            }
28290        }
28291        /// Returns the enum variant name for the given selector, if known.
28292        #[inline]
28293        pub fn name_by_selector(
28294            selector: [u8; 32usize],
28295        ) -> ::core::option::Option<&'static str> {
28296            let sig = Self::signature_by_selector(selector)?;
28297            sig.split_once('(').map(|(name, _)| name)
28298        }
28299    }
28300    #[automatically_derived]
28301    impl alloy_sol_types::SolEventInterface for StakeTableV3Events {
28302        const NAME: &'static str = "StakeTableV3Events";
28303        const COUNT: usize = 29usize;
28304        fn decode_raw_log(
28305            topics: &[alloy_sol_types::Word],
28306            data: &[u8],
28307        ) -> alloy_sol_types::Result<Self> {
28308            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
28309                topics,
28310                data,
28311                alloy_sol_types::abi::AbiDecoderConfig::default(),
28312            )
28313        }
28314        fn decode_raw_log_with_config(
28315            topics: &[alloy_sol_types::Word],
28316            data: &[u8],
28317            config: alloy_sol_types::abi::AbiDecoderConfig,
28318        ) -> alloy_sol_types::Result<Self> {
28319            match topics.first().copied() {
28320                Some(
28321                    <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28322                ) => {
28323                    <CommissionUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28324                            topics,
28325                            data,
28326                            config,
28327                        )
28328                        .map(Self::CommissionUpdated)
28329                }
28330                Some(
28331                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28332                ) => {
28333                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28334                            topics,
28335                            data,
28336                            config,
28337                        )
28338                        .map(Self::ConsensusKeysUpdated)
28339                }
28340                Some(
28341                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28342                ) => {
28343                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28344                            topics,
28345                            data,
28346                            config,
28347                        )
28348                        .map(Self::ConsensusKeysUpdatedV2)
28349                }
28350                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28351                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28352                            topics,
28353                            data,
28354                            config,
28355                        )
28356                        .map(Self::Delegated)
28357                }
28358                Some(
28359                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28360                ) => {
28361                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28362                            topics,
28363                            data,
28364                            config,
28365                        )
28366                        .map(Self::ExitEscrowPeriodUpdated)
28367                }
28368                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28369                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28370                            topics,
28371                            data,
28372                            config,
28373                        )
28374                        .map(Self::Initialized)
28375                }
28376                Some(
28377                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28378                ) => {
28379                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28380                            topics,
28381                            data,
28382                            config,
28383                        )
28384                        .map(Self::MaxCommissionIncreaseUpdated)
28385                }
28386                Some(
28387                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28388                ) => {
28389                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28390                            topics,
28391                            data,
28392                            config,
28393                        )
28394                        .map(Self::MetadataUriUpdated)
28395                }
28396                Some(
28397                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28398                ) => {
28399                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28400                            topics,
28401                            data,
28402                            config,
28403                        )
28404                        .map(Self::MinCommissionUpdateIntervalUpdated)
28405                }
28406                Some(
28407                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28408                ) => {
28409                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28410                            topics,
28411                            data,
28412                            config,
28413                        )
28414                        .map(Self::MinDelegateAmountUpdated)
28415                }
28416                Some(
28417                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28418                ) => {
28419                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28420                            topics,
28421                            data,
28422                            config,
28423                        )
28424                        .map(Self::OwnershipTransferred)
28425                }
28426                Some(<P2pAddrUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28427                    <P2pAddrUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28428                            topics,
28429                            data,
28430                            config,
28431                        )
28432                        .map(Self::P2pAddrUpdated)
28433                }
28434                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28435                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28436                            topics,
28437                            data,
28438                            config,
28439                        )
28440                        .map(Self::Paused)
28441                }
28442                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28443                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28444                            topics,
28445                            data,
28446                            config,
28447                        )
28448                        .map(Self::RoleAdminChanged)
28449                }
28450                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28451                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28452                            topics,
28453                            data,
28454                            config,
28455                        )
28456                        .map(Self::RoleGranted)
28457                }
28458                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28459                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28460                            topics,
28461                            data,
28462                            config,
28463                        )
28464                        .map(Self::RoleRevoked)
28465                }
28466                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28467                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28468                            topics,
28469                            data,
28470                            config,
28471                        )
28472                        .map(Self::Undelegated)
28473                }
28474                Some(<UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28475                    <UndelegatedV2 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28476                            topics,
28477                            data,
28478                            config,
28479                        )
28480                        .map(Self::UndelegatedV2)
28481                }
28482                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28483                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28484                            topics,
28485                            data,
28486                            config,
28487                        )
28488                        .map(Self::Unpaused)
28489                }
28490                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28491                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28492                            topics,
28493                            data,
28494                            config,
28495                        )
28496                        .map(Self::Upgraded)
28497                }
28498                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28499                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28500                            topics,
28501                            data,
28502                            config,
28503                        )
28504                        .map(Self::ValidatorExit)
28505                }
28506                Some(
28507                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28508                ) => {
28509                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28510                            topics,
28511                            data,
28512                            config,
28513                        )
28514                        .map(Self::ValidatorExitClaimed)
28515                }
28516                Some(<ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28517                    <ValidatorExitV2 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28518                            topics,
28519                            data,
28520                            config,
28521                        )
28522                        .map(Self::ValidatorExitV2)
28523                }
28524                Some(
28525                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28526                ) => {
28527                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28528                            topics,
28529                            data,
28530                            config,
28531                        )
28532                        .map(Self::ValidatorRegistered)
28533                }
28534                Some(
28535                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28536                ) => {
28537                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28538                            topics,
28539                            data,
28540                            config,
28541                        )
28542                        .map(Self::ValidatorRegisteredV2)
28543                }
28544                Some(
28545                    <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28546                ) => {
28547                    <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28548                            topics,
28549                            data,
28550                            config,
28551                        )
28552                        .map(Self::ValidatorRegisteredV3)
28553                }
28554                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28555                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28556                            topics,
28557                            data,
28558                            config,
28559                        )
28560                        .map(Self::Withdrawal)
28561                }
28562                Some(
28563                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
28564                ) => {
28565                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28566                            topics,
28567                            data,
28568                            config,
28569                        )
28570                        .map(Self::WithdrawalClaimed)
28571                }
28572                Some(<X25519KeyUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
28573                    <X25519KeyUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
28574                            topics,
28575                            data,
28576                            config,
28577                        )
28578                        .map(Self::X25519KeyUpdated)
28579                }
28580                _ => {
28581                    if topics
28582                        .len()
28583                        .checked_mul(alloy_sol_types::Word::len_bytes())
28584                        .and_then(|len| len.checked_add(data.len()))
28585                        .is_none_or(|len| len > config.get_memory_limit())
28586                    {
28587                        return alloy_sol_types::private::Err(
28588                            alloy_sol_types::Error::MemoryLimitExceeded(
28589                                config.get_memory_limit(),
28590                            ),
28591                        );
28592                    }
28593                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
28594                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
28595                        log: alloy_sol_types::private::Box::new(
28596                            alloy_sol_types::private::LogData::new_unchecked(
28597                                topics.to_vec(),
28598                                data.to_vec().into(),
28599                            ),
28600                        ),
28601                    })
28602                }
28603            }
28604        }
28605    }
28606    #[automatically_derived]
28607    impl alloy_sol_types::private::IntoLogData for StakeTableV3Events {
28608        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
28609            match self {
28610                Self::CommissionUpdated(inner) => {
28611                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28612                }
28613                Self::ConsensusKeysUpdated(inner) => {
28614                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28615                }
28616                Self::ConsensusKeysUpdatedV2(inner) => {
28617                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28618                }
28619                Self::Delegated(inner) => {
28620                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28621                }
28622                Self::ExitEscrowPeriodUpdated(inner) => {
28623                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28624                }
28625                Self::Initialized(inner) => {
28626                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28627                }
28628                Self::MaxCommissionIncreaseUpdated(inner) => {
28629                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28630                }
28631                Self::MetadataUriUpdated(inner) => {
28632                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28633                }
28634                Self::MinCommissionUpdateIntervalUpdated(inner) => {
28635                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28636                }
28637                Self::MinDelegateAmountUpdated(inner) => {
28638                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28639                }
28640                Self::OwnershipTransferred(inner) => {
28641                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28642                }
28643                Self::P2pAddrUpdated(inner) => {
28644                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28645                }
28646                Self::Paused(inner) => {
28647                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28648                }
28649                Self::RoleAdminChanged(inner) => {
28650                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28651                }
28652                Self::RoleGranted(inner) => {
28653                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28654                }
28655                Self::RoleRevoked(inner) => {
28656                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28657                }
28658                Self::Undelegated(inner) => {
28659                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28660                }
28661                Self::UndelegatedV2(inner) => {
28662                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28663                }
28664                Self::Unpaused(inner) => {
28665                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28666                }
28667                Self::Upgraded(inner) => {
28668                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28669                }
28670                Self::ValidatorExit(inner) => {
28671                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28672                }
28673                Self::ValidatorExitClaimed(inner) => {
28674                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28675                }
28676                Self::ValidatorExitV2(inner) => {
28677                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28678                }
28679                Self::ValidatorRegistered(inner) => {
28680                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28681                }
28682                Self::ValidatorRegisteredV2(inner) => {
28683                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28684                }
28685                Self::ValidatorRegisteredV3(inner) => {
28686                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28687                }
28688                Self::Withdrawal(inner) => {
28689                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28690                }
28691                Self::WithdrawalClaimed(inner) => {
28692                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28693                }
28694                Self::X25519KeyUpdated(inner) => {
28695                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
28696                }
28697            }
28698        }
28699        fn into_log_data(self) -> alloy_sol_types::private::LogData {
28700            match self {
28701                Self::CommissionUpdated(inner) => {
28702                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28703                }
28704                Self::ConsensusKeysUpdated(inner) => {
28705                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28706                }
28707                Self::ConsensusKeysUpdatedV2(inner) => {
28708                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28709                }
28710                Self::Delegated(inner) => {
28711                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28712                }
28713                Self::ExitEscrowPeriodUpdated(inner) => {
28714                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28715                }
28716                Self::Initialized(inner) => {
28717                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28718                }
28719                Self::MaxCommissionIncreaseUpdated(inner) => {
28720                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28721                }
28722                Self::MetadataUriUpdated(inner) => {
28723                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28724                }
28725                Self::MinCommissionUpdateIntervalUpdated(inner) => {
28726                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28727                }
28728                Self::MinDelegateAmountUpdated(inner) => {
28729                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28730                }
28731                Self::OwnershipTransferred(inner) => {
28732                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28733                }
28734                Self::P2pAddrUpdated(inner) => {
28735                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28736                }
28737                Self::Paused(inner) => {
28738                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28739                }
28740                Self::RoleAdminChanged(inner) => {
28741                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28742                }
28743                Self::RoleGranted(inner) => {
28744                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28745                }
28746                Self::RoleRevoked(inner) => {
28747                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28748                }
28749                Self::Undelegated(inner) => {
28750                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28751                }
28752                Self::UndelegatedV2(inner) => {
28753                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28754                }
28755                Self::Unpaused(inner) => {
28756                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28757                }
28758                Self::Upgraded(inner) => {
28759                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28760                }
28761                Self::ValidatorExit(inner) => {
28762                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28763                }
28764                Self::ValidatorExitClaimed(inner) => {
28765                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28766                }
28767                Self::ValidatorExitV2(inner) => {
28768                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28769                }
28770                Self::ValidatorRegistered(inner) => {
28771                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28772                }
28773                Self::ValidatorRegisteredV2(inner) => {
28774                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28775                }
28776                Self::ValidatorRegisteredV3(inner) => {
28777                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28778                }
28779                Self::Withdrawal(inner) => {
28780                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28781                }
28782                Self::WithdrawalClaimed(inner) => {
28783                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28784                }
28785                Self::X25519KeyUpdated(inner) => {
28786                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
28787                }
28788            }
28789        }
28790    }
28791    #[automatically_derived]
28792    impl StakeTableV3Events {
28793        /**Creates a [`CommissionUpdated`] event.
28794
28795```solidity
28796event CommissionUpdated(address,uint256,uint16,uint16)
28797```*/
28798        #[inline]
28799        pub fn commission_updated(
28800            validator: alloy::sol_types::private::Address,
28801            timestamp: alloy::sol_types::private::primitives::aliases::U256,
28802            old_commission: u16,
28803            new_commission: u16,
28804        ) -> Self {
28805            Self::CommissionUpdated(CommissionUpdated {
28806                validator: validator,
28807                timestamp: timestamp,
28808                oldCommission: old_commission,
28809                newCommission: new_commission,
28810            })
28811        }
28812        /**Creates a [`ConsensusKeysUpdated`] event.
28813
28814```solidity
28815event ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))
28816```*/
28817        #[inline]
28818        pub fn consensus_keys_updated(
28819            account: alloy::sol_types::private::Address,
28820            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28821            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28822        ) -> Self {
28823            Self::ConsensusKeysUpdated(ConsensusKeysUpdated {
28824                account: account,
28825                blsVK: bls_vk,
28826                schnorrVK: schnorr_vk,
28827            })
28828        }
28829        /**Creates a [`ConsensusKeysUpdatedV2`] event.
28830
28831```solidity
28832event ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)
28833```*/
28834        #[inline]
28835        pub fn consensus_keys_updated_v_2(
28836            account: alloy::sol_types::private::Address,
28837            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28838            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28839            bls_sig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28840            schnorr_sig: alloy::sol_types::private::Bytes,
28841        ) -> Self {
28842            Self::ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2 {
28843                account: account,
28844                blsVK: bls_vk,
28845                schnorrVK: schnorr_vk,
28846                blsSig: bls_sig,
28847                schnorrSig: schnorr_sig,
28848            })
28849        }
28850        /**Creates a [`Delegated`] event.
28851
28852```solidity
28853event Delegated(address,address,uint256)
28854```*/
28855        #[inline]
28856        pub fn delegated(
28857            delegator: alloy::sol_types::private::Address,
28858            validator: alloy::sol_types::private::Address,
28859            amount: alloy::sol_types::private::primitives::aliases::U256,
28860        ) -> Self {
28861            Self::Delegated(Delegated {
28862                delegator: delegator,
28863                validator: validator,
28864                amount: amount,
28865            })
28866        }
28867        /**Creates a [`ExitEscrowPeriodUpdated`] event.
28868
28869```solidity
28870event ExitEscrowPeriodUpdated(uint64)
28871```*/
28872        #[inline]
28873        pub fn exit_escrow_period_updated(new_exit_escrow_period: u64) -> Self {
28874            Self::ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated {
28875                newExitEscrowPeriod: new_exit_escrow_period,
28876            })
28877        }
28878        /**Creates a [`Initialized`] event.
28879
28880```solidity
28881event Initialized(uint64)
28882```*/
28883        #[inline]
28884        pub fn initialized(version: u64) -> Self {
28885            Self::Initialized(Initialized { version: version })
28886        }
28887        /**Creates a [`MaxCommissionIncreaseUpdated`] event.
28888
28889```solidity
28890event MaxCommissionIncreaseUpdated(uint16)
28891```*/
28892        #[inline]
28893        pub fn max_commission_increase_updated(new_max_increase: u16) -> Self {
28894            Self::MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated {
28895                newMaxIncrease: new_max_increase,
28896            })
28897        }
28898        /**Creates a [`MetadataUriUpdated`] event.
28899
28900```solidity
28901event MetadataUriUpdated(address,string)
28902```*/
28903        #[inline]
28904        pub fn metadata_uri_updated(
28905            validator: alloy::sol_types::private::Address,
28906            metadata_uri: alloy::sol_types::private::String,
28907        ) -> Self {
28908            Self::MetadataUriUpdated(MetadataUriUpdated {
28909                validator: validator,
28910                metadataUri: metadata_uri,
28911            })
28912        }
28913        /**Creates a [`MinCommissionUpdateIntervalUpdated`] event.
28914
28915```solidity
28916event MinCommissionUpdateIntervalUpdated(uint256)
28917```*/
28918        #[inline]
28919        pub fn min_commission_update_interval_updated(
28920            new_interval: alloy::sol_types::private::primitives::aliases::U256,
28921        ) -> Self {
28922            Self::MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated {
28923                newInterval: new_interval,
28924            })
28925        }
28926        /**Creates a [`MinDelegateAmountUpdated`] event.
28927
28928```solidity
28929event MinDelegateAmountUpdated(uint256)
28930```*/
28931        #[inline]
28932        pub fn min_delegate_amount_updated(
28933            new_min_delegate_amount: alloy::sol_types::private::primitives::aliases::U256,
28934        ) -> Self {
28935            Self::MinDelegateAmountUpdated(MinDelegateAmountUpdated {
28936                newMinDelegateAmount: new_min_delegate_amount,
28937            })
28938        }
28939        /**Creates a [`OwnershipTransferred`] event.
28940
28941```solidity
28942event OwnershipTransferred(address,address)
28943```*/
28944        #[inline]
28945        pub fn ownership_transferred(
28946            previous_owner: alloy::sol_types::private::Address,
28947            new_owner: alloy::sol_types::private::Address,
28948        ) -> Self {
28949            Self::OwnershipTransferred(OwnershipTransferred {
28950                previousOwner: previous_owner,
28951                newOwner: new_owner,
28952            })
28953        }
28954        /**Creates a [`P2pAddrUpdated`] event.
28955
28956```solidity
28957event P2pAddrUpdated(address,string)
28958```*/
28959        #[inline]
28960        pub fn p_2p_addr_updated(
28961            validator: alloy::sol_types::private::Address,
28962            p_2p_addr: alloy::sol_types::private::String,
28963        ) -> Self {
28964            Self::P2pAddrUpdated(P2pAddrUpdated {
28965                validator: validator,
28966                p2pAddr: p_2p_addr,
28967            })
28968        }
28969        /**Creates a [`Paused`] event.
28970
28971```solidity
28972event Paused(address)
28973```*/
28974        #[inline]
28975        pub fn paused(account: alloy::sol_types::private::Address) -> Self {
28976            Self::Paused(Paused { account: account })
28977        }
28978        /**Creates a [`RoleAdminChanged`] event.
28979
28980```solidity
28981event RoleAdminChanged(bytes32,bytes32,bytes32)
28982```*/
28983        #[inline]
28984        pub fn role_admin_changed(
28985            role: alloy::sol_types::private::FixedBytes<32>,
28986            previous_admin_role: alloy::sol_types::private::FixedBytes<32>,
28987            new_admin_role: alloy::sol_types::private::FixedBytes<32>,
28988        ) -> Self {
28989            Self::RoleAdminChanged(RoleAdminChanged {
28990                role: role,
28991                previousAdminRole: previous_admin_role,
28992                newAdminRole: new_admin_role,
28993            })
28994        }
28995        /**Creates a [`RoleGranted`] event.
28996
28997```solidity
28998event RoleGranted(bytes32,address,address)
28999```*/
29000        #[inline]
29001        pub fn role_granted(
29002            role: alloy::sol_types::private::FixedBytes<32>,
29003            account: alloy::sol_types::private::Address,
29004            sender: alloy::sol_types::private::Address,
29005        ) -> Self {
29006            Self::RoleGranted(RoleGranted {
29007                role: role,
29008                account: account,
29009                sender: sender,
29010            })
29011        }
29012        /**Creates a [`RoleRevoked`] event.
29013
29014```solidity
29015event RoleRevoked(bytes32,address,address)
29016```*/
29017        #[inline]
29018        pub fn role_revoked(
29019            role: alloy::sol_types::private::FixedBytes<32>,
29020            account: alloy::sol_types::private::Address,
29021            sender: alloy::sol_types::private::Address,
29022        ) -> Self {
29023            Self::RoleRevoked(RoleRevoked {
29024                role: role,
29025                account: account,
29026                sender: sender,
29027            })
29028        }
29029        /**Creates a [`Undelegated`] event.
29030
29031```solidity
29032event Undelegated(address,address,uint256)
29033```*/
29034        #[inline]
29035        pub fn undelegated(
29036            delegator: alloy::sol_types::private::Address,
29037            validator: alloy::sol_types::private::Address,
29038            amount: alloy::sol_types::private::primitives::aliases::U256,
29039        ) -> Self {
29040            Self::Undelegated(Undelegated {
29041                delegator: delegator,
29042                validator: validator,
29043                amount: amount,
29044            })
29045        }
29046        /**Creates a [`UndelegatedV2`] event.
29047
29048```solidity
29049event UndelegatedV2(address,address,uint64,uint256,uint256)
29050```*/
29051        #[inline]
29052        pub fn undelegated_v_2(
29053            delegator: alloy::sol_types::private::Address,
29054            validator: alloy::sol_types::private::Address,
29055            undelegation_id: u64,
29056            amount: alloy::sol_types::private::primitives::aliases::U256,
29057            unlocks_at: alloy::sol_types::private::primitives::aliases::U256,
29058        ) -> Self {
29059            Self::UndelegatedV2(UndelegatedV2 {
29060                delegator: delegator,
29061                validator: validator,
29062                undelegationId: undelegation_id,
29063                amount: amount,
29064                unlocksAt: unlocks_at,
29065            })
29066        }
29067        /**Creates a [`Unpaused`] event.
29068
29069```solidity
29070event Unpaused(address)
29071```*/
29072        #[inline]
29073        pub fn unpaused(account: alloy::sol_types::private::Address) -> Self {
29074            Self::Unpaused(Unpaused { account: account })
29075        }
29076        /**Creates a [`Upgraded`] event.
29077
29078```solidity
29079event Upgraded(address)
29080```*/
29081        #[inline]
29082        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
29083            Self::Upgraded(Upgraded {
29084                implementation: implementation,
29085            })
29086        }
29087        /**Creates a [`ValidatorExit`] event.
29088
29089```solidity
29090event ValidatorExit(address)
29091```*/
29092        #[inline]
29093        pub fn validator_exit(validator: alloy::sol_types::private::Address) -> Self {
29094            Self::ValidatorExit(ValidatorExit {
29095                validator: validator,
29096            })
29097        }
29098        /**Creates a [`ValidatorExitClaimed`] event.
29099
29100```solidity
29101event ValidatorExitClaimed(address,address,uint256)
29102```*/
29103        #[inline]
29104        pub fn validator_exit_claimed(
29105            delegator: alloy::sol_types::private::Address,
29106            validator: alloy::sol_types::private::Address,
29107            amount: alloy::sol_types::private::primitives::aliases::U256,
29108        ) -> Self {
29109            Self::ValidatorExitClaimed(ValidatorExitClaimed {
29110                delegator: delegator,
29111                validator: validator,
29112                amount: amount,
29113            })
29114        }
29115        /**Creates a [`ValidatorExitV2`] event.
29116
29117```solidity
29118event ValidatorExitV2(address,uint256)
29119```*/
29120        #[inline]
29121        pub fn validator_exit_v_2(
29122            validator: alloy::sol_types::private::Address,
29123            unlocks_at: alloy::sol_types::private::primitives::aliases::U256,
29124        ) -> Self {
29125            Self::ValidatorExitV2(ValidatorExitV2 {
29126                validator: validator,
29127                unlocksAt: unlocks_at,
29128            })
29129        }
29130        /**Creates a [`ValidatorRegistered`] event.
29131
29132```solidity
29133event ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)
29134```*/
29135        #[inline]
29136        pub fn validator_registered(
29137            account: alloy::sol_types::private::Address,
29138            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29139            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29140            commission: u16,
29141        ) -> Self {
29142            Self::ValidatorRegistered(ValidatorRegistered {
29143                account: account,
29144                blsVk: bls_vk,
29145                schnorrVk: schnorr_vk,
29146                commission: commission,
29147            })
29148        }
29149        /**Creates a [`ValidatorRegisteredV2`] event.
29150
29151```solidity
29152event ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)
29153```*/
29154        #[inline]
29155        pub fn validator_registered_v_2(
29156            account: alloy::sol_types::private::Address,
29157            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29158            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29159            commission: u16,
29160            bls_sig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29161            schnorr_sig: alloy::sol_types::private::Bytes,
29162            metadata_uri: alloy::sol_types::private::String,
29163        ) -> Self {
29164            Self::ValidatorRegisteredV2(ValidatorRegisteredV2 {
29165                account: account,
29166                blsVK: bls_vk,
29167                schnorrVK: schnorr_vk,
29168                commission: commission,
29169                blsSig: bls_sig,
29170                schnorrSig: schnorr_sig,
29171                metadataUri: metadata_uri,
29172            })
29173        }
29174        /**Creates a [`ValidatorRegisteredV3`] event.
29175
29176```solidity
29177event ValidatorRegisteredV3(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string,bytes32,string)
29178```*/
29179        #[inline]
29180        pub fn validator_registered_v_3(
29181            account: alloy::sol_types::private::Address,
29182            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29183            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29184            commission: u16,
29185            bls_sig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29186            schnorr_sig: alloy::sol_types::private::Bytes,
29187            metadata_uri: alloy::sol_types::private::String,
29188            x_25519_key: alloy::sol_types::private::FixedBytes<32>,
29189            p_2p_addr: alloy::sol_types::private::String,
29190        ) -> Self {
29191            Self::ValidatorRegisteredV3(ValidatorRegisteredV3 {
29192                account: account,
29193                blsVK: bls_vk,
29194                schnorrVK: schnorr_vk,
29195                commission: commission,
29196                blsSig: bls_sig,
29197                schnorrSig: schnorr_sig,
29198                metadataUri: metadata_uri,
29199                x25519Key: x_25519_key,
29200                p2pAddr: p_2p_addr,
29201            })
29202        }
29203        /**Creates a [`Withdrawal`] event.
29204
29205```solidity
29206event Withdrawal(address,uint256)
29207```*/
29208        #[inline]
29209        pub fn withdrawal(
29210            account: alloy::sol_types::private::Address,
29211            amount: alloy::sol_types::private::primitives::aliases::U256,
29212        ) -> Self {
29213            Self::Withdrawal(Withdrawal {
29214                account: account,
29215                amount: amount,
29216            })
29217        }
29218        /**Creates a [`WithdrawalClaimed`] event.
29219
29220```solidity
29221event WithdrawalClaimed(address,address,uint64,uint256)
29222```*/
29223        #[inline]
29224        pub fn withdrawal_claimed(
29225            delegator: alloy::sol_types::private::Address,
29226            validator: alloy::sol_types::private::Address,
29227            undelegation_id: u64,
29228            amount: alloy::sol_types::private::primitives::aliases::U256,
29229        ) -> Self {
29230            Self::WithdrawalClaimed(WithdrawalClaimed {
29231                delegator: delegator,
29232                validator: validator,
29233                undelegationId: undelegation_id,
29234                amount: amount,
29235            })
29236        }
29237        /**Creates a [`X25519KeyUpdated`] event.
29238
29239```solidity
29240event X25519KeyUpdated(address,bytes32)
29241```*/
29242        #[inline]
29243        pub fn x_25519_key_updated(
29244            validator: alloy::sol_types::private::Address,
29245            x_25519_key: alloy::sol_types::private::FixedBytes<32>,
29246        ) -> Self {
29247            Self::X25519KeyUpdated(X25519KeyUpdated {
29248                validator: validator,
29249                x25519Key: x_25519_key,
29250            })
29251        }
29252    }
29253    use alloy::contract as alloy_contract;
29254    /**Creates a new wrapper around an on-chain [`StakeTableV3`](self) contract instance.
29255
29256See the [wrapper's documentation](`StakeTableV3Instance`) for more details.*/
29257    #[inline]
29258    pub const fn new<
29259        P: alloy_contract::private::Provider<N>,
29260        N: alloy_contract::private::Network,
29261    >(
29262        address: alloy_sol_types::private::Address,
29263        __provider: P,
29264    ) -> StakeTableV3Instance<P, N> {
29265        StakeTableV3Instance::<P, N>::new(address, __provider)
29266    }
29267    /**Deploys this contract using the given `provider` and constructor arguments, if any.
29268
29269Returns a new instance of the contract, if the deployment was successful.
29270
29271For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
29272    #[inline]
29273    pub fn deploy<
29274        P: alloy_contract::private::Provider<N>,
29275        N: alloy_contract::private::Network,
29276    >(
29277        __provider: P,
29278    ) -> impl ::core::future::Future<
29279        Output = alloy_contract::Result<StakeTableV3Instance<P, N>>,
29280    > {
29281        StakeTableV3Instance::<P, N>::deploy(__provider)
29282    }
29283    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
29284and constructor arguments, if any.
29285
29286This is a simple wrapper around creating a `RawCallBuilder` with the data set to
29287the bytecode concatenated with the constructor's ABI-encoded arguments.*/
29288    #[inline]
29289    pub fn deploy_builder<
29290        P: alloy_contract::private::Provider<N>,
29291        N: alloy_contract::private::Network,
29292    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
29293        StakeTableV3Instance::<P, N>::deploy_builder(__provider)
29294    }
29295    /**A [`StakeTableV3`](self) instance.
29296
29297Contains type-safe methods for interacting with an on-chain instance of the
29298[`StakeTableV3`](self) contract located at a given `address`, using a given
29299provider `P`.
29300
29301If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
29302documentation on how to provide it), the `deploy` and `deploy_builder` methods can
29303be used to deploy a new instance of the contract.
29304
29305See the [module-level documentation](self) for all the available methods.*/
29306    #[derive(Clone)]
29307    pub struct StakeTableV3Instance<P, N = alloy_contract::private::Ethereum> {
29308        address: alloy_sol_types::private::Address,
29309        provider: P,
29310        _network: ::core::marker::PhantomData<N>,
29311    }
29312    #[automatically_derived]
29313    impl<P, N> ::core::fmt::Debug for StakeTableV3Instance<P, N> {
29314        #[inline]
29315        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
29316            f.debug_tuple("StakeTableV3Instance").field(&self.address).finish()
29317        }
29318    }
29319    /// Instantiation and getters/setters.
29320    impl<
29321        P: alloy_contract::private::Provider<N>,
29322        N: alloy_contract::private::Network,
29323    > StakeTableV3Instance<P, N> {
29324        /**Creates a new wrapper around an on-chain [`StakeTableV3`](self) contract instance.
29325
29326See the [wrapper's documentation](`StakeTableV3Instance`) for more details.*/
29327        #[inline]
29328        pub const fn new(
29329            address: alloy_sol_types::private::Address,
29330            __provider: P,
29331        ) -> Self {
29332            Self {
29333                address,
29334                provider: __provider,
29335                _network: ::core::marker::PhantomData,
29336            }
29337        }
29338        /**Deploys this contract using the given `provider` and constructor arguments, if any.
29339
29340Returns a new instance of the contract, if the deployment was successful.
29341
29342For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
29343        #[inline]
29344        pub async fn deploy(
29345            __provider: P,
29346        ) -> alloy_contract::Result<StakeTableV3Instance<P, N>> {
29347            let call_builder = Self::deploy_builder(__provider);
29348            let contract_address = call_builder.deploy().await?;
29349            Ok(Self::new(contract_address, call_builder.provider))
29350        }
29351        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
29352and constructor arguments, if any.
29353
29354This is a simple wrapper around creating a `RawCallBuilder` with the data set to
29355the bytecode concatenated with the constructor's ABI-encoded arguments.*/
29356        #[inline]
29357        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
29358            alloy_contract::RawCallBuilder::new_raw_deploy(
29359                __provider,
29360                ::core::clone::Clone::clone(&BYTECODE),
29361            )
29362        }
29363        /// Returns a reference to the address.
29364        #[inline]
29365        pub const fn address(&self) -> &alloy_sol_types::private::Address {
29366            &self.address
29367        }
29368        /// Sets the address.
29369        #[inline]
29370        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
29371            self.address = address;
29372        }
29373        /// Sets the address and returns `self`.
29374        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
29375            self.set_address(address);
29376            self
29377        }
29378        /// Returns a reference to the provider.
29379        #[inline]
29380        pub const fn provider(&self) -> &P {
29381            &self.provider
29382        }
29383    }
29384    impl<P: ::core::clone::Clone, N> StakeTableV3Instance<&P, N> {
29385        /// Clones the provider and returns a new instance with the cloned provider.
29386        #[inline]
29387        pub fn with_cloned_provider(self) -> StakeTableV3Instance<P, N> {
29388            StakeTableV3Instance {
29389                address: self.address,
29390                provider: ::core::clone::Clone::clone(&self.provider),
29391                _network: ::core::marker::PhantomData,
29392            }
29393        }
29394    }
29395    /// Function calls.
29396    impl<
29397        P: alloy_contract::private::Provider<N>,
29398        N: alloy_contract::private::Network,
29399    > StakeTableV3Instance<P, N> {
29400        /// Creates a new call builder using this contract instance's provider and address.
29401        ///
29402        /// Note that the call can be any function call, not just those defined in this
29403        /// contract. Prefer using the other methods for building type-safe contract calls.
29404        pub fn call_builder<C: alloy_sol_types::SolCall>(
29405            &self,
29406            call: &C,
29407        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
29408            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
29409        }
29410        ///Creates a new call builder for the [`CURVE25519_P`] function.
29411        pub fn CURVE25519_P(
29412            &self,
29413        ) -> alloy_contract::SolCallBuilder<&P, CURVE25519_PCall, N> {
29414            self.call_builder(&CURVE25519_PCall)
29415        }
29416        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
29417        pub fn DEFAULT_ADMIN_ROLE(
29418            &self,
29419        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
29420            self.call_builder(&DEFAULT_ADMIN_ROLECall)
29421        }
29422        ///Creates a new call builder for the [`MAX_COMMISSION_BPS`] function.
29423        pub fn MAX_COMMISSION_BPS(
29424            &self,
29425        ) -> alloy_contract::SolCallBuilder<&P, MAX_COMMISSION_BPSCall, N> {
29426            self.call_builder(&MAX_COMMISSION_BPSCall)
29427        }
29428        ///Creates a new call builder for the [`MAX_EXIT_ESCROW_PERIOD`] function.
29429        pub fn MAX_EXIT_ESCROW_PERIOD(
29430            &self,
29431        ) -> alloy_contract::SolCallBuilder<&P, MAX_EXIT_ESCROW_PERIODCall, N> {
29432            self.call_builder(&MAX_EXIT_ESCROW_PERIODCall)
29433        }
29434        ///Creates a new call builder for the [`MAX_METADATA_URI_LENGTH`] function.
29435        pub fn MAX_METADATA_URI_LENGTH(
29436            &self,
29437        ) -> alloy_contract::SolCallBuilder<&P, MAX_METADATA_URI_LENGTHCall, N> {
29438            self.call_builder(&MAX_METADATA_URI_LENGTHCall)
29439        }
29440        ///Creates a new call builder for the [`MAX_P2P_ADDR_LENGTH`] function.
29441        pub fn MAX_P2P_ADDR_LENGTH(
29442            &self,
29443        ) -> alloy_contract::SolCallBuilder<&P, MAX_P2P_ADDR_LENGTHCall, N> {
29444            self.call_builder(&MAX_P2P_ADDR_LENGTHCall)
29445        }
29446        ///Creates a new call builder for the [`MIN_EXIT_ESCROW_PERIOD`] function.
29447        pub fn MIN_EXIT_ESCROW_PERIOD(
29448            &self,
29449        ) -> alloy_contract::SolCallBuilder<&P, MIN_EXIT_ESCROW_PERIODCall, N> {
29450            self.call_builder(&MIN_EXIT_ESCROW_PERIODCall)
29451        }
29452        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
29453        pub fn PAUSER_ROLE(
29454            &self,
29455        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
29456            self.call_builder(&PAUSER_ROLECall)
29457        }
29458        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
29459        pub fn UPGRADE_INTERFACE_VERSION(
29460            &self,
29461        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
29462            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
29463        }
29464        ///Creates a new call builder for the [`_hashBlsKey`] function.
29465        pub fn _hashBlsKey(
29466            &self,
29467            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29468        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
29469            self.call_builder(&_hashBlsKeyCall { blsVK })
29470        }
29471        ///Creates a new call builder for the [`activeStake`] function.
29472        pub fn activeStake(
29473            &self,
29474        ) -> alloy_contract::SolCallBuilder<&P, activeStakeCall, N> {
29475            self.call_builder(&activeStakeCall)
29476        }
29477        ///Creates a new call builder for the [`blsKeys`] function.
29478        pub fn blsKeys(
29479            &self,
29480            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
29481        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
29482            self.call_builder(&blsKeysCall { blsKeyHash })
29483        }
29484        ///Creates a new call builder for the [`claimValidatorExit`] function.
29485        pub fn claimValidatorExit(
29486            &self,
29487            validator: alloy::sol_types::private::Address,
29488        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
29489            self.call_builder(
29490                &claimValidatorExitCall {
29491                    validator,
29492                },
29493            )
29494        }
29495        ///Creates a new call builder for the [`claimWithdrawal`] function.
29496        pub fn claimWithdrawal(
29497            &self,
29498            validator: alloy::sol_types::private::Address,
29499        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
29500            self.call_builder(&claimWithdrawalCall { validator })
29501        }
29502        ///Creates a new call builder for the [`commissionTracking`] function.
29503        pub fn commissionTracking(
29504            &self,
29505            validator: alloy::sol_types::private::Address,
29506        ) -> alloy_contract::SolCallBuilder<&P, commissionTrackingCall, N> {
29507            self.call_builder(
29508                &commissionTrackingCall {
29509                    validator,
29510                },
29511            )
29512        }
29513        ///Creates a new call builder for the [`delegate`] function.
29514        pub fn delegate(
29515            &self,
29516            validator: alloy::sol_types::private::Address,
29517            amount: alloy::sol_types::private::primitives::aliases::U256,
29518        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
29519            self.call_builder(&delegateCall { validator, amount })
29520        }
29521        ///Creates a new call builder for the [`delegations`] function.
29522        pub fn delegations(
29523            &self,
29524            validator: alloy::sol_types::private::Address,
29525            delegator: alloy::sol_types::private::Address,
29526        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
29527            self.call_builder(
29528                &delegationsCall {
29529                    validator,
29530                    delegator,
29531                },
29532            )
29533        }
29534        ///Creates a new call builder for the [`deregisterValidator`] function.
29535        pub fn deregisterValidator(
29536            &self,
29537        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
29538            self.call_builder(&deregisterValidatorCall)
29539        }
29540        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
29541        pub fn exitEscrowPeriod(
29542            &self,
29543        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
29544            self.call_builder(&exitEscrowPeriodCall)
29545        }
29546        ///Creates a new call builder for the [`getRoleAdmin`] function.
29547        pub fn getRoleAdmin(
29548            &self,
29549            role: alloy::sol_types::private::FixedBytes<32>,
29550        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
29551            self.call_builder(&getRoleAdminCall { role })
29552        }
29553        ///Creates a new call builder for the [`getUndelegation`] function.
29554        pub fn getUndelegation(
29555            &self,
29556            validator: alloy::sol_types::private::Address,
29557            delegator: alloy::sol_types::private::Address,
29558        ) -> alloy_contract::SolCallBuilder<&P, getUndelegationCall, N> {
29559            self.call_builder(
29560                &getUndelegationCall {
29561                    validator,
29562                    delegator,
29563                },
29564            )
29565        }
29566        ///Creates a new call builder for the [`getVersion`] function.
29567        pub fn getVersion(
29568            &self,
29569        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
29570            self.call_builder(&getVersionCall)
29571        }
29572        ///Creates a new call builder for the [`grantRole`] function.
29573        pub fn grantRole(
29574            &self,
29575            role: alloy::sol_types::private::FixedBytes<32>,
29576            account: alloy::sol_types::private::Address,
29577        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
29578            self.call_builder(&grantRoleCall { role, account })
29579        }
29580        ///Creates a new call builder for the [`hasRole`] function.
29581        pub fn hasRole(
29582            &self,
29583            role: alloy::sol_types::private::FixedBytes<32>,
29584            account: alloy::sol_types::private::Address,
29585        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
29586            self.call_builder(&hasRoleCall { role, account })
29587        }
29588        ///Creates a new call builder for the [`initialize`] function.
29589        pub fn initialize(
29590            &self,
29591            _tokenAddress: alloy::sol_types::private::Address,
29592            _lightClientAddress: alloy::sol_types::private::Address,
29593            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
29594            _timelock: alloy::sol_types::private::Address,
29595        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
29596            self.call_builder(
29597                &initializeCall {
29598                    _tokenAddress,
29599                    _lightClientAddress,
29600                    _exitEscrowPeriod,
29601                    _timelock,
29602                },
29603            )
29604        }
29605        ///Creates a new call builder for the [`initializeV2`] function.
29606        pub fn initializeV2(
29607            &self,
29608            pauser: alloy::sol_types::private::Address,
29609            admin: alloy::sol_types::private::Address,
29610            initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
29611            initialCommissions: alloy::sol_types::private::Vec<
29612                <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
29613            >,
29614        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
29615            self.call_builder(
29616                &initializeV2Call {
29617                    pauser,
29618                    admin,
29619                    initialActiveStake,
29620                    initialCommissions,
29621                },
29622            )
29623        }
29624        ///Creates a new call builder for the [`initializeV3`] function.
29625        pub fn initializeV3(
29626            &self,
29627        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
29628            self.call_builder(&initializeV3Call)
29629        }
29630        ///Creates a new call builder for the [`initializedAtBlock`] function.
29631        pub fn initializedAtBlock(
29632            &self,
29633        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
29634            self.call_builder(&initializedAtBlockCall)
29635        }
29636        ///Creates a new call builder for the [`lightClient`] function.
29637        pub fn lightClient(
29638            &self,
29639        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
29640            self.call_builder(&lightClientCall)
29641        }
29642        ///Creates a new call builder for the [`maxCommissionIncrease`] function.
29643        pub fn maxCommissionIncrease(
29644            &self,
29645        ) -> alloy_contract::SolCallBuilder<&P, maxCommissionIncreaseCall, N> {
29646            self.call_builder(&maxCommissionIncreaseCall)
29647        }
29648        ///Creates a new call builder for the [`minCommissionIncreaseInterval`] function.
29649        pub fn minCommissionIncreaseInterval(
29650            &self,
29651        ) -> alloy_contract::SolCallBuilder<&P, minCommissionIncreaseIntervalCall, N> {
29652            self.call_builder(&minCommissionIncreaseIntervalCall)
29653        }
29654        ///Creates a new call builder for the [`minDelegateAmount`] function.
29655        pub fn minDelegateAmount(
29656            &self,
29657        ) -> alloy_contract::SolCallBuilder<&P, minDelegateAmountCall, N> {
29658            self.call_builder(&minDelegateAmountCall)
29659        }
29660        ///Creates a new call builder for the [`owner`] function.
29661        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
29662            self.call_builder(&ownerCall)
29663        }
29664        ///Creates a new call builder for the [`pause`] function.
29665        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
29666            self.call_builder(&pauseCall)
29667        }
29668        ///Creates a new call builder for the [`paused`] function.
29669        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
29670            self.call_builder(&pausedCall)
29671        }
29672        ///Creates a new call builder for the [`proxiableUUID`] function.
29673        pub fn proxiableUUID(
29674            &self,
29675        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
29676            self.call_builder(&proxiableUUIDCall)
29677        }
29678        ///Creates a new call builder for the [`registerValidator`] function.
29679        pub fn registerValidator(
29680            &self,
29681            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29682            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29683            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29684            _3: u16,
29685        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
29686            self.call_builder(
29687                &registerValidatorCall {
29688                    _0,
29689                    _1,
29690                    _2,
29691                    _3,
29692                },
29693            )
29694        }
29695        ///Creates a new call builder for the [`registerValidatorV2`] function.
29696        pub fn registerValidatorV2(
29697            &self,
29698            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29699            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29700            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29701            _3: alloy::sol_types::private::Bytes,
29702            _4: u16,
29703            _5: alloy::sol_types::private::String,
29704        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV2Call, N> {
29705            self.call_builder(
29706                &registerValidatorV2Call {
29707                    _0,
29708                    _1,
29709                    _2,
29710                    _3,
29711                    _4,
29712                    _5,
29713                },
29714            )
29715        }
29716        ///Creates a new call builder for the [`registerValidatorV3`] function.
29717        pub fn registerValidatorV3(
29718            &self,
29719            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29720            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29721            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29722            schnorrSig: alloy::sol_types::private::Bytes,
29723            commission: u16,
29724            metadataUri: alloy::sol_types::private::String,
29725            x25519Key: alloy::sol_types::private::FixedBytes<32>,
29726            p2pAddr: alloy::sol_types::private::String,
29727        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV3Call, N> {
29728            self.call_builder(
29729                &registerValidatorV3Call {
29730                    blsVK,
29731                    schnorrVK,
29732                    blsSig,
29733                    schnorrSig,
29734                    commission,
29735                    metadataUri,
29736                    x25519Key,
29737                    p2pAddr,
29738                },
29739            )
29740        }
29741        ///Creates a new call builder for the [`renounceOwnership`] function.
29742        pub fn renounceOwnership(
29743            &self,
29744        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
29745            self.call_builder(&renounceOwnershipCall)
29746        }
29747        ///Creates a new call builder for the [`renounceRole`] function.
29748        pub fn renounceRole(
29749            &self,
29750            role: alloy::sol_types::private::FixedBytes<32>,
29751            callerConfirmation: alloy::sol_types::private::Address,
29752        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
29753            self.call_builder(
29754                &renounceRoleCall {
29755                    role,
29756                    callerConfirmation,
29757                },
29758            )
29759        }
29760        ///Creates a new call builder for the [`revokeRole`] function.
29761        pub fn revokeRole(
29762            &self,
29763            role: alloy::sol_types::private::FixedBytes<32>,
29764            account: alloy::sol_types::private::Address,
29765        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
29766            self.call_builder(&revokeRoleCall { role, account })
29767        }
29768        ///Creates a new call builder for the [`schnorrKeys`] function.
29769        pub fn schnorrKeys(
29770            &self,
29771            schnorrKey: alloy::sol_types::private::FixedBytes<32>,
29772        ) -> alloy_contract::SolCallBuilder<&P, schnorrKeysCall, N> {
29773            self.call_builder(&schnorrKeysCall { schnorrKey })
29774        }
29775        ///Creates a new call builder for the [`setMaxCommissionIncrease`] function.
29776        pub fn setMaxCommissionIncrease(
29777            &self,
29778            newMaxIncrease: u16,
29779        ) -> alloy_contract::SolCallBuilder<&P, setMaxCommissionIncreaseCall, N> {
29780            self.call_builder(
29781                &setMaxCommissionIncreaseCall {
29782                    newMaxIncrease,
29783                },
29784            )
29785        }
29786        ///Creates a new call builder for the [`setMinCommissionUpdateInterval`] function.
29787        pub fn setMinCommissionUpdateInterval(
29788            &self,
29789            newInterval: alloy::sol_types::private::primitives::aliases::U256,
29790        ) -> alloy_contract::SolCallBuilder<&P, setMinCommissionUpdateIntervalCall, N> {
29791            self.call_builder(
29792                &setMinCommissionUpdateIntervalCall {
29793                    newInterval,
29794                },
29795            )
29796        }
29797        ///Creates a new call builder for the [`setMinDelegateAmount`] function.
29798        pub fn setMinDelegateAmount(
29799            &self,
29800            newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
29801        ) -> alloy_contract::SolCallBuilder<&P, setMinDelegateAmountCall, N> {
29802            self.call_builder(
29803                &setMinDelegateAmountCall {
29804                    newMinDelegateAmount,
29805                },
29806            )
29807        }
29808        ///Creates a new call builder for the [`supportsInterface`] function.
29809        pub fn supportsInterface(
29810            &self,
29811            interfaceId: alloy::sol_types::private::FixedBytes<4>,
29812        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
29813            self.call_builder(
29814                &supportsInterfaceCall {
29815                    interfaceId,
29816                },
29817            )
29818        }
29819        ///Creates a new call builder for the [`token`] function.
29820        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
29821            self.call_builder(&tokenCall)
29822        }
29823        ///Creates a new call builder for the [`transferOwnership`] function.
29824        pub fn transferOwnership(
29825            &self,
29826            newOwner: alloy::sol_types::private::Address,
29827        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
29828            self.call_builder(&transferOwnershipCall { newOwner })
29829        }
29830        ///Creates a new call builder for the [`undelegate`] function.
29831        pub fn undelegate(
29832            &self,
29833            validator: alloy::sol_types::private::Address,
29834            amount: alloy::sol_types::private::primitives::aliases::U256,
29835        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
29836            self.call_builder(
29837                &undelegateCall {
29838                    validator,
29839                    amount,
29840                },
29841            )
29842        }
29843        ///Creates a new call builder for the [`undelegations`] function.
29844        pub fn undelegations(
29845            &self,
29846            validator: alloy::sol_types::private::Address,
29847            delegator: alloy::sol_types::private::Address,
29848        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
29849            self.call_builder(
29850                &undelegationsCall {
29851                    validator,
29852                    delegator,
29853                },
29854            )
29855        }
29856        ///Creates a new call builder for the [`unpause`] function.
29857        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
29858            self.call_builder(&unpauseCall)
29859        }
29860        ///Creates a new call builder for the [`updateCommission`] function.
29861        pub fn updateCommission(
29862            &self,
29863            newCommission: u16,
29864        ) -> alloy_contract::SolCallBuilder<&P, updateCommissionCall, N> {
29865            self.call_builder(
29866                &updateCommissionCall {
29867                    newCommission,
29868                },
29869            )
29870        }
29871        ///Creates a new call builder for the [`updateConsensusKeys`] function.
29872        pub fn updateConsensusKeys(
29873            &self,
29874            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29875            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29876            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29877        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
29878            self.call_builder(
29879                &updateConsensusKeysCall {
29880                    _0,
29881                    _1,
29882                    _2,
29883                },
29884            )
29885        }
29886        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
29887        pub fn updateConsensusKeysV2(
29888            &self,
29889            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
29890            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
29891            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
29892            schnorrSig: alloy::sol_types::private::Bytes,
29893        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysV2Call, N> {
29894            self.call_builder(
29895                &updateConsensusKeysV2Call {
29896                    blsVK,
29897                    schnorrVK,
29898                    blsSig,
29899                    schnorrSig,
29900                },
29901            )
29902        }
29903        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
29904        pub fn updateExitEscrowPeriod(
29905            &self,
29906            newExitEscrowPeriod: u64,
29907        ) -> alloy_contract::SolCallBuilder<&P, updateExitEscrowPeriodCall, N> {
29908            self.call_builder(
29909                &updateExitEscrowPeriodCall {
29910                    newExitEscrowPeriod,
29911                },
29912            )
29913        }
29914        ///Creates a new call builder for the [`updateMetadataUri`] function.
29915        pub fn updateMetadataUri(
29916            &self,
29917            metadataUri: alloy::sol_types::private::String,
29918        ) -> alloy_contract::SolCallBuilder<&P, updateMetadataUriCall, N> {
29919            self.call_builder(
29920                &updateMetadataUriCall {
29921                    metadataUri,
29922                },
29923            )
29924        }
29925        ///Creates a new call builder for the [`updateNetworkConfig`] function.
29926        pub fn updateNetworkConfig(
29927            &self,
29928            x25519Key: alloy::sol_types::private::FixedBytes<32>,
29929            p2pAddr: alloy::sol_types::private::String,
29930        ) -> alloy_contract::SolCallBuilder<&P, updateNetworkConfigCall, N> {
29931            self.call_builder(
29932                &updateNetworkConfigCall {
29933                    x25519Key,
29934                    p2pAddr,
29935                },
29936            )
29937        }
29938        ///Creates a new call builder for the [`updateP2pAddr`] function.
29939        pub fn updateP2pAddr(
29940            &self,
29941            p2pAddr: alloy::sol_types::private::String,
29942        ) -> alloy_contract::SolCallBuilder<&P, updateP2pAddrCall, N> {
29943            self.call_builder(&updateP2pAddrCall { p2pAddr })
29944        }
29945        ///Creates a new call builder for the [`updateX25519Key`] function.
29946        pub fn updateX25519Key(
29947            &self,
29948            x25519Key: alloy::sol_types::private::FixedBytes<32>,
29949        ) -> alloy_contract::SolCallBuilder<&P, updateX25519KeyCall, N> {
29950            self.call_builder(&updateX25519KeyCall { x25519Key })
29951        }
29952        ///Creates a new call builder for the [`upgradeToAndCall`] function.
29953        pub fn upgradeToAndCall(
29954            &self,
29955            newImplementation: alloy::sol_types::private::Address,
29956            data: alloy::sol_types::private::Bytes,
29957        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
29958            self.call_builder(
29959                &upgradeToAndCallCall {
29960                    newImplementation,
29961                    data,
29962                },
29963            )
29964        }
29965        ///Creates a new call builder for the [`validateMetadataUri`] function.
29966        pub fn validateMetadataUri(
29967            &self,
29968            metadataUri: alloy::sol_types::private::String,
29969        ) -> alloy_contract::SolCallBuilder<&P, validateMetadataUriCall, N> {
29970            self.call_builder(
29971                &validateMetadataUriCall {
29972                    metadataUri,
29973                },
29974            )
29975        }
29976        ///Creates a new call builder for the [`validateP2pAddr`] function.
29977        pub fn validateP2pAddr(
29978            &self,
29979            p2pAddr: alloy::sol_types::private::String,
29980        ) -> alloy_contract::SolCallBuilder<&P, validateP2pAddrCall, N> {
29981            self.call_builder(&validateP2pAddrCall { p2pAddr })
29982        }
29983        ///Creates a new call builder for the [`validatorExits`] function.
29984        pub fn validatorExits(
29985            &self,
29986            validator: alloy::sol_types::private::Address,
29987        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
29988            self.call_builder(&validatorExitsCall { validator })
29989        }
29990        ///Creates a new call builder for the [`validators`] function.
29991        pub fn validators(
29992            &self,
29993            account: alloy::sol_types::private::Address,
29994        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
29995            self.call_builder(&validatorsCall { account })
29996        }
29997        ///Creates a new call builder for the [`x25519Keys`] function.
29998        pub fn x25519Keys(
29999            &self,
30000            x25519Key: alloy::sol_types::private::FixedBytes<32>,
30001        ) -> alloy_contract::SolCallBuilder<&P, x25519KeysCall, N> {
30002            self.call_builder(&x25519KeysCall { x25519Key })
30003        }
30004    }
30005    /// Event filters.
30006    impl<
30007        P: alloy_contract::private::Provider<N>,
30008        N: alloy_contract::private::Network,
30009    > StakeTableV3Instance<P, N> {
30010        /// Creates a new event filter using this contract instance's provider and address.
30011        ///
30012        /// Note that the type can be any event, not just those defined in this contract.
30013        /// Prefer using the other methods for building type-safe event filters.
30014        pub fn event_filter<E: alloy_sol_types::SolEvent>(
30015            &self,
30016        ) -> alloy_contract::Event<&P, E, N> {
30017            alloy_contract::Event::new_sol(&self.provider, &self.address)
30018        }
30019        ///Creates a new event filter for the [`CommissionUpdated`] event.
30020        pub fn CommissionUpdated_filter(
30021            &self,
30022        ) -> alloy_contract::Event<&P, CommissionUpdated, N> {
30023            self.event_filter::<CommissionUpdated>()
30024        }
30025        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
30026        pub fn ConsensusKeysUpdated_filter(
30027            &self,
30028        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
30029            self.event_filter::<ConsensusKeysUpdated>()
30030        }
30031        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
30032        pub fn ConsensusKeysUpdatedV2_filter(
30033            &self,
30034        ) -> alloy_contract::Event<&P, ConsensusKeysUpdatedV2, N> {
30035            self.event_filter::<ConsensusKeysUpdatedV2>()
30036        }
30037        ///Creates a new event filter for the [`Delegated`] event.
30038        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
30039            self.event_filter::<Delegated>()
30040        }
30041        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
30042        pub fn ExitEscrowPeriodUpdated_filter(
30043            &self,
30044        ) -> alloy_contract::Event<&P, ExitEscrowPeriodUpdated, N> {
30045            self.event_filter::<ExitEscrowPeriodUpdated>()
30046        }
30047        ///Creates a new event filter for the [`Initialized`] event.
30048        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
30049            self.event_filter::<Initialized>()
30050        }
30051        ///Creates a new event filter for the [`MaxCommissionIncreaseUpdated`] event.
30052        pub fn MaxCommissionIncreaseUpdated_filter(
30053            &self,
30054        ) -> alloy_contract::Event<&P, MaxCommissionIncreaseUpdated, N> {
30055            self.event_filter::<MaxCommissionIncreaseUpdated>()
30056        }
30057        ///Creates a new event filter for the [`MetadataUriUpdated`] event.
30058        pub fn MetadataUriUpdated_filter(
30059            &self,
30060        ) -> alloy_contract::Event<&P, MetadataUriUpdated, N> {
30061            self.event_filter::<MetadataUriUpdated>()
30062        }
30063        ///Creates a new event filter for the [`MinCommissionUpdateIntervalUpdated`] event.
30064        pub fn MinCommissionUpdateIntervalUpdated_filter(
30065            &self,
30066        ) -> alloy_contract::Event<&P, MinCommissionUpdateIntervalUpdated, N> {
30067            self.event_filter::<MinCommissionUpdateIntervalUpdated>()
30068        }
30069        ///Creates a new event filter for the [`MinDelegateAmountUpdated`] event.
30070        pub fn MinDelegateAmountUpdated_filter(
30071            &self,
30072        ) -> alloy_contract::Event<&P, MinDelegateAmountUpdated, N> {
30073            self.event_filter::<MinDelegateAmountUpdated>()
30074        }
30075        ///Creates a new event filter for the [`OwnershipTransferred`] event.
30076        pub fn OwnershipTransferred_filter(
30077            &self,
30078        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
30079            self.event_filter::<OwnershipTransferred>()
30080        }
30081        ///Creates a new event filter for the [`P2pAddrUpdated`] event.
30082        pub fn P2pAddrUpdated_filter(
30083            &self,
30084        ) -> alloy_contract::Event<&P, P2pAddrUpdated, N> {
30085            self.event_filter::<P2pAddrUpdated>()
30086        }
30087        ///Creates a new event filter for the [`Paused`] event.
30088        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
30089            self.event_filter::<Paused>()
30090        }
30091        ///Creates a new event filter for the [`RoleAdminChanged`] event.
30092        pub fn RoleAdminChanged_filter(
30093            &self,
30094        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
30095            self.event_filter::<RoleAdminChanged>()
30096        }
30097        ///Creates a new event filter for the [`RoleGranted`] event.
30098        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
30099            self.event_filter::<RoleGranted>()
30100        }
30101        ///Creates a new event filter for the [`RoleRevoked`] event.
30102        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
30103            self.event_filter::<RoleRevoked>()
30104        }
30105        ///Creates a new event filter for the [`Undelegated`] event.
30106        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
30107            self.event_filter::<Undelegated>()
30108        }
30109        ///Creates a new event filter for the [`UndelegatedV2`] event.
30110        pub fn UndelegatedV2_filter(
30111            &self,
30112        ) -> alloy_contract::Event<&P, UndelegatedV2, N> {
30113            self.event_filter::<UndelegatedV2>()
30114        }
30115        ///Creates a new event filter for the [`Unpaused`] event.
30116        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
30117            self.event_filter::<Unpaused>()
30118        }
30119        ///Creates a new event filter for the [`Upgraded`] event.
30120        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
30121            self.event_filter::<Upgraded>()
30122        }
30123        ///Creates a new event filter for the [`ValidatorExit`] event.
30124        pub fn ValidatorExit_filter(
30125            &self,
30126        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
30127            self.event_filter::<ValidatorExit>()
30128        }
30129        ///Creates a new event filter for the [`ValidatorExitClaimed`] event.
30130        pub fn ValidatorExitClaimed_filter(
30131            &self,
30132        ) -> alloy_contract::Event<&P, ValidatorExitClaimed, N> {
30133            self.event_filter::<ValidatorExitClaimed>()
30134        }
30135        ///Creates a new event filter for the [`ValidatorExitV2`] event.
30136        pub fn ValidatorExitV2_filter(
30137            &self,
30138        ) -> alloy_contract::Event<&P, ValidatorExitV2, N> {
30139            self.event_filter::<ValidatorExitV2>()
30140        }
30141        ///Creates a new event filter for the [`ValidatorRegistered`] event.
30142        pub fn ValidatorRegistered_filter(
30143            &self,
30144        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
30145            self.event_filter::<ValidatorRegistered>()
30146        }
30147        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
30148        pub fn ValidatorRegisteredV2_filter(
30149            &self,
30150        ) -> alloy_contract::Event<&P, ValidatorRegisteredV2, N> {
30151            self.event_filter::<ValidatorRegisteredV2>()
30152        }
30153        ///Creates a new event filter for the [`ValidatorRegisteredV3`] event.
30154        pub fn ValidatorRegisteredV3_filter(
30155            &self,
30156        ) -> alloy_contract::Event<&P, ValidatorRegisteredV3, N> {
30157            self.event_filter::<ValidatorRegisteredV3>()
30158        }
30159        ///Creates a new event filter for the [`Withdrawal`] event.
30160        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
30161            self.event_filter::<Withdrawal>()
30162        }
30163        ///Creates a new event filter for the [`WithdrawalClaimed`] event.
30164        pub fn WithdrawalClaimed_filter(
30165            &self,
30166        ) -> alloy_contract::Event<&P, WithdrawalClaimed, N> {
30167            self.event_filter::<WithdrawalClaimed>()
30168        }
30169        ///Creates a new event filter for the [`X25519KeyUpdated`] event.
30170        pub fn X25519KeyUpdated_filter(
30171            &self,
30172        ) -> alloy_contract::Event<&P, X25519KeyUpdated, N> {
30173            self.event_filter::<X25519KeyUpdated>()
30174        }
30175    }
30176}