hotshot_contract_adapter/bindings/
stake_table.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        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    /**```solidity
169struct G1Point { BaseField x; BaseField y; }
170```*/
171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
172    #[derive(Clone)]
173    pub struct G1Point {
174        #[allow(missing_docs)]
175        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
176        #[allow(missing_docs)]
177        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
178    }
179    #[allow(
180        non_camel_case_types,
181        non_snake_case,
182        clippy::pub_underscore_fields,
183        clippy::style
184    )]
185    const _: () = {
186        use alloy::sol_types as alloy_sol_types;
187        #[doc(hidden)]
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        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
395        #[doc(hidden)]
396        type UnderlyingRustTuple<'a> = (
397            <BaseField as alloy::sol_types::SolType>::RustType,
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        );
402        #[cfg(test)]
403        #[allow(dead_code, unreachable_patterns)]
404        fn _type_assertion(
405            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
406        ) {
407            match _t {
408                alloy_sol_types::private::AssertTypeEq::<
409                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
410                >(_) => {}
411            }
412        }
413        #[automatically_derived]
414        #[doc(hidden)]
415        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
416            fn from(value: G2Point) -> Self {
417                (value.x0, value.x1, value.y0, value.y1)
418            }
419        }
420        #[automatically_derived]
421        #[doc(hidden)]
422        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
423            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
424                Self {
425                    x0: tuple.0,
426                    x1: tuple.1,
427                    y0: tuple.2,
428                    y1: tuple.3,
429                }
430            }
431        }
432        #[automatically_derived]
433        impl alloy_sol_types::SolValue for G2Point {
434            type SolType = Self;
435        }
436        #[automatically_derived]
437        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
438            #[inline]
439            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
440                (
441                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
442                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
443                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
444                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
445                )
446            }
447            #[inline]
448            fn stv_abi_encoded_size(&self) -> usize {
449                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
450                    return size;
451                }
452                let tuple = <UnderlyingRustTuple<
453                    '_,
454                > as ::core::convert::From<Self>>::from(self.clone());
455                <UnderlyingSolTuple<
456                    '_,
457                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
458            }
459            #[inline]
460            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
461                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
462            }
463            #[inline]
464            fn stv_abi_encode_packed_to(
465                &self,
466                out: &mut alloy_sol_types::private::Vec<u8>,
467            ) {
468                let tuple = <UnderlyingRustTuple<
469                    '_,
470                > as ::core::convert::From<Self>>::from(self.clone());
471                <UnderlyingSolTuple<
472                    '_,
473                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
474            }
475            #[inline]
476            fn stv_abi_packed_encoded_size(&self) -> usize {
477                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
478                    return size;
479                }
480                let tuple = <UnderlyingRustTuple<
481                    '_,
482                > as ::core::convert::From<Self>>::from(self.clone());
483                <UnderlyingSolTuple<
484                    '_,
485                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
486            }
487        }
488        #[automatically_derived]
489        impl alloy_sol_types::SolType for G2Point {
490            type RustType = Self;
491            type Token<'a> = <UnderlyingSolTuple<
492                'a,
493            > as alloy_sol_types::SolType>::Token<'a>;
494            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
495            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
496                '_,
497            > as alloy_sol_types::SolType>::ENCODED_SIZE;
498            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
499                '_,
500            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
501            #[inline]
502            fn valid_token(token: &Self::Token<'_>) -> bool {
503                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
504            }
505            #[inline]
506            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
507                let tuple = <UnderlyingSolTuple<
508                    '_,
509                > as alloy_sol_types::SolType>::detokenize(token);
510                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
511            }
512        }
513        #[automatically_derived]
514        impl alloy_sol_types::SolStruct for G2Point {
515            const NAME: &'static str = "G2Point";
516            #[inline]
517            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
518                alloy_sol_types::private::Cow::Borrowed(
519                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
520                )
521            }
522            #[inline]
523            fn eip712_components() -> alloy_sol_types::private::Vec<
524                alloy_sol_types::private::Cow<'static, str>,
525            > {
526                alloy_sol_types::private::Vec::new()
527            }
528            #[inline]
529            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
530                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
531            }
532            #[inline]
533            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
534                [
535                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
536                        .0,
537                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
538                        .0,
539                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
540                        .0,
541                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
542                ]
543                    .concat()
544            }
545        }
546        #[automatically_derived]
547        impl alloy_sol_types::EventTopic for G2Point {
548            #[inline]
549            fn topic_preimage_length(rust: &Self::RustType) -> usize {
550                0usize
551                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
552                        &rust.x0,
553                    )
554                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
555                        &rust.x1,
556                    )
557                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
558                        &rust.y0,
559                    )
560                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
561                        &rust.y1,
562                    )
563            }
564            #[inline]
565            fn encode_topic_preimage(
566                rust: &Self::RustType,
567                out: &mut alloy_sol_types::private::Vec<u8>,
568            ) {
569                out.reserve(
570                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
571                );
572                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
573                    &rust.x0,
574                    out,
575                );
576                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
577                    &rust.x1,
578                    out,
579                );
580                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
581                    &rust.y0,
582                    out,
583                );
584                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
585                    &rust.y1,
586                    out,
587                );
588            }
589            #[inline]
590            fn encode_topic(
591                rust: &Self::RustType,
592            ) -> alloy_sol_types::abi::token::WordToken {
593                let mut out = alloy_sol_types::private::Vec::new();
594                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
595                    rust,
596                    &mut out,
597                );
598                alloy_sol_types::abi::token::WordToken(
599                    alloy_sol_types::private::keccak256(out),
600                )
601            }
602        }
603    };
604    use alloy::contract as alloy_contract;
605    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
606
607See the [wrapper's documentation](`BN254Instance`) for more details.*/
608    #[inline]
609    pub const fn new<
610        P: alloy_contract::private::Provider<N>,
611        N: alloy_contract::private::Network,
612    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
613        BN254Instance::<P, N>::new(address, provider)
614    }
615    /**A [`BN254`](self) instance.
616
617Contains type-safe methods for interacting with an on-chain instance of the
618[`BN254`](self) contract located at a given `address`, using a given
619provider `P`.
620
621If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
622documentation on how to provide it), the `deploy` and `deploy_builder` methods can
623be used to deploy a new instance of the contract.
624
625See the [module-level documentation](self) for all the available methods.*/
626    #[derive(Clone)]
627    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
628        address: alloy_sol_types::private::Address,
629        provider: P,
630        _network: ::core::marker::PhantomData<N>,
631    }
632    #[automatically_derived]
633    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
634        #[inline]
635        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
636            f.debug_tuple("BN254Instance").field(&self.address).finish()
637        }
638    }
639    /// Instantiation and getters/setters.
640    #[automatically_derived]
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,
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    #[automatically_derived]
693    impl<
694        P: alloy_contract::private::Provider<N>,
695        N: alloy_contract::private::Network,
696    > BN254Instance<P, N> {
697        /// Creates a new call builder using this contract instance's provider and address.
698        ///
699        /// Note that the call can be any function call, not just those defined in this
700        /// contract. Prefer using the other methods for building type-safe contract calls.
701        pub fn call_builder<C: alloy_sol_types::SolCall>(
702            &self,
703            call: &C,
704        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
705            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
706        }
707    }
708    /// Event filters.
709    #[automatically_derived]
710    impl<
711        P: alloy_contract::private::Provider<N>,
712        N: alloy_contract::private::Network,
713    > BN254Instance<P, N> {
714        /// Creates a new event filter using this contract instance's provider and address.
715        ///
716        /// Note that the type can be any event, not just those defined in this contract.
717        /// Prefer using the other methods for building type-safe event filters.
718        pub fn event_filter<E: alloy_sol_types::SolEvent>(
719            &self,
720        ) -> alloy_contract::Event<&P, E, N> {
721            alloy_contract::Event::new_sol(&self.provider, &self.address)
722        }
723    }
724}
725///Module containing a contract's types and functions.
726/**
727
728```solidity
729library EdOnBN254 {
730    struct EdOnBN254Point { uint256 x; uint256 y; }
731}
732```*/
733#[allow(
734    non_camel_case_types,
735    non_snake_case,
736    clippy::pub_underscore_fields,
737    clippy::style,
738    clippy::empty_structs_with_brackets
739)]
740pub mod EdOnBN254 {
741    use super::*;
742    use alloy::sol_types as alloy_sol_types;
743    #[derive(serde::Serialize, serde::Deserialize)]
744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
745    /**```solidity
746struct EdOnBN254Point { uint256 x; uint256 y; }
747```*/
748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
749    #[derive(Clone)]
750    pub struct EdOnBN254Point {
751        #[allow(missing_docs)]
752        pub x: alloy::sol_types::private::primitives::aliases::U256,
753        #[allow(missing_docs)]
754        pub y: alloy::sol_types::private::primitives::aliases::U256,
755    }
756    #[allow(
757        non_camel_case_types,
758        non_snake_case,
759        clippy::pub_underscore_fields,
760        clippy::style
761    )]
762    const _: () = {
763        use alloy::sol_types as alloy_sol_types;
764        #[doc(hidden)]
765        type UnderlyingSolTuple<'a> = (
766            alloy::sol_types::sol_data::Uint<256>,
767            alloy::sol_types::sol_data::Uint<256>,
768        );
769        #[doc(hidden)]
770        type UnderlyingRustTuple<'a> = (
771            alloy::sol_types::private::primitives::aliases::U256,
772            alloy::sol_types::private::primitives::aliases::U256,
773        );
774        #[cfg(test)]
775        #[allow(dead_code, unreachable_patterns)]
776        fn _type_assertion(
777            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
778        ) {
779            match _t {
780                alloy_sol_types::private::AssertTypeEq::<
781                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
782                >(_) => {}
783            }
784        }
785        #[automatically_derived]
786        #[doc(hidden)]
787        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
788            fn from(value: EdOnBN254Point) -> Self {
789                (value.x, value.y)
790            }
791        }
792        #[automatically_derived]
793        #[doc(hidden)]
794        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
796                Self { x: tuple.0, y: tuple.1 }
797            }
798        }
799        #[automatically_derived]
800        impl alloy_sol_types::SolValue for EdOnBN254Point {
801            type SolType = Self;
802        }
803        #[automatically_derived]
804        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
805            #[inline]
806            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
807                (
808                    <alloy::sol_types::sol_data::Uint<
809                        256,
810                    > as alloy_sol_types::SolType>::tokenize(&self.x),
811                    <alloy::sol_types::sol_data::Uint<
812                        256,
813                    > as alloy_sol_types::SolType>::tokenize(&self.y),
814                )
815            }
816            #[inline]
817            fn stv_abi_encoded_size(&self) -> usize {
818                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
819                    return size;
820                }
821                let tuple = <UnderlyingRustTuple<
822                    '_,
823                > as ::core::convert::From<Self>>::from(self.clone());
824                <UnderlyingSolTuple<
825                    '_,
826                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
827            }
828            #[inline]
829            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
830                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
831            }
832            #[inline]
833            fn stv_abi_encode_packed_to(
834                &self,
835                out: &mut alloy_sol_types::private::Vec<u8>,
836            ) {
837                let tuple = <UnderlyingRustTuple<
838                    '_,
839                > as ::core::convert::From<Self>>::from(self.clone());
840                <UnderlyingSolTuple<
841                    '_,
842                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
843            }
844            #[inline]
845            fn stv_abi_packed_encoded_size(&self) -> usize {
846                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
847                    return size;
848                }
849                let tuple = <UnderlyingRustTuple<
850                    '_,
851                > as ::core::convert::From<Self>>::from(self.clone());
852                <UnderlyingSolTuple<
853                    '_,
854                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
855            }
856        }
857        #[automatically_derived]
858        impl alloy_sol_types::SolType for EdOnBN254Point {
859            type RustType = Self;
860            type Token<'a> = <UnderlyingSolTuple<
861                'a,
862            > as alloy_sol_types::SolType>::Token<'a>;
863            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
864            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
865                '_,
866            > as alloy_sol_types::SolType>::ENCODED_SIZE;
867            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
868                '_,
869            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
870            #[inline]
871            fn valid_token(token: &Self::Token<'_>) -> bool {
872                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
873            }
874            #[inline]
875            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
876                let tuple = <UnderlyingSolTuple<
877                    '_,
878                > as alloy_sol_types::SolType>::detokenize(token);
879                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
880            }
881        }
882        #[automatically_derived]
883        impl alloy_sol_types::SolStruct for EdOnBN254Point {
884            const NAME: &'static str = "EdOnBN254Point";
885            #[inline]
886            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
887                alloy_sol_types::private::Cow::Borrowed(
888                    "EdOnBN254Point(uint256 x,uint256 y)",
889                )
890            }
891            #[inline]
892            fn eip712_components() -> alloy_sol_types::private::Vec<
893                alloy_sol_types::private::Cow<'static, str>,
894            > {
895                alloy_sol_types::private::Vec::new()
896            }
897            #[inline]
898            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
899                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
900            }
901            #[inline]
902            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903                [
904                    <alloy::sol_types::sol_data::Uint<
905                        256,
906                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
907                        .0,
908                    <alloy::sol_types::sol_data::Uint<
909                        256,
910                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
911                        .0,
912                ]
913                    .concat()
914            }
915        }
916        #[automatically_derived]
917        impl alloy_sol_types::EventTopic for EdOnBN254Point {
918            #[inline]
919            fn topic_preimage_length(rust: &Self::RustType) -> usize {
920                0usize
921                    + <alloy::sol_types::sol_data::Uint<
922                        256,
923                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
924                    + <alloy::sol_types::sol_data::Uint<
925                        256,
926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
927            }
928            #[inline]
929            fn encode_topic_preimage(
930                rust: &Self::RustType,
931                out: &mut alloy_sol_types::private::Vec<u8>,
932            ) {
933                out.reserve(
934                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
935                );
936                <alloy::sol_types::sol_data::Uint<
937                    256,
938                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
939                <alloy::sol_types::sol_data::Uint<
940                    256,
941                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
942            }
943            #[inline]
944            fn encode_topic(
945                rust: &Self::RustType,
946            ) -> alloy_sol_types::abi::token::WordToken {
947                let mut out = alloy_sol_types::private::Vec::new();
948                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
949                    rust,
950                    &mut out,
951                );
952                alloy_sol_types::abi::token::WordToken(
953                    alloy_sol_types::private::keccak256(out),
954                )
955            }
956        }
957    };
958    use alloy::contract as alloy_contract;
959    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
960
961See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
962    #[inline]
963    pub const fn new<
964        P: alloy_contract::private::Provider<N>,
965        N: alloy_contract::private::Network,
966    >(
967        address: alloy_sol_types::private::Address,
968        provider: P,
969    ) -> EdOnBN254Instance<P, N> {
970        EdOnBN254Instance::<P, N>::new(address, provider)
971    }
972    /**A [`EdOnBN254`](self) instance.
973
974Contains type-safe methods for interacting with an on-chain instance of the
975[`EdOnBN254`](self) contract located at a given `address`, using a given
976provider `P`.
977
978If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
979documentation on how to provide it), the `deploy` and `deploy_builder` methods can
980be used to deploy a new instance of the contract.
981
982See the [module-level documentation](self) for all the available methods.*/
983    #[derive(Clone)]
984    pub struct EdOnBN254Instance<P, N = alloy_contract::private::Ethereum> {
985        address: alloy_sol_types::private::Address,
986        provider: P,
987        _network: ::core::marker::PhantomData<N>,
988    }
989    #[automatically_derived]
990    impl<P, N> ::core::fmt::Debug for EdOnBN254Instance<P, N> {
991        #[inline]
992        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
993            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
994        }
995    }
996    /// Instantiation and getters/setters.
997    #[automatically_derived]
998    impl<
999        P: alloy_contract::private::Provider<N>,
1000        N: alloy_contract::private::Network,
1001    > EdOnBN254Instance<P, N> {
1002        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
1003
1004See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
1005        #[inline]
1006        pub const fn new(
1007            address: alloy_sol_types::private::Address,
1008            provider: P,
1009        ) -> Self {
1010            Self {
1011                address,
1012                provider,
1013                _network: ::core::marker::PhantomData,
1014            }
1015        }
1016        /// Returns a reference to the address.
1017        #[inline]
1018        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1019            &self.address
1020        }
1021        /// Sets the address.
1022        #[inline]
1023        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1024            self.address = address;
1025        }
1026        /// Sets the address and returns `self`.
1027        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1028            self.set_address(address);
1029            self
1030        }
1031        /// Returns a reference to the provider.
1032        #[inline]
1033        pub const fn provider(&self) -> &P {
1034            &self.provider
1035        }
1036    }
1037    impl<P: ::core::clone::Clone, N> EdOnBN254Instance<&P, N> {
1038        /// Clones the provider and returns a new instance with the cloned provider.
1039        #[inline]
1040        pub fn with_cloned_provider(self) -> EdOnBN254Instance<P, N> {
1041            EdOnBN254Instance {
1042                address: self.address,
1043                provider: ::core::clone::Clone::clone(&self.provider),
1044                _network: ::core::marker::PhantomData,
1045            }
1046        }
1047    }
1048    /// Function calls.
1049    #[automatically_derived]
1050    impl<
1051        P: alloy_contract::private::Provider<N>,
1052        N: alloy_contract::private::Network,
1053    > EdOnBN254Instance<P, N> {
1054        /// Creates a new call builder using this contract instance's provider and address.
1055        ///
1056        /// Note that the call can be any function call, not just those defined in this
1057        /// contract. Prefer using the other methods for building type-safe contract calls.
1058        pub fn call_builder<C: alloy_sol_types::SolCall>(
1059            &self,
1060            call: &C,
1061        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1062            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1063        }
1064    }
1065    /// Event filters.
1066    #[automatically_derived]
1067    impl<
1068        P: alloy_contract::private::Provider<N>,
1069        N: alloy_contract::private::Network,
1070    > EdOnBN254Instance<P, N> {
1071        /// Creates a new event filter using this contract instance's provider and address.
1072        ///
1073        /// Note that the type can be any event, not just those defined in this contract.
1074        /// Prefer using the other methods for building type-safe event filters.
1075        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1076            &self,
1077        ) -> alloy_contract::Event<&P, E, N> {
1078            alloy_contract::Event::new_sol(&self.provider, &self.address)
1079        }
1080    }
1081}
1082/**
1083
1084Generated by the following Solidity interface...
1085```solidity
1086library BN254 {
1087    type BaseField is uint256;
1088    struct G1Point {
1089        BaseField x;
1090        BaseField y;
1091    }
1092    struct G2Point {
1093        BaseField x0;
1094        BaseField x1;
1095        BaseField y0;
1096        BaseField y1;
1097    }
1098}
1099
1100library EdOnBN254 {
1101    struct EdOnBN254Point {
1102        uint256 x;
1103        uint256 y;
1104    }
1105}
1106
1107interface StakeTable {
1108    type ValidatorStatus is uint8;
1109
1110    error AddressEmptyCode(address target);
1111    error BLSSigVerificationFailed();
1112    error BN254PairingProdFailed();
1113    error BlsKeyAlreadyUsed();
1114    error ERC1967InvalidImplementation(address implementation);
1115    error ERC1967NonPayable();
1116    error ExitEscrowPeriodInvalid();
1117    error FailedInnerCall();
1118    error InsufficientAllowance(uint256, uint256);
1119    error InsufficientBalance(uint256);
1120    error InvalidCommission();
1121    error InvalidG1();
1122    error InvalidInitialization();
1123    error InvalidSchnorrVK();
1124    error NotInitializing();
1125    error NothingToWithdraw();
1126    error OwnableInvalidOwner(address owner);
1127    error OwnableUnauthorizedAccount(address account);
1128    error OwnershipCannotBeRenounced();
1129    error PowPrecompileFailed();
1130    error PrematureWithdrawal();
1131    error UUPSUnauthorizedCallContext();
1132    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1133    error UndelegationAlreadyExists();
1134    error ValidatorAlreadyExited();
1135    error ValidatorAlreadyRegistered();
1136    error ValidatorInactive();
1137    error ValidatorNotExited();
1138    error ZeroAddress();
1139    error ZeroAmount();
1140
1141    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1142    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1143    event Initialized(uint64 version);
1144    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1145    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1146    event Upgraded(address indexed implementation);
1147    event ValidatorExit(address indexed validator);
1148    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1149    event Withdrawal(address indexed account, uint256 amount);
1150
1151    constructor();
1152
1153    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1154    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1155    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1156    function claimValidatorExit(address validator) external;
1157    function claimWithdrawal(address validator) external;
1158    function delegate(address validator, uint256 amount) external;
1159    function delegations(address validator, address delegator) external view returns (uint256 amount);
1160    function deregisterValidator() external;
1161    function exitEscrowPeriod() external view returns (uint256);
1162    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1163    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1164    function initializedAtBlock() external view returns (uint256);
1165    function lightClient() external view returns (address);
1166    function owner() external view returns (address);
1167    function proxiableUUID() external view returns (bytes32);
1168    function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
1169    function renounceOwnership() external;
1170    function token() external view returns (address);
1171    function transferOwnership(address newOwner) external;
1172    function undelegate(address validator, uint256 amount) external;
1173    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1174    function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
1175    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1176    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1177    function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
1178}
1179```
1180
1181...which was generated by the following JSON ABI:
1182```json
1183[
1184  {
1185    "type": "constructor",
1186    "inputs": [],
1187    "stateMutability": "nonpayable"
1188  },
1189  {
1190    "type": "function",
1191    "name": "UPGRADE_INTERFACE_VERSION",
1192    "inputs": [],
1193    "outputs": [
1194      {
1195        "name": "",
1196        "type": "string",
1197        "internalType": "string"
1198      }
1199    ],
1200    "stateMutability": "view"
1201  },
1202  {
1203    "type": "function",
1204    "name": "_hashBlsKey",
1205    "inputs": [
1206      {
1207        "name": "blsVK",
1208        "type": "tuple",
1209        "internalType": "struct BN254.G2Point",
1210        "components": [
1211          {
1212            "name": "x0",
1213            "type": "uint256",
1214            "internalType": "BN254.BaseField"
1215          },
1216          {
1217            "name": "x1",
1218            "type": "uint256",
1219            "internalType": "BN254.BaseField"
1220          },
1221          {
1222            "name": "y0",
1223            "type": "uint256",
1224            "internalType": "BN254.BaseField"
1225          },
1226          {
1227            "name": "y1",
1228            "type": "uint256",
1229            "internalType": "BN254.BaseField"
1230          }
1231        ]
1232      }
1233    ],
1234    "outputs": [
1235      {
1236        "name": "",
1237        "type": "bytes32",
1238        "internalType": "bytes32"
1239      }
1240    ],
1241    "stateMutability": "pure"
1242  },
1243  {
1244    "type": "function",
1245    "name": "blsKeys",
1246    "inputs": [
1247      {
1248        "name": "blsKeyHash",
1249        "type": "bytes32",
1250        "internalType": "bytes32"
1251      }
1252    ],
1253    "outputs": [
1254      {
1255        "name": "used",
1256        "type": "bool",
1257        "internalType": "bool"
1258      }
1259    ],
1260    "stateMutability": "view"
1261  },
1262  {
1263    "type": "function",
1264    "name": "claimValidatorExit",
1265    "inputs": [
1266      {
1267        "name": "validator",
1268        "type": "address",
1269        "internalType": "address"
1270      }
1271    ],
1272    "outputs": [],
1273    "stateMutability": "nonpayable"
1274  },
1275  {
1276    "type": "function",
1277    "name": "claimWithdrawal",
1278    "inputs": [
1279      {
1280        "name": "validator",
1281        "type": "address",
1282        "internalType": "address"
1283      }
1284    ],
1285    "outputs": [],
1286    "stateMutability": "nonpayable"
1287  },
1288  {
1289    "type": "function",
1290    "name": "delegate",
1291    "inputs": [
1292      {
1293        "name": "validator",
1294        "type": "address",
1295        "internalType": "address"
1296      },
1297      {
1298        "name": "amount",
1299        "type": "uint256",
1300        "internalType": "uint256"
1301      }
1302    ],
1303    "outputs": [],
1304    "stateMutability": "nonpayable"
1305  },
1306  {
1307    "type": "function",
1308    "name": "delegations",
1309    "inputs": [
1310      {
1311        "name": "validator",
1312        "type": "address",
1313        "internalType": "address"
1314      },
1315      {
1316        "name": "delegator",
1317        "type": "address",
1318        "internalType": "address"
1319      }
1320    ],
1321    "outputs": [
1322      {
1323        "name": "amount",
1324        "type": "uint256",
1325        "internalType": "uint256"
1326      }
1327    ],
1328    "stateMutability": "view"
1329  },
1330  {
1331    "type": "function",
1332    "name": "deregisterValidator",
1333    "inputs": [],
1334    "outputs": [],
1335    "stateMutability": "nonpayable"
1336  },
1337  {
1338    "type": "function",
1339    "name": "exitEscrowPeriod",
1340    "inputs": [],
1341    "outputs": [
1342      {
1343        "name": "",
1344        "type": "uint256",
1345        "internalType": "uint256"
1346      }
1347    ],
1348    "stateMutability": "view"
1349  },
1350  {
1351    "type": "function",
1352    "name": "getVersion",
1353    "inputs": [],
1354    "outputs": [
1355      {
1356        "name": "majorVersion",
1357        "type": "uint8",
1358        "internalType": "uint8"
1359      },
1360      {
1361        "name": "minorVersion",
1362        "type": "uint8",
1363        "internalType": "uint8"
1364      },
1365      {
1366        "name": "patchVersion",
1367        "type": "uint8",
1368        "internalType": "uint8"
1369      }
1370    ],
1371    "stateMutability": "pure"
1372  },
1373  {
1374    "type": "function",
1375    "name": "initialize",
1376    "inputs": [
1377      {
1378        "name": "_tokenAddress",
1379        "type": "address",
1380        "internalType": "address"
1381      },
1382      {
1383        "name": "_lightClientAddress",
1384        "type": "address",
1385        "internalType": "address"
1386      },
1387      {
1388        "name": "_exitEscrowPeriod",
1389        "type": "uint256",
1390        "internalType": "uint256"
1391      },
1392      {
1393        "name": "_timelock",
1394        "type": "address",
1395        "internalType": "address"
1396      }
1397    ],
1398    "outputs": [],
1399    "stateMutability": "nonpayable"
1400  },
1401  {
1402    "type": "function",
1403    "name": "initializedAtBlock",
1404    "inputs": [],
1405    "outputs": [
1406      {
1407        "name": "",
1408        "type": "uint256",
1409        "internalType": "uint256"
1410      }
1411    ],
1412    "stateMutability": "view"
1413  },
1414  {
1415    "type": "function",
1416    "name": "lightClient",
1417    "inputs": [],
1418    "outputs": [
1419      {
1420        "name": "",
1421        "type": "address",
1422        "internalType": "contract ILightClient"
1423      }
1424    ],
1425    "stateMutability": "view"
1426  },
1427  {
1428    "type": "function",
1429    "name": "owner",
1430    "inputs": [],
1431    "outputs": [
1432      {
1433        "name": "",
1434        "type": "address",
1435        "internalType": "address"
1436      }
1437    ],
1438    "stateMutability": "view"
1439  },
1440  {
1441    "type": "function",
1442    "name": "proxiableUUID",
1443    "inputs": [],
1444    "outputs": [
1445      {
1446        "name": "",
1447        "type": "bytes32",
1448        "internalType": "bytes32"
1449      }
1450    ],
1451    "stateMutability": "view"
1452  },
1453  {
1454    "type": "function",
1455    "name": "registerValidator",
1456    "inputs": [
1457      {
1458        "name": "blsVK",
1459        "type": "tuple",
1460        "internalType": "struct BN254.G2Point",
1461        "components": [
1462          {
1463            "name": "x0",
1464            "type": "uint256",
1465            "internalType": "BN254.BaseField"
1466          },
1467          {
1468            "name": "x1",
1469            "type": "uint256",
1470            "internalType": "BN254.BaseField"
1471          },
1472          {
1473            "name": "y0",
1474            "type": "uint256",
1475            "internalType": "BN254.BaseField"
1476          },
1477          {
1478            "name": "y1",
1479            "type": "uint256",
1480            "internalType": "BN254.BaseField"
1481          }
1482        ]
1483      },
1484      {
1485        "name": "schnorrVK",
1486        "type": "tuple",
1487        "internalType": "struct EdOnBN254.EdOnBN254Point",
1488        "components": [
1489          {
1490            "name": "x",
1491            "type": "uint256",
1492            "internalType": "uint256"
1493          },
1494          {
1495            "name": "y",
1496            "type": "uint256",
1497            "internalType": "uint256"
1498          }
1499        ]
1500      },
1501      {
1502        "name": "blsSig",
1503        "type": "tuple",
1504        "internalType": "struct BN254.G1Point",
1505        "components": [
1506          {
1507            "name": "x",
1508            "type": "uint256",
1509            "internalType": "BN254.BaseField"
1510          },
1511          {
1512            "name": "y",
1513            "type": "uint256",
1514            "internalType": "BN254.BaseField"
1515          }
1516        ]
1517      },
1518      {
1519        "name": "commission",
1520        "type": "uint16",
1521        "internalType": "uint16"
1522      }
1523    ],
1524    "outputs": [],
1525    "stateMutability": "nonpayable"
1526  },
1527  {
1528    "type": "function",
1529    "name": "renounceOwnership",
1530    "inputs": [],
1531    "outputs": [],
1532    "stateMutability": "nonpayable"
1533  },
1534  {
1535    "type": "function",
1536    "name": "token",
1537    "inputs": [],
1538    "outputs": [
1539      {
1540        "name": "",
1541        "type": "address",
1542        "internalType": "contract ERC20"
1543      }
1544    ],
1545    "stateMutability": "view"
1546  },
1547  {
1548    "type": "function",
1549    "name": "transferOwnership",
1550    "inputs": [
1551      {
1552        "name": "newOwner",
1553        "type": "address",
1554        "internalType": "address"
1555      }
1556    ],
1557    "outputs": [],
1558    "stateMutability": "nonpayable"
1559  },
1560  {
1561    "type": "function",
1562    "name": "undelegate",
1563    "inputs": [
1564      {
1565        "name": "validator",
1566        "type": "address",
1567        "internalType": "address"
1568      },
1569      {
1570        "name": "amount",
1571        "type": "uint256",
1572        "internalType": "uint256"
1573      }
1574    ],
1575    "outputs": [],
1576    "stateMutability": "nonpayable"
1577  },
1578  {
1579    "type": "function",
1580    "name": "undelegations",
1581    "inputs": [
1582      {
1583        "name": "validator",
1584        "type": "address",
1585        "internalType": "address"
1586      },
1587      {
1588        "name": "delegator",
1589        "type": "address",
1590        "internalType": "address"
1591      }
1592    ],
1593    "outputs": [
1594      {
1595        "name": "amount",
1596        "type": "uint256",
1597        "internalType": "uint256"
1598      },
1599      {
1600        "name": "unlocksAt",
1601        "type": "uint256",
1602        "internalType": "uint256"
1603      }
1604    ],
1605    "stateMutability": "view"
1606  },
1607  {
1608    "type": "function",
1609    "name": "updateConsensusKeys",
1610    "inputs": [
1611      {
1612        "name": "newBlsVK",
1613        "type": "tuple",
1614        "internalType": "struct BN254.G2Point",
1615        "components": [
1616          {
1617            "name": "x0",
1618            "type": "uint256",
1619            "internalType": "BN254.BaseField"
1620          },
1621          {
1622            "name": "x1",
1623            "type": "uint256",
1624            "internalType": "BN254.BaseField"
1625          },
1626          {
1627            "name": "y0",
1628            "type": "uint256",
1629            "internalType": "BN254.BaseField"
1630          },
1631          {
1632            "name": "y1",
1633            "type": "uint256",
1634            "internalType": "BN254.BaseField"
1635          }
1636        ]
1637      },
1638      {
1639        "name": "newSchnorrVK",
1640        "type": "tuple",
1641        "internalType": "struct EdOnBN254.EdOnBN254Point",
1642        "components": [
1643          {
1644            "name": "x",
1645            "type": "uint256",
1646            "internalType": "uint256"
1647          },
1648          {
1649            "name": "y",
1650            "type": "uint256",
1651            "internalType": "uint256"
1652          }
1653        ]
1654      },
1655      {
1656        "name": "newBlsSig",
1657        "type": "tuple",
1658        "internalType": "struct BN254.G1Point",
1659        "components": [
1660          {
1661            "name": "x",
1662            "type": "uint256",
1663            "internalType": "BN254.BaseField"
1664          },
1665          {
1666            "name": "y",
1667            "type": "uint256",
1668            "internalType": "BN254.BaseField"
1669          }
1670        ]
1671      }
1672    ],
1673    "outputs": [],
1674    "stateMutability": "nonpayable"
1675  },
1676  {
1677    "type": "function",
1678    "name": "upgradeToAndCall",
1679    "inputs": [
1680      {
1681        "name": "newImplementation",
1682        "type": "address",
1683        "internalType": "address"
1684      },
1685      {
1686        "name": "data",
1687        "type": "bytes",
1688        "internalType": "bytes"
1689      }
1690    ],
1691    "outputs": [],
1692    "stateMutability": "payable"
1693  },
1694  {
1695    "type": "function",
1696    "name": "validatorExits",
1697    "inputs": [
1698      {
1699        "name": "validator",
1700        "type": "address",
1701        "internalType": "address"
1702      }
1703    ],
1704    "outputs": [
1705      {
1706        "name": "unlocksAt",
1707        "type": "uint256",
1708        "internalType": "uint256"
1709      }
1710    ],
1711    "stateMutability": "view"
1712  },
1713  {
1714    "type": "function",
1715    "name": "validators",
1716    "inputs": [
1717      {
1718        "name": "account",
1719        "type": "address",
1720        "internalType": "address"
1721      }
1722    ],
1723    "outputs": [
1724      {
1725        "name": "delegatedAmount",
1726        "type": "uint256",
1727        "internalType": "uint256"
1728      },
1729      {
1730        "name": "status",
1731        "type": "uint8",
1732        "internalType": "enum StakeTable.ValidatorStatus"
1733      }
1734    ],
1735    "stateMutability": "view"
1736  },
1737  {
1738    "type": "event",
1739    "name": "ConsensusKeysUpdated",
1740    "inputs": [
1741      {
1742        "name": "account",
1743        "type": "address",
1744        "indexed": true,
1745        "internalType": "address"
1746      },
1747      {
1748        "name": "blsVK",
1749        "type": "tuple",
1750        "indexed": false,
1751        "internalType": "struct BN254.G2Point",
1752        "components": [
1753          {
1754            "name": "x0",
1755            "type": "uint256",
1756            "internalType": "BN254.BaseField"
1757          },
1758          {
1759            "name": "x1",
1760            "type": "uint256",
1761            "internalType": "BN254.BaseField"
1762          },
1763          {
1764            "name": "y0",
1765            "type": "uint256",
1766            "internalType": "BN254.BaseField"
1767          },
1768          {
1769            "name": "y1",
1770            "type": "uint256",
1771            "internalType": "BN254.BaseField"
1772          }
1773        ]
1774      },
1775      {
1776        "name": "schnorrVK",
1777        "type": "tuple",
1778        "indexed": false,
1779        "internalType": "struct EdOnBN254.EdOnBN254Point",
1780        "components": [
1781          {
1782            "name": "x",
1783            "type": "uint256",
1784            "internalType": "uint256"
1785          },
1786          {
1787            "name": "y",
1788            "type": "uint256",
1789            "internalType": "uint256"
1790          }
1791        ]
1792      }
1793    ],
1794    "anonymous": false
1795  },
1796  {
1797    "type": "event",
1798    "name": "Delegated",
1799    "inputs": [
1800      {
1801        "name": "delegator",
1802        "type": "address",
1803        "indexed": true,
1804        "internalType": "address"
1805      },
1806      {
1807        "name": "validator",
1808        "type": "address",
1809        "indexed": true,
1810        "internalType": "address"
1811      },
1812      {
1813        "name": "amount",
1814        "type": "uint256",
1815        "indexed": false,
1816        "internalType": "uint256"
1817      }
1818    ],
1819    "anonymous": false
1820  },
1821  {
1822    "type": "event",
1823    "name": "Initialized",
1824    "inputs": [
1825      {
1826        "name": "version",
1827        "type": "uint64",
1828        "indexed": false,
1829        "internalType": "uint64"
1830      }
1831    ],
1832    "anonymous": false
1833  },
1834  {
1835    "type": "event",
1836    "name": "OwnershipTransferred",
1837    "inputs": [
1838      {
1839        "name": "previousOwner",
1840        "type": "address",
1841        "indexed": true,
1842        "internalType": "address"
1843      },
1844      {
1845        "name": "newOwner",
1846        "type": "address",
1847        "indexed": true,
1848        "internalType": "address"
1849      }
1850    ],
1851    "anonymous": false
1852  },
1853  {
1854    "type": "event",
1855    "name": "Undelegated",
1856    "inputs": [
1857      {
1858        "name": "delegator",
1859        "type": "address",
1860        "indexed": true,
1861        "internalType": "address"
1862      },
1863      {
1864        "name": "validator",
1865        "type": "address",
1866        "indexed": true,
1867        "internalType": "address"
1868      },
1869      {
1870        "name": "amount",
1871        "type": "uint256",
1872        "indexed": false,
1873        "internalType": "uint256"
1874      }
1875    ],
1876    "anonymous": false
1877  },
1878  {
1879    "type": "event",
1880    "name": "Upgraded",
1881    "inputs": [
1882      {
1883        "name": "implementation",
1884        "type": "address",
1885        "indexed": true,
1886        "internalType": "address"
1887      }
1888    ],
1889    "anonymous": false
1890  },
1891  {
1892    "type": "event",
1893    "name": "ValidatorExit",
1894    "inputs": [
1895      {
1896        "name": "validator",
1897        "type": "address",
1898        "indexed": true,
1899        "internalType": "address"
1900      }
1901    ],
1902    "anonymous": false
1903  },
1904  {
1905    "type": "event",
1906    "name": "ValidatorRegistered",
1907    "inputs": [
1908      {
1909        "name": "account",
1910        "type": "address",
1911        "indexed": true,
1912        "internalType": "address"
1913      },
1914      {
1915        "name": "blsVk",
1916        "type": "tuple",
1917        "indexed": false,
1918        "internalType": "struct BN254.G2Point",
1919        "components": [
1920          {
1921            "name": "x0",
1922            "type": "uint256",
1923            "internalType": "BN254.BaseField"
1924          },
1925          {
1926            "name": "x1",
1927            "type": "uint256",
1928            "internalType": "BN254.BaseField"
1929          },
1930          {
1931            "name": "y0",
1932            "type": "uint256",
1933            "internalType": "BN254.BaseField"
1934          },
1935          {
1936            "name": "y1",
1937            "type": "uint256",
1938            "internalType": "BN254.BaseField"
1939          }
1940        ]
1941      },
1942      {
1943        "name": "schnorrVk",
1944        "type": "tuple",
1945        "indexed": false,
1946        "internalType": "struct EdOnBN254.EdOnBN254Point",
1947        "components": [
1948          {
1949            "name": "x",
1950            "type": "uint256",
1951            "internalType": "uint256"
1952          },
1953          {
1954            "name": "y",
1955            "type": "uint256",
1956            "internalType": "uint256"
1957          }
1958        ]
1959      },
1960      {
1961        "name": "commission",
1962        "type": "uint16",
1963        "indexed": false,
1964        "internalType": "uint16"
1965      }
1966    ],
1967    "anonymous": false
1968  },
1969  {
1970    "type": "event",
1971    "name": "Withdrawal",
1972    "inputs": [
1973      {
1974        "name": "account",
1975        "type": "address",
1976        "indexed": true,
1977        "internalType": "address"
1978      },
1979      {
1980        "name": "amount",
1981        "type": "uint256",
1982        "indexed": false,
1983        "internalType": "uint256"
1984      }
1985    ],
1986    "anonymous": false
1987  },
1988  {
1989    "type": "error",
1990    "name": "AddressEmptyCode",
1991    "inputs": [
1992      {
1993        "name": "target",
1994        "type": "address",
1995        "internalType": "address"
1996      }
1997    ]
1998  },
1999  {
2000    "type": "error",
2001    "name": "BLSSigVerificationFailed",
2002    "inputs": []
2003  },
2004  {
2005    "type": "error",
2006    "name": "BN254PairingProdFailed",
2007    "inputs": []
2008  },
2009  {
2010    "type": "error",
2011    "name": "BlsKeyAlreadyUsed",
2012    "inputs": []
2013  },
2014  {
2015    "type": "error",
2016    "name": "ERC1967InvalidImplementation",
2017    "inputs": [
2018      {
2019        "name": "implementation",
2020        "type": "address",
2021        "internalType": "address"
2022      }
2023    ]
2024  },
2025  {
2026    "type": "error",
2027    "name": "ERC1967NonPayable",
2028    "inputs": []
2029  },
2030  {
2031    "type": "error",
2032    "name": "ExitEscrowPeriodInvalid",
2033    "inputs": []
2034  },
2035  {
2036    "type": "error",
2037    "name": "FailedInnerCall",
2038    "inputs": []
2039  },
2040  {
2041    "type": "error",
2042    "name": "InsufficientAllowance",
2043    "inputs": [
2044      {
2045        "name": "",
2046        "type": "uint256",
2047        "internalType": "uint256"
2048      },
2049      {
2050        "name": "",
2051        "type": "uint256",
2052        "internalType": "uint256"
2053      }
2054    ]
2055  },
2056  {
2057    "type": "error",
2058    "name": "InsufficientBalance",
2059    "inputs": [
2060      {
2061        "name": "",
2062        "type": "uint256",
2063        "internalType": "uint256"
2064      }
2065    ]
2066  },
2067  {
2068    "type": "error",
2069    "name": "InvalidCommission",
2070    "inputs": []
2071  },
2072  {
2073    "type": "error",
2074    "name": "InvalidG1",
2075    "inputs": []
2076  },
2077  {
2078    "type": "error",
2079    "name": "InvalidInitialization",
2080    "inputs": []
2081  },
2082  {
2083    "type": "error",
2084    "name": "InvalidSchnorrVK",
2085    "inputs": []
2086  },
2087  {
2088    "type": "error",
2089    "name": "NotInitializing",
2090    "inputs": []
2091  },
2092  {
2093    "type": "error",
2094    "name": "NothingToWithdraw",
2095    "inputs": []
2096  },
2097  {
2098    "type": "error",
2099    "name": "OwnableInvalidOwner",
2100    "inputs": [
2101      {
2102        "name": "owner",
2103        "type": "address",
2104        "internalType": "address"
2105      }
2106    ]
2107  },
2108  {
2109    "type": "error",
2110    "name": "OwnableUnauthorizedAccount",
2111    "inputs": [
2112      {
2113        "name": "account",
2114        "type": "address",
2115        "internalType": "address"
2116      }
2117    ]
2118  },
2119  {
2120    "type": "error",
2121    "name": "OwnershipCannotBeRenounced",
2122    "inputs": []
2123  },
2124  {
2125    "type": "error",
2126    "name": "PowPrecompileFailed",
2127    "inputs": []
2128  },
2129  {
2130    "type": "error",
2131    "name": "PrematureWithdrawal",
2132    "inputs": []
2133  },
2134  {
2135    "type": "error",
2136    "name": "UUPSUnauthorizedCallContext",
2137    "inputs": []
2138  },
2139  {
2140    "type": "error",
2141    "name": "UUPSUnsupportedProxiableUUID",
2142    "inputs": [
2143      {
2144        "name": "slot",
2145        "type": "bytes32",
2146        "internalType": "bytes32"
2147      }
2148    ]
2149  },
2150  {
2151    "type": "error",
2152    "name": "UndelegationAlreadyExists",
2153    "inputs": []
2154  },
2155  {
2156    "type": "error",
2157    "name": "ValidatorAlreadyExited",
2158    "inputs": []
2159  },
2160  {
2161    "type": "error",
2162    "name": "ValidatorAlreadyRegistered",
2163    "inputs": []
2164  },
2165  {
2166    "type": "error",
2167    "name": "ValidatorInactive",
2168    "inputs": []
2169  },
2170  {
2171    "type": "error",
2172    "name": "ValidatorNotExited",
2173    "inputs": []
2174  },
2175  {
2176    "type": "error",
2177    "name": "ZeroAddress",
2178    "inputs": []
2179  },
2180  {
2181    "type": "error",
2182    "name": "ZeroAmount",
2183    "inputs": []
2184  }
2185]
2186```*/
2187#[allow(
2188    non_camel_case_types,
2189    non_snake_case,
2190    clippy::pub_underscore_fields,
2191    clippy::style,
2192    clippy::empty_structs_with_brackets
2193)]
2194pub mod StakeTable {
2195    use super::*;
2196    use alloy::sol_types as alloy_sol_types;
2197    /// The creation / init bytecode of the contract.
2198    ///
2199    /// ```text
2200    ///0x60a060405230608052348015610013575f5ffd5b5061001c610029565b610024610029565b6100db565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100795760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612a486101015f395f81816112d90152818161130201526114480152612a485ff3fe608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004612346565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d036600461246c565b6106d6565b3480156101e0575f5ffd5b506101846101ef3660046124ca565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b50610184610230366004612346565b61098a565b6101846102433660046124e3565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612588565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d3660046125cc565b610cee565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b506103646103413660046125e6565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b506101846103933660046124ca565b610d48565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad9190612617565b3480156103e0575f5ffd5b506104036103ef36600461264c565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c3660046124ca565b60056020525f908152604090205481565b348015610468575f5ffd5b50610184610477366004612663565b610e58565b348015610487575f5ffd5b506102086104963660046125e6565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc3660046124ca565b610f84565b3480156104dc575f5ffd5b506105066104eb3660046124ca565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad9291906126c1565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fc1565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d091906126f1565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611042565b6001600160a01b0384165f908152600360205260408120805485929061064190849061271c565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c90849061271c565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110e6565b6106e984611133565b6106f28561116e565b604080516001600160a01b03831660208201525f910160405160208183030381529060405290506107248185886111aa565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610cee565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a06126ad565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e66126ad565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f90815260066020908152604080832087851684529091528120556002546109419116848361123f565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fc1565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a7790849061272f565b92505081905550604051806040016040528084815260200160085442610a9d919061271c565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af090849061272f565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b446112ce565b610b4d82611374565b610b57828261137c565b5050565b5f610b6461143d565b505f516020612a1c5f395f51905f5290565b33610b8081610fc1565b610b8983611133565b610b928461116e565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc48184876111aa565b600160045f610bd288610cee565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c30929190612742565b60405180910390a25050505050565b33610c4981610fc1565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b904261271c565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611486565b6040516317d5c96560e11b815260040160405180910390fd5b5f815f0151826020015183604001518460600151604051602001610d2b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d8d57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dd557604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e109116838361123f565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e4b91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e9d5750825b90505f8267ffffffffffffffff166001148015610eb95750303b155b905081158015610ec7575080155b15610ee55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0f57845460ff60401b1916600160401b1785555b610f18866114e1565b610f206114f2565b610f286114fa565b610f33898989611600565b8315610f7957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f8c611486565b6001600160a01b038116610fb557604051631e4fbdf760e01b81525f60048201526024016105f9565b610fbe816116ab565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610ff257610ff26126ad565b036110105760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611024576110246126ad565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561109b5750833b153d17155b806110df5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115611115576111156126ad565b14610fbe5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f8082526020820152611150828261171b565b15610b57576040516306cf438f60e01b815260040160405180910390fd5b60045f61117a83610cee565b815260208101919091526040015f205460ff1615610fbe5760405162da8a5760e11b815260040160405180910390fd5b6111b38261173e565b5f6040518060600160405280602481526020016129d86024913990505f84826040516020016111e3929190612793565b60405160208183030381529060405290505f6111fe826117a5565b905061121b818561120e88611892565b611216611909565b6119d6565b6112375760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156112895750823b153d17155b806112c85760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061135457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113485f516020612a1c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113725760405163703e46dd60e11b815260040160405180910390fd5b565b610fbe611486565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113d6575060408051601f3d908101601f191682019092526113d3918101906126f1565b60015b6113fe57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612a1c5f395f51905f52811461142e57604051632a87526960e21b8152600481018290526024016105f9565b6114388383611a85565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113725760405163703e46dd60e11b815260040160405180910390fd5b336114b87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113725760405163118cdaa760e01b81523360048201526024016105f9565b6114e9611ada565b610fbe81611b23565b611372611ada565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561153f5750825b90505f8267ffffffffffffffff16600114801561155b5750303b155b905081158015611569575080155b156115875760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156115b157845460ff60401b1916600160401b1785555b435f5583156110df57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116275760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661164e5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156116a35760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b805182515f91148015611735575081602001518360200151145b90505b92915050565b805160208201515f915f5160206129fc5f395f51905f5291159015161561176457505050565b8251602084015182600384858586098509088382830914838210848410161693505050816114385760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f6117c283611b2b565b90505f5160206129fc5f395f51905f5260035f82848509905082806117e9576117e96127af565b848209905082806117fc576117fc6127af565b82820890505f5f61180c83611d34565b925090505b80611875578480611824576118246127af565b6001870895508480611838576118386127af565b8687099250848061184b5761184b6127af565b8684099250848061185e5761185e6127af565b848408925061186c83611d34565b92509050611811565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f80825260208201528151602083015115901516156118b9575090565b6040518060400160405280835f015181526020015f5160206129fc5f395f51905f5284602001516118ea91906127c3565b611901905f5160206129fc5f395f51905f5261272f565b905292915050565b61193060405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611a795760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b611a8e82611dfc565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ad2576114388282611e5f565b610b57611ed1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661137257604051631afcd79f60e31b815260040160405180910390fd5b610f8c611ada565b5f5f611b3683611ef0565b805190915060308114611b4b57611b4b6127e2565b5f8167ffffffffffffffff811115611b6557611b6561236e565b6040519080825280601f01601f191660200182016040528015611b8f576020820181803683370190505b5090505f5b82811015611bfe57836001611ba9838661272f565b611bb3919061272f565b81518110611bc357611bc36127f6565b602001015160f81c60f81b828281518110611be057611be06127f6565b60200101906001600160f81b03191690815f1a905350600101611b94565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611c8e578381611c3a858861272f565b611c44919061271c565b81518110611c5457611c546127f6565b602001015160f81c60f81b60f81c828281518110611c7457611c746127f6565b60ff90921660209283029190910190910152600101611c26565b505f611c998261223c565b90506101005f5160206129fc5f395f51905f525f611cb7868961272f565b90505f5b81811015611d24575f886001611cd1848661272f565b611cdb919061272f565b81518110611ceb57611ceb6127f6565b016020015160f81c90508380611d0357611d036127af565b85870995508380611d1657611d166127af565b818708955050600101611cbb565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206129fc5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611dc257604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115611ddb57611dd8838261272f565b92505b8080611de957611de96127af565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611e3157604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612a1c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611e7b919061280a565b5f60405180830381855af49150503d805f8114611eb3576040519150601f19603f3d011682016040523d82523d5f602084013e611eb8565b606091505b5091509150611ec88583836122a3565b95945050505050565b34156113725760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611f30929190612793565b6040516020818303038152906040529050808460f81b604051602001611f57929190612815565b604051602081830303815290604052905080604051602001611f79919061283f565b60408051601f1981840301815290829052915061010160f01b90611fa39083908390602001612857565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff8111156120135761201361236e565b6040519080825280601f01601f19166020018201604052801561203d576020820181803683370190505b5090505f8260405160200161205491815260200190565b60408051601f1981840301815291905290505f5b81518110156120be57818181518110612083576120836127f6565b602001015160f81c60f81b8382815181106120a0576120a06127f6565b60200101906001600160f81b03191690815f1a905350600101612068565b505f846040516020016120d391815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612165575f83828151811061210c5761210c6127f6565b602001015160f81c60f81b838381518110612129576121296127f6565b602001015160f81c60f81b189050888160405160200161214a92919061287b565b60408051601f198184030181529190529850506001016120f1565b5086888760405160200161217b9392919061289f565b604051602081830303815290604052965086805190602001209350836040516020016121a991815260200190565b60408051601f1981840301815291905291505f5b6121ca8a60ff8d1661272f565b81101561222b578281815181106121e3576121e36127f6565b01602001516001600160f81b031916846121fd838d61271c565b8151811061220d5761220d6127f6565b60200101906001600160f81b03191690815f1a9053506001016121bd565b50919b9a5050505050505050505050565b5f80805b835181101561229c5783818151811061225b5761225b6127f6565b602002602001015160ff1681600861227391906128d2565b61227e9060026129cc565b61228891906128d2565b612292908361271c565b9150600101612240565b5092915050565b6060826122b8576122b382612302565b6122fb565b81511580156122cf57506001600160a01b0384163b155b156122f857604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b8051156123125780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114612341575f5ffd5b919050565b5f5f60408385031215612357575f5ffd5b6123608361232b565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156123a5576123a561236e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156123d4576123d461236e565b604052919050565b5f608082840312156123ec575f5ffd5b6040516080810167ffffffffffffffff8111828210171561240f5761240f61236e565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561244d575f5ffd5b612455612382565b823581526020928301359281019290925250919050565b5f5f5f5f6101208587031215612480575f5ffd5b61248a86866123dc565b9350612499866080870161243d565b92506124a88660c0870161243d565b915061010085013561ffff811681146124bf575f5ffd5b939692955090935050565b5f602082840312156124da575f5ffd5b6117358261232b565b5f5f604083850312156124f4575f5ffd5b6124fd8361232b565b9150602083013567ffffffffffffffff811115612518575f5ffd5b8301601f81018513612528575f5ffd5b803567ffffffffffffffff8111156125425761254261236e565b612555601f8201601f19166020016123ab565b818152866020838501011115612569575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f610100848603121561259b575f5ffd5b6125a585856123dc565b92506125b4856080860161243d565b91506125c38560c0860161243d565b90509250925092565b5f608082840312156125dc575f5ffd5b61173583836123dc565b5f5f604083850312156125f7575f5ffd5b6126008361232b565b915061260e6020840161232b565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561265c575f5ffd5b5035919050565b5f5f5f5f60808587031215612676575f5ffd5b61267f8561232b565b935061268d6020860161232b565b9250604085013591506126a26060860161232b565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106126e457634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215612701575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561173857611738612708565b8181038181111561173857611738612708565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c081016122fb565b5f81518060208401855e5f93019283525090919050565b5f6127a76127a1838661277c565b8461277c565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f826127dd57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611735828461277c565b5f612820828561277c565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61284a828461277c565b5f81526001019392505050565b5f612862828561277c565b6001600160f01b03199390931683525050600201919050565b5f612886828561277c565b6001600160f81b03199390931683525050600101919050565b5f6128aa828661277c565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b808202811582820484141761173857611738612708565b6001815b60018411156129245780850481111561290857612908612708565b600184161561291657908102905b60019390931c9280026128ed565b935093915050565b5f8261293a57506001611738565b8161294657505f611738565b816001811461295c576002811461296657612982565b6001915050611738565b60ff84111561297757612977612708565b50506001821b611738565b5060208310610133831016604e8410600b84101617156129a5575081810a611738565b6129b15f1984846128e9565b805f19048211156129c4576129c4612708565b029392505050565b5f611735838361292c56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
2201    /// ```
2202    #[rustfmt::skip]
2203    #[allow(clippy::all)]
2204    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2205        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0)V[a\0$a\0)V[a\0\xDBV[\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\0yW`@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\xD8W\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[`\x80Qa*Ha\x01\x01_9_\x81\x81a\x12\xD9\x01R\x81\x81a\x13\x02\x01Ra\x14H\x01Ra*H_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80c\x9B0\xA5\xE6\x11a\0\xCDW\x80c\xB5p\x0Eh\x11a\0\x87W\x80c\xC6H\x14\xDD\x11a\0bW\x80c\xC6H\x14\xDD\x14a\x04|W\x80c\xF2\xFD\xE3\x8B\x14a\x04\xB2W\x80c\xFAR\xC7\xD8\x14a\x04\xD1W\x80c\xFC\x0CTj\x14a\x05\x14W__\xFD[\x80c\xB5p\x0Eh\x14a\x04\x13W\x80c\xB5\xEC\xB3D\x14a\x042W\x80c\xBE 0\x94\x14a\x04]W__\xFD[\x80c\x9B0\xA5\xE6\x14a\x02\xF3W\x80c\x9E\x9A\x8F1\x14a\x03\x12W\x80c\xA2\xD7\x8D\xD5\x14a\x03'W\x80c\xA3\x06j\xAB\x14a\x03yW\x80c\xAD<\xB1\xCC\x14a\x03\x98W\x80c\xB3\xE6\xEB\xD5\x14a\x03\xD5W__\xFD[\x80cO\x1E\xF2\x86\x11a\x01\x1EW\x80cO\x1E\xF2\x86\x14a\x025W\x80cR\xD1\x90-\x14a\x02HW\x80cUD\xC2\xF1\x14a\x02\\W\x80cj\x91\x1C\xCF\x14a\x02{W\x80cqP\x18\xA6\x14a\x02\x8FW\x80c\x8D\xA5\xCB[\x14a\x02\xA3W__\xFD[\x80c\x02n@+\x14a\x01eW\x80c\r\x8En,\x14a\x01\x86W\x80c\x13\xB9\x05z\x14a\x01\xB6W\x80c!@\xFE\xCD\x14a\x01\xD5W\x80c>\x9D\xF9\xB5\x14a\x01\xF4W\x80cM\x99\xDD\x16\x14a\x02\x16W[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a#FV[a\x053V[\0[4\x80\x15a\x01\x91W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC1W__\xFD[Pa\x01\x84a\x01\xD06`\x04a$lV[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a$\xCAV[a\x08iV[4\x80\x15a\x01\xFFW__\xFD[Pa\x02\x08_T\x81V[`@Q\x90\x81R` \x01a\x01\xADV[4\x80\x15a\x02!W__\xFD[Pa\x01\x84a\x0206`\x04a#FV[a\t\x8AV[a\x01\x84a\x02C6`\x04a$\xE3V[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a%\x88V[a\x0BvV[4\x80\x15a\x02\x86W__\xFD[Pa\x01\x84a\x0C?V[4\x80\x15a\x02\x9AW__\xFD[Pa\x01\x84a\x0C\xCDV[4\x80\x15a\x02\xAEW__\xFD[P\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[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xADV[4\x80\x15a\x02\xFEW__\xFD[Pa\x02\x08a\x03\r6`\x04a%\xCCV[a\x0C\xEEV[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a%\xE6V[`\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\x01\xADV[4\x80\x15a\x03\x84W__\xFD[Pa\x01\x84a\x03\x936`\x04a$\xCAV[a\rHV[4\x80\x15a\x03\xA3W__\xFD[Pa\x03\xC8`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xAD\x91\x90a&\x17V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&LV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\xADV[4\x80\x15a\x04\x1EW__\xFD[P`\x01Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04=W__\xFD[Pa\x02\x08a\x04L6`\x04a$\xCAV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a&cV[a\x0EXV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a%\xE6V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x01\x84a\x04\xCC6`\x04a$\xCAV[a\x0F\x84V[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a$\xCAV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a&\xC1V[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xC1V[3_\x82\x90\x03a\x05^W`@Qc\x1F* \x05`\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\x05\xACW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xD0\x91\x90a&\xF1V[\x90P\x82\x81\x10\x15a\x06\x02W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x06\x1A\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x10BV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\x1CV[\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\x06|\x90\x84\x90a'\x1CV[\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\x06\xC8\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[3a\x06\xE0\x81a\x10\xE6V[a\x06\xE9\x84a\x113V[a\x06\xF2\x85a\x11nV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x07$\x81\x85\x88a\x11\xAAV[a'\x10\x83a\xFF\xFF\x16\x11\x15a\x07KW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x07Y\x89a\x0C\xEEV[\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\x07\xA0Wa\x07\xA0a&\xADV[\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\x07\xE6Wa\x07\xE6a&\xADV[\x02\x17\x90UPP`@\x80Q\x88Q\x81R` \x80\x8A\x01Q\x81\x83\x01R\x89\x83\x01Q\x82\x84\x01R``\x80\x8B\x01Q\x90\x83\x01R\x88Q`\x80\x83\x01R\x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x86\x16`\xC0\x82\x01R\x90Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x92P\x7F\xF6\xE85\x9CWR\x0BF\x964sk\xFC;\xB7\xEC\\\xBD\x1A\x0B\xD2\x8B\x10\xA8'W\x93\xBBs\x0By\x7F\x91\x81\x90\x03`\xE0\x01\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x08\xA3W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x08\xC4W`@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\t\x0CW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x87\x85\x16\x84R\x90\x91R\x81 U`\x02Ta\tA\x91\x16\x84\x83a\x12?V[\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\t|\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\t\x93\x82a\x0F\xC1V[3_\x82\x90\x03a\t\xB5W`@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\t\xF8W`@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\nAW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[`\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\nw\x90\x84\x90a'/V[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\x1CV[\x90R`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x81\x81R`\x07` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x85Q\x81U\x94\x81\x01Q`\x01\x90\x95\x01\x94\x90\x94U\x90\x81R`\x03\x90\x92R\x81 \x80T\x85\x92\x90a\n\xF0\x90\x84\x90a'/V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7FM\x10\xBD\x04\x97u\xC7{\xD7\xF2U\x19Z\xFB\xA5\x08\x80(\xEC\xB3\xC7\xC2w\xD3\x93\xCC\xFFy4\xF2\xF9,\x85`@Qa\x06\xC8\x91\x81R` \x01\x90V[a\x0BDa\x12\xCEV[a\x0BM\x82a\x13tV[a\x0BW\x82\x82a\x13|V[PPV[_a\x0Bda\x14=V[P_Q` a*\x1C_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xC1V[a\x0B\x89\x83a\x113V[a\x0B\x92\x84a\x11nV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0B\xC4\x81\x84\x87a\x11\xAAV[`\x01`\x04_a\x0B\xD2\x88a\x0C\xEEV[\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\x80\xD8\xA4\xA1f3(\xA9\x98\xD4U[\xA2\x1D\x8B\xBAn\xF1Wj\x8C^\x9D'\xF9\xC5E\xF1\xA3\xD5+\x1D\x86\x86`@Qa\x0C0\x92\x91\x90a'BV[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xC1V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\x1CV[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x94\x90\x94U`\x03\x90R\x82\x81 \x81\x90U\x91Q\x90\x91\x7F\xFB$0ST\xC8wb\xD5WHz\xE4\xA5d\xE8\xD0>\xCB\xB9\xA9}\xD8\xAF\xFF\x8E\x1Fo\xCA\xF0\xDD\x16\x91\xA2PV[a\x0C\xD5a\x14\x86V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r+\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[`\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\r\x8DW`@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\r\xD5W`@QcZwCW`\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 \x86\x85\x16\x84R\x90\x91R\x81 \x81\x81U`\x01\x01U`\x02Ta\x0E\x10\x91\x16\x83\x83a\x12?V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\x0EK\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x0E\x9DWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xB9WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xC7WP\x80\x15[\x15a\x0E\xE5W`@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\x0F\x0FW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\x18\x86a\x14\xE1V[a\x0F a\x14\xF2V[a\x0F(a\x14\xFAV[a\x0F3\x89\x89\x89a\x16\0V[\x83\x15a\x0FyW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x0F\x8Ca\x14\x86V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xB5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xBE\x81a\x16\xABV[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xF2Wa\x0F\xF2a&\xADV[\x03a\x10\x10W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10$Wa\x10$a&\xADV[\x03a\x0BWW`@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\x10\x9BWP\x83;\x15=\x17\x15[\x80a\x10\xDFW`@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\x05\xF9V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x11\x15Wa\x11\x15a&\xADV[\x14a\x0F\xBEW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11P\x82\x82a\x17\x1BV[\x15a\x0BWW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11z\x83a\x0C\xEEV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xBEW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x82a\x17>V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a)\xD8`$\x919\x90P_\x84\x82`@Q` \x01a\x11\xE3\x92\x91\x90a'\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x11\xFE\x82a\x17\xA5V[\x90Pa\x12\x1B\x81\x85a\x12\x0E\x88a\x18\x92V[a\x12\x16a\x19\tV[a\x19\xD6V[a\x127W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_`@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\x12\x89WP\x82;\x15=\x17\x15[\x80a\x12\xC8W`@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\x05\xF9V[PPPPV[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\x13TWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\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\x13H_Q` a*\x1C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13rW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0F\xBEa\x14\x86V[\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\x13\xD6WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x13\xD3\x91\x81\x01\x90a&\xF1V[`\x01[a\x13\xFEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x1C_9_Q\x90_R\x81\x14a\x14.W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x148\x83\x83a\x1A\x85V[PPPV[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\x13rW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x14\xB8\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[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x13rW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[a\x14\xE9a\x1A\xDAV[a\x0F\xBE\x81a\x1B#V[a\x13ra\x1A\xDAV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x15?WP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x15[WP0;\x15[\x90P\x81\x15\x80\x15a\x15iWP\x80\x15[\x15a\x15\x87W`@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\x15\xB1W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xDFW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16'W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x16NW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a\x16\xA3W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\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[\x80Q\x82Q_\x91\x14\x80\x15a\x175WP\x81` \x01Q\x83` \x01Q\x14[\x90P[\x92\x91PPV[\x80Q` \x82\x01Q_\x91_Q` a)\xFC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x17dWPPPV[\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\x148W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x17\xC2\x83a\x1B+V[\x90P_Q` a)\xFC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x17\xE9Wa\x17\xE9a'\xAFV[\x84\x82\t\x90P\x82\x80a\x17\xFCWa\x17\xFCa'\xAFV[\x82\x82\x08\x90P__a\x18\x0C\x83a\x1D4V[\x92P\x90P[\x80a\x18uW\x84\x80a\x18$Wa\x18$a'\xAFV[`\x01\x87\x08\x95P\x84\x80a\x188Wa\x188a'\xAFV[\x86\x87\t\x92P\x84\x80a\x18KWa\x18Ka'\xAFV[\x86\x84\t\x92P\x84\x80a\x18^Wa\x18^a'\xAFV[\x84\x84\x08\x92Pa\x18l\x83a\x1D4V[\x92P\x90Pa\x18\x11V[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x18\xB9WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a)\xFC_9_Q\x90_R\x84` \x01Qa\x18\xEA\x91\x90a'\xC3V[a\x19\x01\x90_Q` a)\xFC_9_Q\x90_Ra'/V[\x90R\x92\x91PPV[a\x190`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a\x1AyW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a\x1A\x8E\x82a\x1D\xFCV[`@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\x15a\x1A\xD2Wa\x148\x82\x82a\x1E_V[a\x0BWa\x1E\xD1V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x13rW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x8Ca\x1A\xDAV[__a\x1B6\x83a\x1E\xF0V[\x80Q\x90\x91P`0\x81\x14a\x1BKWa\x1BKa'\xE2V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1BeWa\x1Bea#nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1B\x8FW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1B\xFEW\x83`\x01a\x1B\xA9\x83\x86a'/V[a\x1B\xB3\x91\x90a'/V[\x81Q\x81\x10a\x1B\xC3Wa\x1B\xC3a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1B\xE0Wa\x1B\xE0a'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1B\x94V[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\x1C\x8EW\x83\x81a\x1C:\x85\x88a'/V[a\x1CD\x91\x90a'\x1CV[\x81Q\x81\x10a\x1CTWa\x1CTa'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1CtWa\x1Cta'\xF6V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C&V[P_a\x1C\x99\x82a\"<V[\x90Pa\x01\0_Q` a)\xFC_9_Q\x90_R_a\x1C\xB7\x86\x89a'/V[\x90P_[\x81\x81\x10\x15a\x1D$W_\x88`\x01a\x1C\xD1\x84\x86a'/V[a\x1C\xDB\x91\x90a'/V[\x81Q\x81\x10a\x1C\xEBWa\x1C\xEBa'\xF6V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1D\x03Wa\x1D\x03a'\xAFV[\x85\x87\t\x95P\x83\x80a\x1D\x16Wa\x1D\x16a'\xAFV[\x81\x87\x08\x95PP`\x01\x01a\x1C\xBBV[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` a)\xFC_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\x1D\xC2W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a\x1D\xDBWa\x1D\xD8\x83\x82a'/V[\x92P[\x80\x80a\x1D\xE9Wa\x1D\xE9a'\xAFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x1C_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`@Qa\x1E{\x91\x90a(\nV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1E\xB3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\xB8V[``\x91P[P\x91P\x91Pa\x1E\xC8\x85\x83\x83a\"\xA3V[\x95\x94PPPPPV[4\x15a\x13rW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a\x1F0\x92\x91\x90a'\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a\x1FW\x92\x91\x90a(\x15V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a\x1Fy\x91\x90a(?V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a\x1F\xA3\x90\x83\x90\x83\x90` \x01a(WV[`@\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\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x13Wa \x13a#nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a =W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a T\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a \xBEW\x81\x81\x81Q\x81\x10a \x83Wa \x83a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a \xA0Wa \xA0a'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a hV[P_\x84`@Q` \x01a \xD3\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!eW_\x83\x82\x81Q\x81\x10a!\x0CWa!\x0Ca'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!)Wa!)a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!J\x92\x91\x90a({V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a \xF1V[P\x86\x88\x87`@Q` \x01a!{\x93\x92\x91\x90a(\x9FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a!\xA9\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a!\xCA\x8A`\xFF\x8D\x16a'/V[\x81\x10\x15a\"+W\x82\x81\x81Q\x81\x10a!\xE3Wa!\xE3a'\xF6V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a!\xFD\x83\x8Da'\x1CV[\x81Q\x81\x10a\"\rWa\"\ra'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a!\xBDV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\"\x9CW\x83\x81\x81Q\x81\x10a\"[Wa\"[a'\xF6V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a\"s\x91\x90a(\xD2V[a\"~\x90`\x02a)\xCCV[a\"\x88\x91\x90a(\xD2V[a\"\x92\x90\x83a'\x1CV[\x91P`\x01\x01a\"@V[P\x92\x91PPV[``\x82a\"\xB8Wa\"\xB3\x82a#\x02V[a\"\xFBV[\x81Q\x15\x80\x15a\"\xCFWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\"\xF8W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x05\xF9V[P\x80[\x93\x92PPPV[\x80Q\x15a#\x12W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a#AW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a#WW__\xFD[a#`\x83a#+V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xA5Wa#\xA5a#nV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xD4Wa#\xD4a#nV[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a#\xECW__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\x0FWa$\x0Fa#nV[`@\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\x15a$MW__\xFD[a$Ua#\x82V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a$\x80W__\xFD[a$\x8A\x86\x86a#\xDCV[\x93Pa$\x99\x86`\x80\x87\x01a$=V[\x92Pa$\xA8\x86`\xC0\x87\x01a$=V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a$\xBFW__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a$\xDAW__\xFD[a\x175\x82a#+V[__`@\x83\x85\x03\x12\x15a$\xF4W__\xFD[a$\xFD\x83a#+V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%(W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%BWa%Ba#nV[a%U`\x1F\x82\x01`\x1F\x19\x16` \x01a#\xABV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%iW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a%\x9BW__\xFD[a%\xA5\x85\x85a#\xDCV[\x92Pa%\xB4\x85`\x80\x86\x01a$=V[\x91Pa%\xC3\x85`\xC0\x86\x01a$=V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a%\xDCW__\xFD[a\x175\x83\x83a#\xDCV[__`@\x83\x85\x03\x12\x15a%\xF7W__\xFD[a&\0\x83a#+V[\x91Pa&\x0E` \x84\x01a#+V[\x90P\x92P\x92\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a&\\W__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a&vW__\xFD[a&\x7F\x85a#+V[\x93Pa&\x8D` \x86\x01a#+V[\x92P`@\x85\x015\x91Pa&\xA2``\x86\x01a#+V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a&\xE4WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a'\x01W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x178Wa\x178a'\x08V[\x81\x81\x03\x81\x81\x11\x15a\x178Wa\x178a'\x08V[\x82Q\x81R` \x80\x84\x01Q\x81\x83\x01R`@\x80\x85\x01Q\x90\x83\x01R``\x80\x85\x01Q\x90\x83\x01R\x82Q`\x80\x83\x01R\x82\x01Q`\xA0\x82\x01R`\xC0\x81\x01a\"\xFBV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a'\xA7a'\xA1\x83\x86a'|V[\x84a'|V[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a'\xDDWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_a\x175\x82\x84a'|V[_a( \x82\x85a'|V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(J\x82\x84a'|V[_\x81R`\x01\x01\x93\x92PPPV[_a(b\x82\x85a'|V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a(\x86\x82\x85a'|V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a(\xAA\x82\x86a'|V[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x178Wa\x178a'\x08V[`\x01\x81[`\x01\x84\x11\x15a)$W\x80\x85\x04\x81\x11\x15a)\x08Wa)\x08a'\x08V[`\x01\x84\x16\x15a)\x16W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a(\xEDV[\x93P\x93\x91PPV[_\x82a):WP`\x01a\x178V[\x81a)FWP_a\x178V[\x81`\x01\x81\x14a)\\W`\x02\x81\x14a)fWa)\x82V[`\x01\x91PPa\x178V[`\xFF\x84\x11\x15a)wWa)wa'\x08V[PP`\x01\x82\x1Ba\x178V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a)\xA5WP\x81\x81\na\x178V[a)\xB1_\x19\x84\x84a(\xE9V[\x80_\x19\x04\x82\x11\x15a)\xC4Wa)\xC4a'\x08V[\x02\x93\x92PPPV[_a\x175\x83\x83a),V\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
2206    );
2207    /// The runtime bytecode of the contract, as deployed on the network.
2208    ///
2209    /// ```text
2210    ///0x608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004612346565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d036600461246c565b6106d6565b3480156101e0575f5ffd5b506101846101ef3660046124ca565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b50610184610230366004612346565b61098a565b6101846102433660046124e3565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612588565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d3660046125cc565b610cee565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b506103646103413660046125e6565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b506101846103933660046124ca565b610d48565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad9190612617565b3480156103e0575f5ffd5b506104036103ef36600461264c565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c3660046124ca565b60056020525f908152604090205481565b348015610468575f5ffd5b50610184610477366004612663565b610e58565b348015610487575f5ffd5b506102086104963660046125e6565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc3660046124ca565b610f84565b3480156104dc575f5ffd5b506105066104eb3660046124ca565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad9291906126c1565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fc1565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d091906126f1565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611042565b6001600160a01b0384165f908152600360205260408120805485929061064190849061271c565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c90849061271c565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110e6565b6106e984611133565b6106f28561116e565b604080516001600160a01b03831660208201525f910160405160208183030381529060405290506107248185886111aa565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610cee565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a06126ad565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e66126ad565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f90815260066020908152604080832087851684529091528120556002546109419116848361123f565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fc1565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a7790849061272f565b92505081905550604051806040016040528084815260200160085442610a9d919061271c565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af090849061272f565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b446112ce565b610b4d82611374565b610b57828261137c565b5050565b5f610b6461143d565b505f516020612a1c5f395f51905f5290565b33610b8081610fc1565b610b8983611133565b610b928461116e565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc48184876111aa565b600160045f610bd288610cee565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c30929190612742565b60405180910390a25050505050565b33610c4981610fc1565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b904261271c565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611486565b6040516317d5c96560e11b815260040160405180910390fd5b5f815f0151826020015183604001518460600151604051602001610d2b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d8d57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dd557604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e109116838361123f565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e4b91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e9d5750825b90505f8267ffffffffffffffff166001148015610eb95750303b155b905081158015610ec7575080155b15610ee55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0f57845460ff60401b1916600160401b1785555b610f18866114e1565b610f206114f2565b610f286114fa565b610f33898989611600565b8315610f7957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f8c611486565b6001600160a01b038116610fb557604051631e4fbdf760e01b81525f60048201526024016105f9565b610fbe816116ab565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610ff257610ff26126ad565b036110105760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611024576110246126ad565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561109b5750833b153d17155b806110df5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115611115576111156126ad565b14610fbe5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f8082526020820152611150828261171b565b15610b57576040516306cf438f60e01b815260040160405180910390fd5b60045f61117a83610cee565b815260208101919091526040015f205460ff1615610fbe5760405162da8a5760e11b815260040160405180910390fd5b6111b38261173e565b5f6040518060600160405280602481526020016129d86024913990505f84826040516020016111e3929190612793565b60405160208183030381529060405290505f6111fe826117a5565b905061121b818561120e88611892565b611216611909565b6119d6565b6112375760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156112895750823b153d17155b806112c85760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061135457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113485f516020612a1c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113725760405163703e46dd60e11b815260040160405180910390fd5b565b610fbe611486565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113d6575060408051601f3d908101601f191682019092526113d3918101906126f1565b60015b6113fe57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612a1c5f395f51905f52811461142e57604051632a87526960e21b8152600481018290526024016105f9565b6114388383611a85565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113725760405163703e46dd60e11b815260040160405180910390fd5b336114b87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113725760405163118cdaa760e01b81523360048201526024016105f9565b6114e9611ada565b610fbe81611b23565b611372611ada565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561153f5750825b90505f8267ffffffffffffffff16600114801561155b5750303b155b905081158015611569575080155b156115875760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156115b157845460ff60401b1916600160401b1785555b435f5583156110df57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116275760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661164e5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156116a35760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b805182515f91148015611735575081602001518360200151145b90505b92915050565b805160208201515f915f5160206129fc5f395f51905f5291159015161561176457505050565b8251602084015182600384858586098509088382830914838210848410161693505050816114385760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f6117c283611b2b565b90505f5160206129fc5f395f51905f5260035f82848509905082806117e9576117e96127af565b848209905082806117fc576117fc6127af565b82820890505f5f61180c83611d34565b925090505b80611875578480611824576118246127af565b6001870895508480611838576118386127af565b8687099250848061184b5761184b6127af565b8684099250848061185e5761185e6127af565b848408925061186c83611d34565b92509050611811565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f80825260208201528151602083015115901516156118b9575090565b6040518060400160405280835f015181526020015f5160206129fc5f395f51905f5284602001516118ea91906127c3565b611901905f5160206129fc5f395f51905f5261272f565b905292915050565b61193060405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611a795760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b611a8e82611dfc565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ad2576114388282611e5f565b610b57611ed1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661137257604051631afcd79f60e31b815260040160405180910390fd5b610f8c611ada565b5f5f611b3683611ef0565b805190915060308114611b4b57611b4b6127e2565b5f8167ffffffffffffffff811115611b6557611b6561236e565b6040519080825280601f01601f191660200182016040528015611b8f576020820181803683370190505b5090505f5b82811015611bfe57836001611ba9838661272f565b611bb3919061272f565b81518110611bc357611bc36127f6565b602001015160f81c60f81b828281518110611be057611be06127f6565b60200101906001600160f81b03191690815f1a905350600101611b94565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611c8e578381611c3a858861272f565b611c44919061271c565b81518110611c5457611c546127f6565b602001015160f81c60f81b60f81c828281518110611c7457611c746127f6565b60ff90921660209283029190910190910152600101611c26565b505f611c998261223c565b90506101005f5160206129fc5f395f51905f525f611cb7868961272f565b90505f5b81811015611d24575f886001611cd1848661272f565b611cdb919061272f565b81518110611ceb57611ceb6127f6565b016020015160f81c90508380611d0357611d036127af565b85870995508380611d1657611d166127af565b818708955050600101611cbb565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206129fc5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611dc257604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115611ddb57611dd8838261272f565b92505b8080611de957611de96127af565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611e3157604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612a1c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611e7b919061280a565b5f60405180830381855af49150503d805f8114611eb3576040519150601f19603f3d011682016040523d82523d5f602084013e611eb8565b606091505b5091509150611ec88583836122a3565b95945050505050565b34156113725760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611f30929190612793565b6040516020818303038152906040529050808460f81b604051602001611f57929190612815565b604051602081830303815290604052905080604051602001611f79919061283f565b60408051601f1981840301815290829052915061010160f01b90611fa39083908390602001612857565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff8111156120135761201361236e565b6040519080825280601f01601f19166020018201604052801561203d576020820181803683370190505b5090505f8260405160200161205491815260200190565b60408051601f1981840301815291905290505f5b81518110156120be57818181518110612083576120836127f6565b602001015160f81c60f81b8382815181106120a0576120a06127f6565b60200101906001600160f81b03191690815f1a905350600101612068565b505f846040516020016120d391815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612165575f83828151811061210c5761210c6127f6565b602001015160f81c60f81b838381518110612129576121296127f6565b602001015160f81c60f81b189050888160405160200161214a92919061287b565b60408051601f198184030181529190529850506001016120f1565b5086888760405160200161217b9392919061289f565b604051602081830303815290604052965086805190602001209350836040516020016121a991815260200190565b60408051601f1981840301815291905291505f5b6121ca8a60ff8d1661272f565b81101561222b578281815181106121e3576121e36127f6565b01602001516001600160f81b031916846121fd838d61271c565b8151811061220d5761220d6127f6565b60200101906001600160f81b03191690815f1a9053506001016121bd565b50919b9a5050505050505050505050565b5f80805b835181101561229c5783818151811061225b5761225b6127f6565b602002602001015160ff1681600861227391906128d2565b61227e9060026129cc565b61228891906128d2565b612292908361271c565b9150600101612240565b5092915050565b6060826122b8576122b382612302565b6122fb565b81511580156122cf57506001600160a01b0384163b155b156122f857604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b8051156123125780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114612341575f5ffd5b919050565b5f5f60408385031215612357575f5ffd5b6123608361232b565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156123a5576123a561236e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156123d4576123d461236e565b604052919050565b5f608082840312156123ec575f5ffd5b6040516080810167ffffffffffffffff8111828210171561240f5761240f61236e565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561244d575f5ffd5b612455612382565b823581526020928301359281019290925250919050565b5f5f5f5f6101208587031215612480575f5ffd5b61248a86866123dc565b9350612499866080870161243d565b92506124a88660c0870161243d565b915061010085013561ffff811681146124bf575f5ffd5b939692955090935050565b5f602082840312156124da575f5ffd5b6117358261232b565b5f5f604083850312156124f4575f5ffd5b6124fd8361232b565b9150602083013567ffffffffffffffff811115612518575f5ffd5b8301601f81018513612528575f5ffd5b803567ffffffffffffffff8111156125425761254261236e565b612555601f8201601f19166020016123ab565b818152866020838501011115612569575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f610100848603121561259b575f5ffd5b6125a585856123dc565b92506125b4856080860161243d565b91506125c38560c0860161243d565b90509250925092565b5f608082840312156125dc575f5ffd5b61173583836123dc565b5f5f604083850312156125f7575f5ffd5b6126008361232b565b915061260e6020840161232b565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561265c575f5ffd5b5035919050565b5f5f5f5f60808587031215612676575f5ffd5b61267f8561232b565b935061268d6020860161232b565b9250604085013591506126a26060860161232b565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106126e457634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215612701575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561173857611738612708565b8181038181111561173857611738612708565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c081016122fb565b5f81518060208401855e5f93019283525090919050565b5f6127a76127a1838661277c565b8461277c565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f826127dd57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611735828461277c565b5f612820828561277c565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61284a828461277c565b5f81526001019392505050565b5f612862828561277c565b6001600160f01b03199390931683525050600201919050565b5f612886828561277c565b6001600160f81b03199390931683525050600101919050565b5f6128aa828661277c565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b808202811582820484141761173857611738612708565b6001815b60018411156129245780850481111561290857612908612708565b600184161561291657908102905b60019390931c9280026128ed565b935093915050565b5f8261293a57506001611738565b8161294657505f611738565b816001811461295c576002811461296657612982565b6001915050611738565b60ff84111561297757612977612708565b50506001821b611738565b5060208310610133831016604e8410600b84101617156129a5575081810a611738565b6129b15f1984846128e9565b805f19048211156129c4576129c4612708565b029392505050565b5f611735838361292c56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
2211    /// ```
2212    #[rustfmt::skip]
2213    #[allow(clippy::all)]
2214    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2215        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80c\x9B0\xA5\xE6\x11a\0\xCDW\x80c\xB5p\x0Eh\x11a\0\x87W\x80c\xC6H\x14\xDD\x11a\0bW\x80c\xC6H\x14\xDD\x14a\x04|W\x80c\xF2\xFD\xE3\x8B\x14a\x04\xB2W\x80c\xFAR\xC7\xD8\x14a\x04\xD1W\x80c\xFC\x0CTj\x14a\x05\x14W__\xFD[\x80c\xB5p\x0Eh\x14a\x04\x13W\x80c\xB5\xEC\xB3D\x14a\x042W\x80c\xBE 0\x94\x14a\x04]W__\xFD[\x80c\x9B0\xA5\xE6\x14a\x02\xF3W\x80c\x9E\x9A\x8F1\x14a\x03\x12W\x80c\xA2\xD7\x8D\xD5\x14a\x03'W\x80c\xA3\x06j\xAB\x14a\x03yW\x80c\xAD<\xB1\xCC\x14a\x03\x98W\x80c\xB3\xE6\xEB\xD5\x14a\x03\xD5W__\xFD[\x80cO\x1E\xF2\x86\x11a\x01\x1EW\x80cO\x1E\xF2\x86\x14a\x025W\x80cR\xD1\x90-\x14a\x02HW\x80cUD\xC2\xF1\x14a\x02\\W\x80cj\x91\x1C\xCF\x14a\x02{W\x80cqP\x18\xA6\x14a\x02\x8FW\x80c\x8D\xA5\xCB[\x14a\x02\xA3W__\xFD[\x80c\x02n@+\x14a\x01eW\x80c\r\x8En,\x14a\x01\x86W\x80c\x13\xB9\x05z\x14a\x01\xB6W\x80c!@\xFE\xCD\x14a\x01\xD5W\x80c>\x9D\xF9\xB5\x14a\x01\xF4W\x80cM\x99\xDD\x16\x14a\x02\x16W[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a#FV[a\x053V[\0[4\x80\x15a\x01\x91W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC1W__\xFD[Pa\x01\x84a\x01\xD06`\x04a$lV[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a$\xCAV[a\x08iV[4\x80\x15a\x01\xFFW__\xFD[Pa\x02\x08_T\x81V[`@Q\x90\x81R` \x01a\x01\xADV[4\x80\x15a\x02!W__\xFD[Pa\x01\x84a\x0206`\x04a#FV[a\t\x8AV[a\x01\x84a\x02C6`\x04a$\xE3V[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a%\x88V[a\x0BvV[4\x80\x15a\x02\x86W__\xFD[Pa\x01\x84a\x0C?V[4\x80\x15a\x02\x9AW__\xFD[Pa\x01\x84a\x0C\xCDV[4\x80\x15a\x02\xAEW__\xFD[P\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[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xADV[4\x80\x15a\x02\xFEW__\xFD[Pa\x02\x08a\x03\r6`\x04a%\xCCV[a\x0C\xEEV[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a%\xE6V[`\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\x01\xADV[4\x80\x15a\x03\x84W__\xFD[Pa\x01\x84a\x03\x936`\x04a$\xCAV[a\rHV[4\x80\x15a\x03\xA3W__\xFD[Pa\x03\xC8`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xAD\x91\x90a&\x17V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&LV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\xADV[4\x80\x15a\x04\x1EW__\xFD[P`\x01Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04=W__\xFD[Pa\x02\x08a\x04L6`\x04a$\xCAV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a&cV[a\x0EXV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a%\xE6V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x01\x84a\x04\xCC6`\x04a$\xCAV[a\x0F\x84V[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a$\xCAV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a&\xC1V[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xC1V[3_\x82\x90\x03a\x05^W`@Qc\x1F* \x05`\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\x05\xACW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xD0\x91\x90a&\xF1V[\x90P\x82\x81\x10\x15a\x06\x02W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x06\x1A\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x10BV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\x1CV[\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\x06|\x90\x84\x90a'\x1CV[\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\x06\xC8\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[3a\x06\xE0\x81a\x10\xE6V[a\x06\xE9\x84a\x113V[a\x06\xF2\x85a\x11nV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x07$\x81\x85\x88a\x11\xAAV[a'\x10\x83a\xFF\xFF\x16\x11\x15a\x07KW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x07Y\x89a\x0C\xEEV[\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\x07\xA0Wa\x07\xA0a&\xADV[\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\x07\xE6Wa\x07\xE6a&\xADV[\x02\x17\x90UPP`@\x80Q\x88Q\x81R` \x80\x8A\x01Q\x81\x83\x01R\x89\x83\x01Q\x82\x84\x01R``\x80\x8B\x01Q\x90\x83\x01R\x88Q`\x80\x83\x01R\x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x86\x16`\xC0\x82\x01R\x90Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x92P\x7F\xF6\xE85\x9CWR\x0BF\x964sk\xFC;\xB7\xEC\\\xBD\x1A\x0B\xD2\x8B\x10\xA8'W\x93\xBBs\x0By\x7F\x91\x81\x90\x03`\xE0\x01\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x08\xA3W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x08\xC4W`@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\t\x0CW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x87\x85\x16\x84R\x90\x91R\x81 U`\x02Ta\tA\x91\x16\x84\x83a\x12?V[\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\t|\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\t\x93\x82a\x0F\xC1V[3_\x82\x90\x03a\t\xB5W`@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\t\xF8W`@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\nAW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[`\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\nw\x90\x84\x90a'/V[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\x1CV[\x90R`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x81\x81R`\x07` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x85Q\x81U\x94\x81\x01Q`\x01\x90\x95\x01\x94\x90\x94U\x90\x81R`\x03\x90\x92R\x81 \x80T\x85\x92\x90a\n\xF0\x90\x84\x90a'/V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7FM\x10\xBD\x04\x97u\xC7{\xD7\xF2U\x19Z\xFB\xA5\x08\x80(\xEC\xB3\xC7\xC2w\xD3\x93\xCC\xFFy4\xF2\xF9,\x85`@Qa\x06\xC8\x91\x81R` \x01\x90V[a\x0BDa\x12\xCEV[a\x0BM\x82a\x13tV[a\x0BW\x82\x82a\x13|V[PPV[_a\x0Bda\x14=V[P_Q` a*\x1C_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xC1V[a\x0B\x89\x83a\x113V[a\x0B\x92\x84a\x11nV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0B\xC4\x81\x84\x87a\x11\xAAV[`\x01`\x04_a\x0B\xD2\x88a\x0C\xEEV[\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\x80\xD8\xA4\xA1f3(\xA9\x98\xD4U[\xA2\x1D\x8B\xBAn\xF1Wj\x8C^\x9D'\xF9\xC5E\xF1\xA3\xD5+\x1D\x86\x86`@Qa\x0C0\x92\x91\x90a'BV[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xC1V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\x1CV[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x94\x90\x94U`\x03\x90R\x82\x81 \x81\x90U\x91Q\x90\x91\x7F\xFB$0ST\xC8wb\xD5WHz\xE4\xA5d\xE8\xD0>\xCB\xB9\xA9}\xD8\xAF\xFF\x8E\x1Fo\xCA\xF0\xDD\x16\x91\xA2PV[a\x0C\xD5a\x14\x86V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r+\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[`\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\r\x8DW`@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\r\xD5W`@QcZwCW`\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 \x86\x85\x16\x84R\x90\x91R\x81 \x81\x81U`\x01\x01U`\x02Ta\x0E\x10\x91\x16\x83\x83a\x12?V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\x0EK\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x0E\x9DWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xB9WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xC7WP\x80\x15[\x15a\x0E\xE5W`@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\x0F\x0FW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\x18\x86a\x14\xE1V[a\x0F a\x14\xF2V[a\x0F(a\x14\xFAV[a\x0F3\x89\x89\x89a\x16\0V[\x83\x15a\x0FyW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x0F\x8Ca\x14\x86V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xB5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xBE\x81a\x16\xABV[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xF2Wa\x0F\xF2a&\xADV[\x03a\x10\x10W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10$Wa\x10$a&\xADV[\x03a\x0BWW`@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\x10\x9BWP\x83;\x15=\x17\x15[\x80a\x10\xDFW`@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\x05\xF9V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x11\x15Wa\x11\x15a&\xADV[\x14a\x0F\xBEW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11P\x82\x82a\x17\x1BV[\x15a\x0BWW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11z\x83a\x0C\xEEV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xBEW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x82a\x17>V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a)\xD8`$\x919\x90P_\x84\x82`@Q` \x01a\x11\xE3\x92\x91\x90a'\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x11\xFE\x82a\x17\xA5V[\x90Pa\x12\x1B\x81\x85a\x12\x0E\x88a\x18\x92V[a\x12\x16a\x19\tV[a\x19\xD6V[a\x127W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_`@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\x12\x89WP\x82;\x15=\x17\x15[\x80a\x12\xC8W`@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\x05\xF9V[PPPPV[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\x13TWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\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\x13H_Q` a*\x1C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13rW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0F\xBEa\x14\x86V[\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\x13\xD6WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x13\xD3\x91\x81\x01\x90a&\xF1V[`\x01[a\x13\xFEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x1C_9_Q\x90_R\x81\x14a\x14.W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x148\x83\x83a\x1A\x85V[PPPV[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\x13rW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x14\xB8\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[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x13rW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[a\x14\xE9a\x1A\xDAV[a\x0F\xBE\x81a\x1B#V[a\x13ra\x1A\xDAV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x15?WP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x15[WP0;\x15[\x90P\x81\x15\x80\x15a\x15iWP\x80\x15[\x15a\x15\x87W`@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\x15\xB1W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xDFW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16'W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x16NW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a\x16\xA3W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\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[\x80Q\x82Q_\x91\x14\x80\x15a\x175WP\x81` \x01Q\x83` \x01Q\x14[\x90P[\x92\x91PPV[\x80Q` \x82\x01Q_\x91_Q` a)\xFC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x17dWPPPV[\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\x148W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x17\xC2\x83a\x1B+V[\x90P_Q` a)\xFC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x17\xE9Wa\x17\xE9a'\xAFV[\x84\x82\t\x90P\x82\x80a\x17\xFCWa\x17\xFCa'\xAFV[\x82\x82\x08\x90P__a\x18\x0C\x83a\x1D4V[\x92P\x90P[\x80a\x18uW\x84\x80a\x18$Wa\x18$a'\xAFV[`\x01\x87\x08\x95P\x84\x80a\x188Wa\x188a'\xAFV[\x86\x87\t\x92P\x84\x80a\x18KWa\x18Ka'\xAFV[\x86\x84\t\x92P\x84\x80a\x18^Wa\x18^a'\xAFV[\x84\x84\x08\x92Pa\x18l\x83a\x1D4V[\x92P\x90Pa\x18\x11V[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x18\xB9WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a)\xFC_9_Q\x90_R\x84` \x01Qa\x18\xEA\x91\x90a'\xC3V[a\x19\x01\x90_Q` a)\xFC_9_Q\x90_Ra'/V[\x90R\x92\x91PPV[a\x190`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a\x1AyW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a\x1A\x8E\x82a\x1D\xFCV[`@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\x15a\x1A\xD2Wa\x148\x82\x82a\x1E_V[a\x0BWa\x1E\xD1V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x13rW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x8Ca\x1A\xDAV[__a\x1B6\x83a\x1E\xF0V[\x80Q\x90\x91P`0\x81\x14a\x1BKWa\x1BKa'\xE2V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1BeWa\x1Bea#nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1B\x8FW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1B\xFEW\x83`\x01a\x1B\xA9\x83\x86a'/V[a\x1B\xB3\x91\x90a'/V[\x81Q\x81\x10a\x1B\xC3Wa\x1B\xC3a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1B\xE0Wa\x1B\xE0a'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1B\x94V[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\x1C\x8EW\x83\x81a\x1C:\x85\x88a'/V[a\x1CD\x91\x90a'\x1CV[\x81Q\x81\x10a\x1CTWa\x1CTa'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1CtWa\x1Cta'\xF6V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C&V[P_a\x1C\x99\x82a\"<V[\x90Pa\x01\0_Q` a)\xFC_9_Q\x90_R_a\x1C\xB7\x86\x89a'/V[\x90P_[\x81\x81\x10\x15a\x1D$W_\x88`\x01a\x1C\xD1\x84\x86a'/V[a\x1C\xDB\x91\x90a'/V[\x81Q\x81\x10a\x1C\xEBWa\x1C\xEBa'\xF6V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1D\x03Wa\x1D\x03a'\xAFV[\x85\x87\t\x95P\x83\x80a\x1D\x16Wa\x1D\x16a'\xAFV[\x81\x87\x08\x95PP`\x01\x01a\x1C\xBBV[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` a)\xFC_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\x1D\xC2W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a\x1D\xDBWa\x1D\xD8\x83\x82a'/V[\x92P[\x80\x80a\x1D\xE9Wa\x1D\xE9a'\xAFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x1C_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`@Qa\x1E{\x91\x90a(\nV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1E\xB3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\xB8V[``\x91P[P\x91P\x91Pa\x1E\xC8\x85\x83\x83a\"\xA3V[\x95\x94PPPPPV[4\x15a\x13rW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a\x1F0\x92\x91\x90a'\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a\x1FW\x92\x91\x90a(\x15V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a\x1Fy\x91\x90a(?V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a\x1F\xA3\x90\x83\x90\x83\x90` \x01a(WV[`@\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\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x13Wa \x13a#nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a =W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a T\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a \xBEW\x81\x81\x81Q\x81\x10a \x83Wa \x83a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a \xA0Wa \xA0a'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a hV[P_\x84`@Q` \x01a \xD3\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!eW_\x83\x82\x81Q\x81\x10a!\x0CWa!\x0Ca'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!)Wa!)a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!J\x92\x91\x90a({V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a \xF1V[P\x86\x88\x87`@Q` \x01a!{\x93\x92\x91\x90a(\x9FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a!\xA9\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a!\xCA\x8A`\xFF\x8D\x16a'/V[\x81\x10\x15a\"+W\x82\x81\x81Q\x81\x10a!\xE3Wa!\xE3a'\xF6V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a!\xFD\x83\x8Da'\x1CV[\x81Q\x81\x10a\"\rWa\"\ra'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a!\xBDV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\"\x9CW\x83\x81\x81Q\x81\x10a\"[Wa\"[a'\xF6V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a\"s\x91\x90a(\xD2V[a\"~\x90`\x02a)\xCCV[a\"\x88\x91\x90a(\xD2V[a\"\x92\x90\x83a'\x1CV[\x91P`\x01\x01a\"@V[P\x92\x91PPV[``\x82a\"\xB8Wa\"\xB3\x82a#\x02V[a\"\xFBV[\x81Q\x15\x80\x15a\"\xCFWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\"\xF8W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x05\xF9V[P\x80[\x93\x92PPPV[\x80Q\x15a#\x12W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a#AW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a#WW__\xFD[a#`\x83a#+V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xA5Wa#\xA5a#nV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xD4Wa#\xD4a#nV[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a#\xECW__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\x0FWa$\x0Fa#nV[`@\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\x15a$MW__\xFD[a$Ua#\x82V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a$\x80W__\xFD[a$\x8A\x86\x86a#\xDCV[\x93Pa$\x99\x86`\x80\x87\x01a$=V[\x92Pa$\xA8\x86`\xC0\x87\x01a$=V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a$\xBFW__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a$\xDAW__\xFD[a\x175\x82a#+V[__`@\x83\x85\x03\x12\x15a$\xF4W__\xFD[a$\xFD\x83a#+V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%(W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%BWa%Ba#nV[a%U`\x1F\x82\x01`\x1F\x19\x16` \x01a#\xABV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%iW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a%\x9BW__\xFD[a%\xA5\x85\x85a#\xDCV[\x92Pa%\xB4\x85`\x80\x86\x01a$=V[\x91Pa%\xC3\x85`\xC0\x86\x01a$=V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a%\xDCW__\xFD[a\x175\x83\x83a#\xDCV[__`@\x83\x85\x03\x12\x15a%\xF7W__\xFD[a&\0\x83a#+V[\x91Pa&\x0E` \x84\x01a#+V[\x90P\x92P\x92\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a&\\W__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a&vW__\xFD[a&\x7F\x85a#+V[\x93Pa&\x8D` \x86\x01a#+V[\x92P`@\x85\x015\x91Pa&\xA2``\x86\x01a#+V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a&\xE4WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a'\x01W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x178Wa\x178a'\x08V[\x81\x81\x03\x81\x81\x11\x15a\x178Wa\x178a'\x08V[\x82Q\x81R` \x80\x84\x01Q\x81\x83\x01R`@\x80\x85\x01Q\x90\x83\x01R``\x80\x85\x01Q\x90\x83\x01R\x82Q`\x80\x83\x01R\x82\x01Q`\xA0\x82\x01R`\xC0\x81\x01a\"\xFBV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a'\xA7a'\xA1\x83\x86a'|V[\x84a'|V[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a'\xDDWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_a\x175\x82\x84a'|V[_a( \x82\x85a'|V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(J\x82\x84a'|V[_\x81R`\x01\x01\x93\x92PPPV[_a(b\x82\x85a'|V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a(\x86\x82\x85a'|V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a(\xAA\x82\x86a'|V[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x178Wa\x178a'\x08V[`\x01\x81[`\x01\x84\x11\x15a)$W\x80\x85\x04\x81\x11\x15a)\x08Wa)\x08a'\x08V[`\x01\x84\x16\x15a)\x16W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a(\xEDV[\x93P\x93\x91PPV[_\x82a):WP`\x01a\x178V[\x81a)FWP_a\x178V[\x81`\x01\x81\x14a)\\W`\x02\x81\x14a)fWa)\x82V[`\x01\x91PPa\x178V[`\xFF\x84\x11\x15a)wWa)wa'\x08V[PP`\x01\x82\x1Ba\x178V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a)\xA5WP\x81\x81\na\x178V[a)\xB1_\x19\x84\x84a(\xE9V[\x80_\x19\x04\x82\x11\x15a)\xC4Wa)\xC4a'\x08V[\x02\x93\x92PPPV[_a\x175\x83\x83a),V\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
2216    );
2217    #[derive(serde::Serialize, serde::Deserialize)]
2218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2220    #[derive(Clone)]
2221    pub struct ValidatorStatus(u8);
2222    const _: () = {
2223        use alloy::sol_types as alloy_sol_types;
2224        #[automatically_derived]
2225        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
2226            #[inline]
2227            fn stv_to_tokens(
2228                &self,
2229            ) -> <alloy::sol_types::sol_data::Uint<
2230                8,
2231            > as alloy_sol_types::SolType>::Token<'_> {
2232                alloy_sol_types::private::SolTypeValue::<
2233                    alloy::sol_types::sol_data::Uint<8>,
2234                >::stv_to_tokens(self)
2235            }
2236            #[inline]
2237            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2238                <alloy::sol_types::sol_data::Uint<
2239                    8,
2240                > as alloy_sol_types::SolType>::tokenize(self)
2241                    .0
2242            }
2243            #[inline]
2244            fn stv_abi_encode_packed_to(
2245                &self,
2246                out: &mut alloy_sol_types::private::Vec<u8>,
2247            ) {
2248                <alloy::sol_types::sol_data::Uint<
2249                    8,
2250                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
2251            }
2252            #[inline]
2253            fn stv_abi_packed_encoded_size(&self) -> usize {
2254                <alloy::sol_types::sol_data::Uint<
2255                    8,
2256                > as alloy_sol_types::SolType>::abi_encoded_size(self)
2257            }
2258        }
2259        #[automatically_derived]
2260        impl ValidatorStatus {
2261            /// The Solidity type name.
2262            pub const NAME: &'static str = stringify!(@ name);
2263            /// Convert from the underlying value type.
2264            #[inline]
2265            pub const fn from_underlying(value: u8) -> Self {
2266                Self(value)
2267            }
2268            /// Return the underlying value.
2269            #[inline]
2270            pub const fn into_underlying(self) -> u8 {
2271                self.0
2272            }
2273            /// Return the single encoding of this value, delegating to the
2274            /// underlying type.
2275            #[inline]
2276            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
2277                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
2278            }
2279            /// Return the packed encoding of this value, delegating to the
2280            /// underlying type.
2281            #[inline]
2282            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
2283                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
2284            }
2285        }
2286        #[automatically_derived]
2287        impl From<u8> for ValidatorStatus {
2288            fn from(value: u8) -> Self {
2289                Self::from_underlying(value)
2290            }
2291        }
2292        #[automatically_derived]
2293        impl From<ValidatorStatus> for u8 {
2294            fn from(value: ValidatorStatus) -> Self {
2295                value.into_underlying()
2296            }
2297        }
2298        #[automatically_derived]
2299        impl alloy_sol_types::SolType for ValidatorStatus {
2300            type RustType = u8;
2301            type Token<'a> = <alloy::sol_types::sol_data::Uint<
2302                8,
2303            > as alloy_sol_types::SolType>::Token<'a>;
2304            const SOL_NAME: &'static str = Self::NAME;
2305            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2306                8,
2307            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2308            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2309                8,
2310            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2311            #[inline]
2312            fn valid_token(token: &Self::Token<'_>) -> bool {
2313                Self::type_check(token).is_ok()
2314            }
2315            #[inline]
2316            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
2317                <alloy::sol_types::sol_data::Uint<
2318                    8,
2319                > as alloy_sol_types::SolType>::type_check(token)
2320            }
2321            #[inline]
2322            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2323                <alloy::sol_types::sol_data::Uint<
2324                    8,
2325                > as alloy_sol_types::SolType>::detokenize(token)
2326            }
2327        }
2328        #[automatically_derived]
2329        impl alloy_sol_types::EventTopic for ValidatorStatus {
2330            #[inline]
2331            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2332                <alloy::sol_types::sol_data::Uint<
2333                    8,
2334                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
2335            }
2336            #[inline]
2337            fn encode_topic_preimage(
2338                rust: &Self::RustType,
2339                out: &mut alloy_sol_types::private::Vec<u8>,
2340            ) {
2341                <alloy::sol_types::sol_data::Uint<
2342                    8,
2343                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
2344            }
2345            #[inline]
2346            fn encode_topic(
2347                rust: &Self::RustType,
2348            ) -> alloy_sol_types::abi::token::WordToken {
2349                <alloy::sol_types::sol_data::Uint<
2350                    8,
2351                > as alloy_sol_types::EventTopic>::encode_topic(rust)
2352            }
2353        }
2354    };
2355    #[derive(serde::Serialize, serde::Deserialize)]
2356    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2357    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
2358```solidity
2359error AddressEmptyCode(address target);
2360```*/
2361    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2362    #[derive(Clone)]
2363    pub struct AddressEmptyCode {
2364        #[allow(missing_docs)]
2365        pub target: alloy::sol_types::private::Address,
2366    }
2367    #[allow(
2368        non_camel_case_types,
2369        non_snake_case,
2370        clippy::pub_underscore_fields,
2371        clippy::style
2372    )]
2373    const _: () = {
2374        use alloy::sol_types as alloy_sol_types;
2375        #[doc(hidden)]
2376        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2377        #[doc(hidden)]
2378        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2379        #[cfg(test)]
2380        #[allow(dead_code, unreachable_patterns)]
2381        fn _type_assertion(
2382            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2383        ) {
2384            match _t {
2385                alloy_sol_types::private::AssertTypeEq::<
2386                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2387                >(_) => {}
2388            }
2389        }
2390        #[automatically_derived]
2391        #[doc(hidden)]
2392        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
2393            fn from(value: AddressEmptyCode) -> Self {
2394                (value.target,)
2395            }
2396        }
2397        #[automatically_derived]
2398        #[doc(hidden)]
2399        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
2400            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2401                Self { target: tuple.0 }
2402            }
2403        }
2404        #[automatically_derived]
2405        impl alloy_sol_types::SolError for AddressEmptyCode {
2406            type Parameters<'a> = UnderlyingSolTuple<'a>;
2407            type Token<'a> = <Self::Parameters<
2408                'a,
2409            > as alloy_sol_types::SolType>::Token<'a>;
2410            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
2411            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
2412            #[inline]
2413            fn new<'a>(
2414                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2415            ) -> Self {
2416                tuple.into()
2417            }
2418            #[inline]
2419            fn tokenize(&self) -> Self::Token<'_> {
2420                (
2421                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2422                        &self.target,
2423                    ),
2424                )
2425            }
2426            #[inline]
2427            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2428                <Self::Parameters<
2429                    '_,
2430                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2431                    .map(Self::new)
2432            }
2433        }
2434    };
2435    #[derive(serde::Serialize, serde::Deserialize)]
2436    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2437    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
2438```solidity
2439error BLSSigVerificationFailed();
2440```*/
2441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2442    #[derive(Clone)]
2443    pub struct BLSSigVerificationFailed;
2444    #[allow(
2445        non_camel_case_types,
2446        non_snake_case,
2447        clippy::pub_underscore_fields,
2448        clippy::style
2449    )]
2450    const _: () = {
2451        use alloy::sol_types as alloy_sol_types;
2452        #[doc(hidden)]
2453        type UnderlyingSolTuple<'a> = ();
2454        #[doc(hidden)]
2455        type UnderlyingRustTuple<'a> = ();
2456        #[cfg(test)]
2457        #[allow(dead_code, unreachable_patterns)]
2458        fn _type_assertion(
2459            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2460        ) {
2461            match _t {
2462                alloy_sol_types::private::AssertTypeEq::<
2463                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2464                >(_) => {}
2465            }
2466        }
2467        #[automatically_derived]
2468        #[doc(hidden)]
2469        impl ::core::convert::From<BLSSigVerificationFailed>
2470        for UnderlyingRustTuple<'_> {
2471            fn from(value: BLSSigVerificationFailed) -> Self {
2472                ()
2473            }
2474        }
2475        #[automatically_derived]
2476        #[doc(hidden)]
2477        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2478        for BLSSigVerificationFailed {
2479            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2480                Self
2481            }
2482        }
2483        #[automatically_derived]
2484        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
2485            type Parameters<'a> = UnderlyingSolTuple<'a>;
2486            type Token<'a> = <Self::Parameters<
2487                'a,
2488            > as alloy_sol_types::SolType>::Token<'a>;
2489            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
2490            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
2491            #[inline]
2492            fn new<'a>(
2493                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2494            ) -> Self {
2495                tuple.into()
2496            }
2497            #[inline]
2498            fn tokenize(&self) -> Self::Token<'_> {
2499                ()
2500            }
2501            #[inline]
2502            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2503                <Self::Parameters<
2504                    '_,
2505                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2506                    .map(Self::new)
2507            }
2508        }
2509    };
2510    #[derive(serde::Serialize, serde::Deserialize)]
2511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2512    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
2513```solidity
2514error BN254PairingProdFailed();
2515```*/
2516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2517    #[derive(Clone)]
2518    pub struct BN254PairingProdFailed;
2519    #[allow(
2520        non_camel_case_types,
2521        non_snake_case,
2522        clippy::pub_underscore_fields,
2523        clippy::style
2524    )]
2525    const _: () = {
2526        use alloy::sol_types as alloy_sol_types;
2527        #[doc(hidden)]
2528        type UnderlyingSolTuple<'a> = ();
2529        #[doc(hidden)]
2530        type UnderlyingRustTuple<'a> = ();
2531        #[cfg(test)]
2532        #[allow(dead_code, unreachable_patterns)]
2533        fn _type_assertion(
2534            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2535        ) {
2536            match _t {
2537                alloy_sol_types::private::AssertTypeEq::<
2538                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2539                >(_) => {}
2540            }
2541        }
2542        #[automatically_derived]
2543        #[doc(hidden)]
2544        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
2545            fn from(value: BN254PairingProdFailed) -> Self {
2546                ()
2547            }
2548        }
2549        #[automatically_derived]
2550        #[doc(hidden)]
2551        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
2552            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2553                Self
2554            }
2555        }
2556        #[automatically_derived]
2557        impl alloy_sol_types::SolError for BN254PairingProdFailed {
2558            type Parameters<'a> = UnderlyingSolTuple<'a>;
2559            type Token<'a> = <Self::Parameters<
2560                'a,
2561            > as alloy_sol_types::SolType>::Token<'a>;
2562            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
2563            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
2564            #[inline]
2565            fn new<'a>(
2566                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2567            ) -> Self {
2568                tuple.into()
2569            }
2570            #[inline]
2571            fn tokenize(&self) -> Self::Token<'_> {
2572                ()
2573            }
2574            #[inline]
2575            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2576                <Self::Parameters<
2577                    '_,
2578                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2579                    .map(Self::new)
2580            }
2581        }
2582    };
2583    #[derive(serde::Serialize, serde::Deserialize)]
2584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2585    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
2586```solidity
2587error BlsKeyAlreadyUsed();
2588```*/
2589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2590    #[derive(Clone)]
2591    pub struct BlsKeyAlreadyUsed;
2592    #[allow(
2593        non_camel_case_types,
2594        non_snake_case,
2595        clippy::pub_underscore_fields,
2596        clippy::style
2597    )]
2598    const _: () = {
2599        use alloy::sol_types as alloy_sol_types;
2600        #[doc(hidden)]
2601        type UnderlyingSolTuple<'a> = ();
2602        #[doc(hidden)]
2603        type UnderlyingRustTuple<'a> = ();
2604        #[cfg(test)]
2605        #[allow(dead_code, unreachable_patterns)]
2606        fn _type_assertion(
2607            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2608        ) {
2609            match _t {
2610                alloy_sol_types::private::AssertTypeEq::<
2611                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2612                >(_) => {}
2613            }
2614        }
2615        #[automatically_derived]
2616        #[doc(hidden)]
2617        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
2618            fn from(value: BlsKeyAlreadyUsed) -> Self {
2619                ()
2620            }
2621        }
2622        #[automatically_derived]
2623        #[doc(hidden)]
2624        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
2625            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2626                Self
2627            }
2628        }
2629        #[automatically_derived]
2630        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
2631            type Parameters<'a> = UnderlyingSolTuple<'a>;
2632            type Token<'a> = <Self::Parameters<
2633                'a,
2634            > as alloy_sol_types::SolType>::Token<'a>;
2635            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
2636            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
2637            #[inline]
2638            fn new<'a>(
2639                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2640            ) -> Self {
2641                tuple.into()
2642            }
2643            #[inline]
2644            fn tokenize(&self) -> Self::Token<'_> {
2645                ()
2646            }
2647            #[inline]
2648            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2649                <Self::Parameters<
2650                    '_,
2651                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2652                    .map(Self::new)
2653            }
2654        }
2655    };
2656    #[derive(serde::Serialize, serde::Deserialize)]
2657    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2658    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
2659```solidity
2660error ERC1967InvalidImplementation(address implementation);
2661```*/
2662    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2663    #[derive(Clone)]
2664    pub struct ERC1967InvalidImplementation {
2665        #[allow(missing_docs)]
2666        pub implementation: alloy::sol_types::private::Address,
2667    }
2668    #[allow(
2669        non_camel_case_types,
2670        non_snake_case,
2671        clippy::pub_underscore_fields,
2672        clippy::style
2673    )]
2674    const _: () = {
2675        use alloy::sol_types as alloy_sol_types;
2676        #[doc(hidden)]
2677        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2678        #[doc(hidden)]
2679        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2680        #[cfg(test)]
2681        #[allow(dead_code, unreachable_patterns)]
2682        fn _type_assertion(
2683            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2684        ) {
2685            match _t {
2686                alloy_sol_types::private::AssertTypeEq::<
2687                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2688                >(_) => {}
2689            }
2690        }
2691        #[automatically_derived]
2692        #[doc(hidden)]
2693        impl ::core::convert::From<ERC1967InvalidImplementation>
2694        for UnderlyingRustTuple<'_> {
2695            fn from(value: ERC1967InvalidImplementation) -> Self {
2696                (value.implementation,)
2697            }
2698        }
2699        #[automatically_derived]
2700        #[doc(hidden)]
2701        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2702        for ERC1967InvalidImplementation {
2703            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2704                Self { implementation: tuple.0 }
2705            }
2706        }
2707        #[automatically_derived]
2708        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
2709            type Parameters<'a> = UnderlyingSolTuple<'a>;
2710            type Token<'a> = <Self::Parameters<
2711                'a,
2712            > as alloy_sol_types::SolType>::Token<'a>;
2713            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
2714            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
2715            #[inline]
2716            fn new<'a>(
2717                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2718            ) -> Self {
2719                tuple.into()
2720            }
2721            #[inline]
2722            fn tokenize(&self) -> Self::Token<'_> {
2723                (
2724                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2725                        &self.implementation,
2726                    ),
2727                )
2728            }
2729            #[inline]
2730            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2731                <Self::Parameters<
2732                    '_,
2733                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2734                    .map(Self::new)
2735            }
2736        }
2737    };
2738    #[derive(serde::Serialize, serde::Deserialize)]
2739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2740    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
2741```solidity
2742error ERC1967NonPayable();
2743```*/
2744    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2745    #[derive(Clone)]
2746    pub struct ERC1967NonPayable;
2747    #[allow(
2748        non_camel_case_types,
2749        non_snake_case,
2750        clippy::pub_underscore_fields,
2751        clippy::style
2752    )]
2753    const _: () = {
2754        use alloy::sol_types as alloy_sol_types;
2755        #[doc(hidden)]
2756        type UnderlyingSolTuple<'a> = ();
2757        #[doc(hidden)]
2758        type UnderlyingRustTuple<'a> = ();
2759        #[cfg(test)]
2760        #[allow(dead_code, unreachable_patterns)]
2761        fn _type_assertion(
2762            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2763        ) {
2764            match _t {
2765                alloy_sol_types::private::AssertTypeEq::<
2766                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2767                >(_) => {}
2768            }
2769        }
2770        #[automatically_derived]
2771        #[doc(hidden)]
2772        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
2773            fn from(value: ERC1967NonPayable) -> Self {
2774                ()
2775            }
2776        }
2777        #[automatically_derived]
2778        #[doc(hidden)]
2779        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
2780            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2781                Self
2782            }
2783        }
2784        #[automatically_derived]
2785        impl alloy_sol_types::SolError for ERC1967NonPayable {
2786            type Parameters<'a> = UnderlyingSolTuple<'a>;
2787            type Token<'a> = <Self::Parameters<
2788                'a,
2789            > as alloy_sol_types::SolType>::Token<'a>;
2790            const SIGNATURE: &'static str = "ERC1967NonPayable()";
2791            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
2792            #[inline]
2793            fn new<'a>(
2794                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2795            ) -> Self {
2796                tuple.into()
2797            }
2798            #[inline]
2799            fn tokenize(&self) -> Self::Token<'_> {
2800                ()
2801            }
2802            #[inline]
2803            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2804                <Self::Parameters<
2805                    '_,
2806                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2807                    .map(Self::new)
2808            }
2809        }
2810    };
2811    #[derive(serde::Serialize, serde::Deserialize)]
2812    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2813    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
2814```solidity
2815error ExitEscrowPeriodInvalid();
2816```*/
2817    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2818    #[derive(Clone)]
2819    pub struct ExitEscrowPeriodInvalid;
2820    #[allow(
2821        non_camel_case_types,
2822        non_snake_case,
2823        clippy::pub_underscore_fields,
2824        clippy::style
2825    )]
2826    const _: () = {
2827        use alloy::sol_types as alloy_sol_types;
2828        #[doc(hidden)]
2829        type UnderlyingSolTuple<'a> = ();
2830        #[doc(hidden)]
2831        type UnderlyingRustTuple<'a> = ();
2832        #[cfg(test)]
2833        #[allow(dead_code, unreachable_patterns)]
2834        fn _type_assertion(
2835            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2836        ) {
2837            match _t {
2838                alloy_sol_types::private::AssertTypeEq::<
2839                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2840                >(_) => {}
2841            }
2842        }
2843        #[automatically_derived]
2844        #[doc(hidden)]
2845        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
2846            fn from(value: ExitEscrowPeriodInvalid) -> Self {
2847                ()
2848            }
2849        }
2850        #[automatically_derived]
2851        #[doc(hidden)]
2852        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
2853            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2854                Self
2855            }
2856        }
2857        #[automatically_derived]
2858        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
2859            type Parameters<'a> = UnderlyingSolTuple<'a>;
2860            type Token<'a> = <Self::Parameters<
2861                'a,
2862            > as alloy_sol_types::SolType>::Token<'a>;
2863            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
2864            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
2865            #[inline]
2866            fn new<'a>(
2867                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2868            ) -> Self {
2869                tuple.into()
2870            }
2871            #[inline]
2872            fn tokenize(&self) -> Self::Token<'_> {
2873                ()
2874            }
2875            #[inline]
2876            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2877                <Self::Parameters<
2878                    '_,
2879                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2880                    .map(Self::new)
2881            }
2882        }
2883    };
2884    #[derive(serde::Serialize, serde::Deserialize)]
2885    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2886    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
2887```solidity
2888error FailedInnerCall();
2889```*/
2890    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2891    #[derive(Clone)]
2892    pub struct FailedInnerCall;
2893    #[allow(
2894        non_camel_case_types,
2895        non_snake_case,
2896        clippy::pub_underscore_fields,
2897        clippy::style
2898    )]
2899    const _: () = {
2900        use alloy::sol_types as alloy_sol_types;
2901        #[doc(hidden)]
2902        type UnderlyingSolTuple<'a> = ();
2903        #[doc(hidden)]
2904        type UnderlyingRustTuple<'a> = ();
2905        #[cfg(test)]
2906        #[allow(dead_code, unreachable_patterns)]
2907        fn _type_assertion(
2908            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2909        ) {
2910            match _t {
2911                alloy_sol_types::private::AssertTypeEq::<
2912                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2913                >(_) => {}
2914            }
2915        }
2916        #[automatically_derived]
2917        #[doc(hidden)]
2918        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
2919            fn from(value: FailedInnerCall) -> Self {
2920                ()
2921            }
2922        }
2923        #[automatically_derived]
2924        #[doc(hidden)]
2925        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
2926            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2927                Self
2928            }
2929        }
2930        #[automatically_derived]
2931        impl alloy_sol_types::SolError for FailedInnerCall {
2932            type Parameters<'a> = UnderlyingSolTuple<'a>;
2933            type Token<'a> = <Self::Parameters<
2934                'a,
2935            > as alloy_sol_types::SolType>::Token<'a>;
2936            const SIGNATURE: &'static str = "FailedInnerCall()";
2937            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
2938            #[inline]
2939            fn new<'a>(
2940                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2941            ) -> Self {
2942                tuple.into()
2943            }
2944            #[inline]
2945            fn tokenize(&self) -> Self::Token<'_> {
2946                ()
2947            }
2948            #[inline]
2949            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2950                <Self::Parameters<
2951                    '_,
2952                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2953                    .map(Self::new)
2954            }
2955        }
2956    };
2957    #[derive(serde::Serialize, serde::Deserialize)]
2958    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2959    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
2960```solidity
2961error InsufficientAllowance(uint256, uint256);
2962```*/
2963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2964    #[derive(Clone)]
2965    pub struct InsufficientAllowance {
2966        #[allow(missing_docs)]
2967        pub _0: alloy::sol_types::private::primitives::aliases::U256,
2968        #[allow(missing_docs)]
2969        pub _1: alloy::sol_types::private::primitives::aliases::U256,
2970    }
2971    #[allow(
2972        non_camel_case_types,
2973        non_snake_case,
2974        clippy::pub_underscore_fields,
2975        clippy::style
2976    )]
2977    const _: () = {
2978        use alloy::sol_types as alloy_sol_types;
2979        #[doc(hidden)]
2980        type UnderlyingSolTuple<'a> = (
2981            alloy::sol_types::sol_data::Uint<256>,
2982            alloy::sol_types::sol_data::Uint<256>,
2983        );
2984        #[doc(hidden)]
2985        type UnderlyingRustTuple<'a> = (
2986            alloy::sol_types::private::primitives::aliases::U256,
2987            alloy::sol_types::private::primitives::aliases::U256,
2988        );
2989        #[cfg(test)]
2990        #[allow(dead_code, unreachable_patterns)]
2991        fn _type_assertion(
2992            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2993        ) {
2994            match _t {
2995                alloy_sol_types::private::AssertTypeEq::<
2996                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2997                >(_) => {}
2998            }
2999        }
3000        #[automatically_derived]
3001        #[doc(hidden)]
3002        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
3003            fn from(value: InsufficientAllowance) -> Self {
3004                (value._0, value._1)
3005            }
3006        }
3007        #[automatically_derived]
3008        #[doc(hidden)]
3009        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
3010            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3011                Self { _0: tuple.0, _1: tuple.1 }
3012            }
3013        }
3014        #[automatically_derived]
3015        impl alloy_sol_types::SolError for InsufficientAllowance {
3016            type Parameters<'a> = UnderlyingSolTuple<'a>;
3017            type Token<'a> = <Self::Parameters<
3018                'a,
3019            > as alloy_sol_types::SolType>::Token<'a>;
3020            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
3021            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
3022            #[inline]
3023            fn new<'a>(
3024                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3025            ) -> Self {
3026                tuple.into()
3027            }
3028            #[inline]
3029            fn tokenize(&self) -> Self::Token<'_> {
3030                (
3031                    <alloy::sol_types::sol_data::Uint<
3032                        256,
3033                    > as alloy_sol_types::SolType>::tokenize(&self._0),
3034                    <alloy::sol_types::sol_data::Uint<
3035                        256,
3036                    > as alloy_sol_types::SolType>::tokenize(&self._1),
3037                )
3038            }
3039            #[inline]
3040            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3041                <Self::Parameters<
3042                    '_,
3043                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3044                    .map(Self::new)
3045            }
3046        }
3047    };
3048    #[derive(serde::Serialize, serde::Deserialize)]
3049    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3050    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
3051```solidity
3052error InsufficientBalance(uint256);
3053```*/
3054    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3055    #[derive(Clone)]
3056    pub struct InsufficientBalance(
3057        pub alloy::sol_types::private::primitives::aliases::U256,
3058    );
3059    #[allow(
3060        non_camel_case_types,
3061        non_snake_case,
3062        clippy::pub_underscore_fields,
3063        clippy::style
3064    )]
3065    const _: () = {
3066        use alloy::sol_types as alloy_sol_types;
3067        #[doc(hidden)]
3068        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3069        #[doc(hidden)]
3070        type UnderlyingRustTuple<'a> = (
3071            alloy::sol_types::private::primitives::aliases::U256,
3072        );
3073        #[cfg(test)]
3074        #[allow(dead_code, unreachable_patterns)]
3075        fn _type_assertion(
3076            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3077        ) {
3078            match _t {
3079                alloy_sol_types::private::AssertTypeEq::<
3080                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3081                >(_) => {}
3082            }
3083        }
3084        #[automatically_derived]
3085        #[doc(hidden)]
3086        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
3087            fn from(value: InsufficientBalance) -> Self {
3088                (value.0,)
3089            }
3090        }
3091        #[automatically_derived]
3092        #[doc(hidden)]
3093        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
3094            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3095                Self(tuple.0)
3096            }
3097        }
3098        #[automatically_derived]
3099        impl alloy_sol_types::SolError for InsufficientBalance {
3100            type Parameters<'a> = UnderlyingSolTuple<'a>;
3101            type Token<'a> = <Self::Parameters<
3102                'a,
3103            > as alloy_sol_types::SolType>::Token<'a>;
3104            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
3105            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
3106            #[inline]
3107            fn new<'a>(
3108                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3109            ) -> Self {
3110                tuple.into()
3111            }
3112            #[inline]
3113            fn tokenize(&self) -> Self::Token<'_> {
3114                (
3115                    <alloy::sol_types::sol_data::Uint<
3116                        256,
3117                    > as alloy_sol_types::SolType>::tokenize(&self.0),
3118                )
3119            }
3120            #[inline]
3121            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3122                <Self::Parameters<
3123                    '_,
3124                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3125                    .map(Self::new)
3126            }
3127        }
3128    };
3129    #[derive(serde::Serialize, serde::Deserialize)]
3130    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3131    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
3132```solidity
3133error InvalidCommission();
3134```*/
3135    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3136    #[derive(Clone)]
3137    pub struct InvalidCommission;
3138    #[allow(
3139        non_camel_case_types,
3140        non_snake_case,
3141        clippy::pub_underscore_fields,
3142        clippy::style
3143    )]
3144    const _: () = {
3145        use alloy::sol_types as alloy_sol_types;
3146        #[doc(hidden)]
3147        type UnderlyingSolTuple<'a> = ();
3148        #[doc(hidden)]
3149        type UnderlyingRustTuple<'a> = ();
3150        #[cfg(test)]
3151        #[allow(dead_code, unreachable_patterns)]
3152        fn _type_assertion(
3153            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3154        ) {
3155            match _t {
3156                alloy_sol_types::private::AssertTypeEq::<
3157                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3158                >(_) => {}
3159            }
3160        }
3161        #[automatically_derived]
3162        #[doc(hidden)]
3163        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
3164            fn from(value: InvalidCommission) -> Self {
3165                ()
3166            }
3167        }
3168        #[automatically_derived]
3169        #[doc(hidden)]
3170        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
3171            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3172                Self
3173            }
3174        }
3175        #[automatically_derived]
3176        impl alloy_sol_types::SolError for InvalidCommission {
3177            type Parameters<'a> = UnderlyingSolTuple<'a>;
3178            type Token<'a> = <Self::Parameters<
3179                'a,
3180            > as alloy_sol_types::SolType>::Token<'a>;
3181            const SIGNATURE: &'static str = "InvalidCommission()";
3182            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
3183            #[inline]
3184            fn new<'a>(
3185                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3186            ) -> Self {
3187                tuple.into()
3188            }
3189            #[inline]
3190            fn tokenize(&self) -> Self::Token<'_> {
3191                ()
3192            }
3193            #[inline]
3194            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3195                <Self::Parameters<
3196                    '_,
3197                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3198                    .map(Self::new)
3199            }
3200        }
3201    };
3202    #[derive(serde::Serialize, serde::Deserialize)]
3203    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3204    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
3205```solidity
3206error InvalidG1();
3207```*/
3208    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3209    #[derive(Clone)]
3210    pub struct InvalidG1;
3211    #[allow(
3212        non_camel_case_types,
3213        non_snake_case,
3214        clippy::pub_underscore_fields,
3215        clippy::style
3216    )]
3217    const _: () = {
3218        use alloy::sol_types as alloy_sol_types;
3219        #[doc(hidden)]
3220        type UnderlyingSolTuple<'a> = ();
3221        #[doc(hidden)]
3222        type UnderlyingRustTuple<'a> = ();
3223        #[cfg(test)]
3224        #[allow(dead_code, unreachable_patterns)]
3225        fn _type_assertion(
3226            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3227        ) {
3228            match _t {
3229                alloy_sol_types::private::AssertTypeEq::<
3230                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3231                >(_) => {}
3232            }
3233        }
3234        #[automatically_derived]
3235        #[doc(hidden)]
3236        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
3237            fn from(value: InvalidG1) -> Self {
3238                ()
3239            }
3240        }
3241        #[automatically_derived]
3242        #[doc(hidden)]
3243        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
3244            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3245                Self
3246            }
3247        }
3248        #[automatically_derived]
3249        impl alloy_sol_types::SolError for InvalidG1 {
3250            type Parameters<'a> = UnderlyingSolTuple<'a>;
3251            type Token<'a> = <Self::Parameters<
3252                'a,
3253            > as alloy_sol_types::SolType>::Token<'a>;
3254            const SIGNATURE: &'static str = "InvalidG1()";
3255            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
3256            #[inline]
3257            fn new<'a>(
3258                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3259            ) -> Self {
3260                tuple.into()
3261            }
3262            #[inline]
3263            fn tokenize(&self) -> Self::Token<'_> {
3264                ()
3265            }
3266            #[inline]
3267            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3268                <Self::Parameters<
3269                    '_,
3270                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3271                    .map(Self::new)
3272            }
3273        }
3274    };
3275    #[derive(serde::Serialize, serde::Deserialize)]
3276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3277    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
3278```solidity
3279error InvalidInitialization();
3280```*/
3281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3282    #[derive(Clone)]
3283    pub struct InvalidInitialization;
3284    #[allow(
3285        non_camel_case_types,
3286        non_snake_case,
3287        clippy::pub_underscore_fields,
3288        clippy::style
3289    )]
3290    const _: () = {
3291        use alloy::sol_types as alloy_sol_types;
3292        #[doc(hidden)]
3293        type UnderlyingSolTuple<'a> = ();
3294        #[doc(hidden)]
3295        type UnderlyingRustTuple<'a> = ();
3296        #[cfg(test)]
3297        #[allow(dead_code, unreachable_patterns)]
3298        fn _type_assertion(
3299            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3300        ) {
3301            match _t {
3302                alloy_sol_types::private::AssertTypeEq::<
3303                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3304                >(_) => {}
3305            }
3306        }
3307        #[automatically_derived]
3308        #[doc(hidden)]
3309        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
3310            fn from(value: InvalidInitialization) -> Self {
3311                ()
3312            }
3313        }
3314        #[automatically_derived]
3315        #[doc(hidden)]
3316        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
3317            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3318                Self
3319            }
3320        }
3321        #[automatically_derived]
3322        impl alloy_sol_types::SolError for InvalidInitialization {
3323            type Parameters<'a> = UnderlyingSolTuple<'a>;
3324            type Token<'a> = <Self::Parameters<
3325                'a,
3326            > as alloy_sol_types::SolType>::Token<'a>;
3327            const SIGNATURE: &'static str = "InvalidInitialization()";
3328            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
3329            #[inline]
3330            fn new<'a>(
3331                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3332            ) -> Self {
3333                tuple.into()
3334            }
3335            #[inline]
3336            fn tokenize(&self) -> Self::Token<'_> {
3337                ()
3338            }
3339            #[inline]
3340            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3341                <Self::Parameters<
3342                    '_,
3343                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3344                    .map(Self::new)
3345            }
3346        }
3347    };
3348    #[derive(serde::Serialize, serde::Deserialize)]
3349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3350    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
3351```solidity
3352error InvalidSchnorrVK();
3353```*/
3354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3355    #[derive(Clone)]
3356    pub struct InvalidSchnorrVK;
3357    #[allow(
3358        non_camel_case_types,
3359        non_snake_case,
3360        clippy::pub_underscore_fields,
3361        clippy::style
3362    )]
3363    const _: () = {
3364        use alloy::sol_types as alloy_sol_types;
3365        #[doc(hidden)]
3366        type UnderlyingSolTuple<'a> = ();
3367        #[doc(hidden)]
3368        type UnderlyingRustTuple<'a> = ();
3369        #[cfg(test)]
3370        #[allow(dead_code, unreachable_patterns)]
3371        fn _type_assertion(
3372            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3373        ) {
3374            match _t {
3375                alloy_sol_types::private::AssertTypeEq::<
3376                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3377                >(_) => {}
3378            }
3379        }
3380        #[automatically_derived]
3381        #[doc(hidden)]
3382        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
3383            fn from(value: InvalidSchnorrVK) -> Self {
3384                ()
3385            }
3386        }
3387        #[automatically_derived]
3388        #[doc(hidden)]
3389        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
3390            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3391                Self
3392            }
3393        }
3394        #[automatically_derived]
3395        impl alloy_sol_types::SolError for InvalidSchnorrVK {
3396            type Parameters<'a> = UnderlyingSolTuple<'a>;
3397            type Token<'a> = <Self::Parameters<
3398                'a,
3399            > as alloy_sol_types::SolType>::Token<'a>;
3400            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
3401            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
3402            #[inline]
3403            fn new<'a>(
3404                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3405            ) -> Self {
3406                tuple.into()
3407            }
3408            #[inline]
3409            fn tokenize(&self) -> Self::Token<'_> {
3410                ()
3411            }
3412            #[inline]
3413            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3414                <Self::Parameters<
3415                    '_,
3416                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3417                    .map(Self::new)
3418            }
3419        }
3420    };
3421    #[derive(serde::Serialize, serde::Deserialize)]
3422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3423    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
3424```solidity
3425error NotInitializing();
3426```*/
3427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3428    #[derive(Clone)]
3429    pub struct NotInitializing;
3430    #[allow(
3431        non_camel_case_types,
3432        non_snake_case,
3433        clippy::pub_underscore_fields,
3434        clippy::style
3435    )]
3436    const _: () = {
3437        use alloy::sol_types as alloy_sol_types;
3438        #[doc(hidden)]
3439        type UnderlyingSolTuple<'a> = ();
3440        #[doc(hidden)]
3441        type UnderlyingRustTuple<'a> = ();
3442        #[cfg(test)]
3443        #[allow(dead_code, unreachable_patterns)]
3444        fn _type_assertion(
3445            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3446        ) {
3447            match _t {
3448                alloy_sol_types::private::AssertTypeEq::<
3449                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3450                >(_) => {}
3451            }
3452        }
3453        #[automatically_derived]
3454        #[doc(hidden)]
3455        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
3456            fn from(value: NotInitializing) -> Self {
3457                ()
3458            }
3459        }
3460        #[automatically_derived]
3461        #[doc(hidden)]
3462        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
3463            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3464                Self
3465            }
3466        }
3467        #[automatically_derived]
3468        impl alloy_sol_types::SolError for NotInitializing {
3469            type Parameters<'a> = UnderlyingSolTuple<'a>;
3470            type Token<'a> = <Self::Parameters<
3471                'a,
3472            > as alloy_sol_types::SolType>::Token<'a>;
3473            const SIGNATURE: &'static str = "NotInitializing()";
3474            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
3475            #[inline]
3476            fn new<'a>(
3477                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3478            ) -> Self {
3479                tuple.into()
3480            }
3481            #[inline]
3482            fn tokenize(&self) -> Self::Token<'_> {
3483                ()
3484            }
3485            #[inline]
3486            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3487                <Self::Parameters<
3488                    '_,
3489                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3490                    .map(Self::new)
3491            }
3492        }
3493    };
3494    #[derive(serde::Serialize, serde::Deserialize)]
3495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3496    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
3497```solidity
3498error NothingToWithdraw();
3499```*/
3500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3501    #[derive(Clone)]
3502    pub struct NothingToWithdraw;
3503    #[allow(
3504        non_camel_case_types,
3505        non_snake_case,
3506        clippy::pub_underscore_fields,
3507        clippy::style
3508    )]
3509    const _: () = {
3510        use alloy::sol_types as alloy_sol_types;
3511        #[doc(hidden)]
3512        type UnderlyingSolTuple<'a> = ();
3513        #[doc(hidden)]
3514        type UnderlyingRustTuple<'a> = ();
3515        #[cfg(test)]
3516        #[allow(dead_code, unreachable_patterns)]
3517        fn _type_assertion(
3518            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3519        ) {
3520            match _t {
3521                alloy_sol_types::private::AssertTypeEq::<
3522                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3523                >(_) => {}
3524            }
3525        }
3526        #[automatically_derived]
3527        #[doc(hidden)]
3528        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
3529            fn from(value: NothingToWithdraw) -> Self {
3530                ()
3531            }
3532        }
3533        #[automatically_derived]
3534        #[doc(hidden)]
3535        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
3536            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3537                Self
3538            }
3539        }
3540        #[automatically_derived]
3541        impl alloy_sol_types::SolError for NothingToWithdraw {
3542            type Parameters<'a> = UnderlyingSolTuple<'a>;
3543            type Token<'a> = <Self::Parameters<
3544                'a,
3545            > as alloy_sol_types::SolType>::Token<'a>;
3546            const SIGNATURE: &'static str = "NothingToWithdraw()";
3547            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
3548            #[inline]
3549            fn new<'a>(
3550                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3551            ) -> Self {
3552                tuple.into()
3553            }
3554            #[inline]
3555            fn tokenize(&self) -> Self::Token<'_> {
3556                ()
3557            }
3558            #[inline]
3559            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3560                <Self::Parameters<
3561                    '_,
3562                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3563                    .map(Self::new)
3564            }
3565        }
3566    };
3567    #[derive(serde::Serialize, serde::Deserialize)]
3568    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3569    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
3570```solidity
3571error OwnableInvalidOwner(address owner);
3572```*/
3573    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3574    #[derive(Clone)]
3575    pub struct OwnableInvalidOwner {
3576        #[allow(missing_docs)]
3577        pub owner: alloy::sol_types::private::Address,
3578    }
3579    #[allow(
3580        non_camel_case_types,
3581        non_snake_case,
3582        clippy::pub_underscore_fields,
3583        clippy::style
3584    )]
3585    const _: () = {
3586        use alloy::sol_types as alloy_sol_types;
3587        #[doc(hidden)]
3588        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3589        #[doc(hidden)]
3590        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3591        #[cfg(test)]
3592        #[allow(dead_code, unreachable_patterns)]
3593        fn _type_assertion(
3594            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3595        ) {
3596            match _t {
3597                alloy_sol_types::private::AssertTypeEq::<
3598                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3599                >(_) => {}
3600            }
3601        }
3602        #[automatically_derived]
3603        #[doc(hidden)]
3604        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
3605            fn from(value: OwnableInvalidOwner) -> Self {
3606                (value.owner,)
3607            }
3608        }
3609        #[automatically_derived]
3610        #[doc(hidden)]
3611        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
3612            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3613                Self { owner: tuple.0 }
3614            }
3615        }
3616        #[automatically_derived]
3617        impl alloy_sol_types::SolError for OwnableInvalidOwner {
3618            type Parameters<'a> = UnderlyingSolTuple<'a>;
3619            type Token<'a> = <Self::Parameters<
3620                'a,
3621            > as alloy_sol_types::SolType>::Token<'a>;
3622            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
3623            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
3624            #[inline]
3625            fn new<'a>(
3626                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3627            ) -> Self {
3628                tuple.into()
3629            }
3630            #[inline]
3631            fn tokenize(&self) -> Self::Token<'_> {
3632                (
3633                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3634                        &self.owner,
3635                    ),
3636                )
3637            }
3638            #[inline]
3639            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3640                <Self::Parameters<
3641                    '_,
3642                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3643                    .map(Self::new)
3644            }
3645        }
3646    };
3647    #[derive(serde::Serialize, serde::Deserialize)]
3648    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3649    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
3650```solidity
3651error OwnableUnauthorizedAccount(address account);
3652```*/
3653    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3654    #[derive(Clone)]
3655    pub struct OwnableUnauthorizedAccount {
3656        #[allow(missing_docs)]
3657        pub account: alloy::sol_types::private::Address,
3658    }
3659    #[allow(
3660        non_camel_case_types,
3661        non_snake_case,
3662        clippy::pub_underscore_fields,
3663        clippy::style
3664    )]
3665    const _: () = {
3666        use alloy::sol_types as alloy_sol_types;
3667        #[doc(hidden)]
3668        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3669        #[doc(hidden)]
3670        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3671        #[cfg(test)]
3672        #[allow(dead_code, unreachable_patterns)]
3673        fn _type_assertion(
3674            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3675        ) {
3676            match _t {
3677                alloy_sol_types::private::AssertTypeEq::<
3678                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3679                >(_) => {}
3680            }
3681        }
3682        #[automatically_derived]
3683        #[doc(hidden)]
3684        impl ::core::convert::From<OwnableUnauthorizedAccount>
3685        for UnderlyingRustTuple<'_> {
3686            fn from(value: OwnableUnauthorizedAccount) -> Self {
3687                (value.account,)
3688            }
3689        }
3690        #[automatically_derived]
3691        #[doc(hidden)]
3692        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3693        for OwnableUnauthorizedAccount {
3694            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3695                Self { account: tuple.0 }
3696            }
3697        }
3698        #[automatically_derived]
3699        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
3700            type Parameters<'a> = UnderlyingSolTuple<'a>;
3701            type Token<'a> = <Self::Parameters<
3702                'a,
3703            > as alloy_sol_types::SolType>::Token<'a>;
3704            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
3705            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
3706            #[inline]
3707            fn new<'a>(
3708                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3709            ) -> Self {
3710                tuple.into()
3711            }
3712            #[inline]
3713            fn tokenize(&self) -> Self::Token<'_> {
3714                (
3715                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3716                        &self.account,
3717                    ),
3718                )
3719            }
3720            #[inline]
3721            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3722                <Self::Parameters<
3723                    '_,
3724                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3725                    .map(Self::new)
3726            }
3727        }
3728    };
3729    #[derive(serde::Serialize, serde::Deserialize)]
3730    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3731    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
3732```solidity
3733error OwnershipCannotBeRenounced();
3734```*/
3735    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3736    #[derive(Clone)]
3737    pub struct OwnershipCannotBeRenounced;
3738    #[allow(
3739        non_camel_case_types,
3740        non_snake_case,
3741        clippy::pub_underscore_fields,
3742        clippy::style
3743    )]
3744    const _: () = {
3745        use alloy::sol_types as alloy_sol_types;
3746        #[doc(hidden)]
3747        type UnderlyingSolTuple<'a> = ();
3748        #[doc(hidden)]
3749        type UnderlyingRustTuple<'a> = ();
3750        #[cfg(test)]
3751        #[allow(dead_code, unreachable_patterns)]
3752        fn _type_assertion(
3753            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3754        ) {
3755            match _t {
3756                alloy_sol_types::private::AssertTypeEq::<
3757                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3758                >(_) => {}
3759            }
3760        }
3761        #[automatically_derived]
3762        #[doc(hidden)]
3763        impl ::core::convert::From<OwnershipCannotBeRenounced>
3764        for UnderlyingRustTuple<'_> {
3765            fn from(value: OwnershipCannotBeRenounced) -> Self {
3766                ()
3767            }
3768        }
3769        #[automatically_derived]
3770        #[doc(hidden)]
3771        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3772        for OwnershipCannotBeRenounced {
3773            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3774                Self
3775            }
3776        }
3777        #[automatically_derived]
3778        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
3779            type Parameters<'a> = UnderlyingSolTuple<'a>;
3780            type Token<'a> = <Self::Parameters<
3781                'a,
3782            > as alloy_sol_types::SolType>::Token<'a>;
3783            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
3784            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
3785            #[inline]
3786            fn new<'a>(
3787                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3788            ) -> Self {
3789                tuple.into()
3790            }
3791            #[inline]
3792            fn tokenize(&self) -> Self::Token<'_> {
3793                ()
3794            }
3795            #[inline]
3796            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3797                <Self::Parameters<
3798                    '_,
3799                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3800                    .map(Self::new)
3801            }
3802        }
3803    };
3804    #[derive(serde::Serialize, serde::Deserialize)]
3805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3806    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
3807```solidity
3808error PowPrecompileFailed();
3809```*/
3810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3811    #[derive(Clone)]
3812    pub struct PowPrecompileFailed;
3813    #[allow(
3814        non_camel_case_types,
3815        non_snake_case,
3816        clippy::pub_underscore_fields,
3817        clippy::style
3818    )]
3819    const _: () = {
3820        use alloy::sol_types as alloy_sol_types;
3821        #[doc(hidden)]
3822        type UnderlyingSolTuple<'a> = ();
3823        #[doc(hidden)]
3824        type UnderlyingRustTuple<'a> = ();
3825        #[cfg(test)]
3826        #[allow(dead_code, unreachable_patterns)]
3827        fn _type_assertion(
3828            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3829        ) {
3830            match _t {
3831                alloy_sol_types::private::AssertTypeEq::<
3832                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3833                >(_) => {}
3834            }
3835        }
3836        #[automatically_derived]
3837        #[doc(hidden)]
3838        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
3839            fn from(value: PowPrecompileFailed) -> Self {
3840                ()
3841            }
3842        }
3843        #[automatically_derived]
3844        #[doc(hidden)]
3845        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
3846            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3847                Self
3848            }
3849        }
3850        #[automatically_derived]
3851        impl alloy_sol_types::SolError for PowPrecompileFailed {
3852            type Parameters<'a> = UnderlyingSolTuple<'a>;
3853            type Token<'a> = <Self::Parameters<
3854                'a,
3855            > as alloy_sol_types::SolType>::Token<'a>;
3856            const SIGNATURE: &'static str = "PowPrecompileFailed()";
3857            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
3858            #[inline]
3859            fn new<'a>(
3860                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3861            ) -> Self {
3862                tuple.into()
3863            }
3864            #[inline]
3865            fn tokenize(&self) -> Self::Token<'_> {
3866                ()
3867            }
3868            #[inline]
3869            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3870                <Self::Parameters<
3871                    '_,
3872                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3873                    .map(Self::new)
3874            }
3875        }
3876    };
3877    #[derive(serde::Serialize, serde::Deserialize)]
3878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3879    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
3880```solidity
3881error PrematureWithdrawal();
3882```*/
3883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3884    #[derive(Clone)]
3885    pub struct PrematureWithdrawal;
3886    #[allow(
3887        non_camel_case_types,
3888        non_snake_case,
3889        clippy::pub_underscore_fields,
3890        clippy::style
3891    )]
3892    const _: () = {
3893        use alloy::sol_types as alloy_sol_types;
3894        #[doc(hidden)]
3895        type UnderlyingSolTuple<'a> = ();
3896        #[doc(hidden)]
3897        type UnderlyingRustTuple<'a> = ();
3898        #[cfg(test)]
3899        #[allow(dead_code, unreachable_patterns)]
3900        fn _type_assertion(
3901            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3902        ) {
3903            match _t {
3904                alloy_sol_types::private::AssertTypeEq::<
3905                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3906                >(_) => {}
3907            }
3908        }
3909        #[automatically_derived]
3910        #[doc(hidden)]
3911        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
3912            fn from(value: PrematureWithdrawal) -> Self {
3913                ()
3914            }
3915        }
3916        #[automatically_derived]
3917        #[doc(hidden)]
3918        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
3919            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3920                Self
3921            }
3922        }
3923        #[automatically_derived]
3924        impl alloy_sol_types::SolError for PrematureWithdrawal {
3925            type Parameters<'a> = UnderlyingSolTuple<'a>;
3926            type Token<'a> = <Self::Parameters<
3927                'a,
3928            > as alloy_sol_types::SolType>::Token<'a>;
3929            const SIGNATURE: &'static str = "PrematureWithdrawal()";
3930            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
3931            #[inline]
3932            fn new<'a>(
3933                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3934            ) -> Self {
3935                tuple.into()
3936            }
3937            #[inline]
3938            fn tokenize(&self) -> Self::Token<'_> {
3939                ()
3940            }
3941            #[inline]
3942            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3943                <Self::Parameters<
3944                    '_,
3945                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3946                    .map(Self::new)
3947            }
3948        }
3949    };
3950    #[derive(serde::Serialize, serde::Deserialize)]
3951    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3952    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
3953```solidity
3954error UUPSUnauthorizedCallContext();
3955```*/
3956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3957    #[derive(Clone)]
3958    pub struct UUPSUnauthorizedCallContext;
3959    #[allow(
3960        non_camel_case_types,
3961        non_snake_case,
3962        clippy::pub_underscore_fields,
3963        clippy::style
3964    )]
3965    const _: () = {
3966        use alloy::sol_types as alloy_sol_types;
3967        #[doc(hidden)]
3968        type UnderlyingSolTuple<'a> = ();
3969        #[doc(hidden)]
3970        type UnderlyingRustTuple<'a> = ();
3971        #[cfg(test)]
3972        #[allow(dead_code, unreachable_patterns)]
3973        fn _type_assertion(
3974            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3975        ) {
3976            match _t {
3977                alloy_sol_types::private::AssertTypeEq::<
3978                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3979                >(_) => {}
3980            }
3981        }
3982        #[automatically_derived]
3983        #[doc(hidden)]
3984        impl ::core::convert::From<UUPSUnauthorizedCallContext>
3985        for UnderlyingRustTuple<'_> {
3986            fn from(value: UUPSUnauthorizedCallContext) -> Self {
3987                ()
3988            }
3989        }
3990        #[automatically_derived]
3991        #[doc(hidden)]
3992        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3993        for UUPSUnauthorizedCallContext {
3994            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3995                Self
3996            }
3997        }
3998        #[automatically_derived]
3999        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
4000            type Parameters<'a> = UnderlyingSolTuple<'a>;
4001            type Token<'a> = <Self::Parameters<
4002                'a,
4003            > as alloy_sol_types::SolType>::Token<'a>;
4004            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
4005            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
4006            #[inline]
4007            fn new<'a>(
4008                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4009            ) -> Self {
4010                tuple.into()
4011            }
4012            #[inline]
4013            fn tokenize(&self) -> Self::Token<'_> {
4014                ()
4015            }
4016            #[inline]
4017            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4018                <Self::Parameters<
4019                    '_,
4020                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4021                    .map(Self::new)
4022            }
4023        }
4024    };
4025    #[derive(serde::Serialize, serde::Deserialize)]
4026    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4027    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
4028```solidity
4029error UUPSUnsupportedProxiableUUID(bytes32 slot);
4030```*/
4031    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4032    #[derive(Clone)]
4033    pub struct UUPSUnsupportedProxiableUUID {
4034        #[allow(missing_docs)]
4035        pub slot: alloy::sol_types::private::FixedBytes<32>,
4036    }
4037    #[allow(
4038        non_camel_case_types,
4039        non_snake_case,
4040        clippy::pub_underscore_fields,
4041        clippy::style
4042    )]
4043    const _: () = {
4044        use alloy::sol_types as alloy_sol_types;
4045        #[doc(hidden)]
4046        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4047        #[doc(hidden)]
4048        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4049        #[cfg(test)]
4050        #[allow(dead_code, unreachable_patterns)]
4051        fn _type_assertion(
4052            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4053        ) {
4054            match _t {
4055                alloy_sol_types::private::AssertTypeEq::<
4056                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4057                >(_) => {}
4058            }
4059        }
4060        #[automatically_derived]
4061        #[doc(hidden)]
4062        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
4063        for UnderlyingRustTuple<'_> {
4064            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
4065                (value.slot,)
4066            }
4067        }
4068        #[automatically_derived]
4069        #[doc(hidden)]
4070        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4071        for UUPSUnsupportedProxiableUUID {
4072            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4073                Self { slot: tuple.0 }
4074            }
4075        }
4076        #[automatically_derived]
4077        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
4078            type Parameters<'a> = UnderlyingSolTuple<'a>;
4079            type Token<'a> = <Self::Parameters<
4080                'a,
4081            > as alloy_sol_types::SolType>::Token<'a>;
4082            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
4083            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
4084            #[inline]
4085            fn new<'a>(
4086                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4087            ) -> Self {
4088                tuple.into()
4089            }
4090            #[inline]
4091            fn tokenize(&self) -> Self::Token<'_> {
4092                (
4093                    <alloy::sol_types::sol_data::FixedBytes<
4094                        32,
4095                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
4096                )
4097            }
4098            #[inline]
4099            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4100                <Self::Parameters<
4101                    '_,
4102                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4103                    .map(Self::new)
4104            }
4105        }
4106    };
4107    #[derive(serde::Serialize, serde::Deserialize)]
4108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4109    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
4110```solidity
4111error UndelegationAlreadyExists();
4112```*/
4113    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4114    #[derive(Clone)]
4115    pub struct UndelegationAlreadyExists;
4116    #[allow(
4117        non_camel_case_types,
4118        non_snake_case,
4119        clippy::pub_underscore_fields,
4120        clippy::style
4121    )]
4122    const _: () = {
4123        use alloy::sol_types as alloy_sol_types;
4124        #[doc(hidden)]
4125        type UnderlyingSolTuple<'a> = ();
4126        #[doc(hidden)]
4127        type UnderlyingRustTuple<'a> = ();
4128        #[cfg(test)]
4129        #[allow(dead_code, unreachable_patterns)]
4130        fn _type_assertion(
4131            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4132        ) {
4133            match _t {
4134                alloy_sol_types::private::AssertTypeEq::<
4135                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4136                >(_) => {}
4137            }
4138        }
4139        #[automatically_derived]
4140        #[doc(hidden)]
4141        impl ::core::convert::From<UndelegationAlreadyExists>
4142        for UnderlyingRustTuple<'_> {
4143            fn from(value: UndelegationAlreadyExists) -> Self {
4144                ()
4145            }
4146        }
4147        #[automatically_derived]
4148        #[doc(hidden)]
4149        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4150        for UndelegationAlreadyExists {
4151            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4152                Self
4153            }
4154        }
4155        #[automatically_derived]
4156        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
4157            type Parameters<'a> = UnderlyingSolTuple<'a>;
4158            type Token<'a> = <Self::Parameters<
4159                'a,
4160            > as alloy_sol_types::SolType>::Token<'a>;
4161            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
4162            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
4163            #[inline]
4164            fn new<'a>(
4165                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4166            ) -> Self {
4167                tuple.into()
4168            }
4169            #[inline]
4170            fn tokenize(&self) -> Self::Token<'_> {
4171                ()
4172            }
4173            #[inline]
4174            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4175                <Self::Parameters<
4176                    '_,
4177                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4178                    .map(Self::new)
4179            }
4180        }
4181    };
4182    #[derive(serde::Serialize, serde::Deserialize)]
4183    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4184    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
4185```solidity
4186error ValidatorAlreadyExited();
4187```*/
4188    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4189    #[derive(Clone)]
4190    pub struct ValidatorAlreadyExited;
4191    #[allow(
4192        non_camel_case_types,
4193        non_snake_case,
4194        clippy::pub_underscore_fields,
4195        clippy::style
4196    )]
4197    const _: () = {
4198        use alloy::sol_types as alloy_sol_types;
4199        #[doc(hidden)]
4200        type UnderlyingSolTuple<'a> = ();
4201        #[doc(hidden)]
4202        type UnderlyingRustTuple<'a> = ();
4203        #[cfg(test)]
4204        #[allow(dead_code, unreachable_patterns)]
4205        fn _type_assertion(
4206            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4207        ) {
4208            match _t {
4209                alloy_sol_types::private::AssertTypeEq::<
4210                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4211                >(_) => {}
4212            }
4213        }
4214        #[automatically_derived]
4215        #[doc(hidden)]
4216        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
4217            fn from(value: ValidatorAlreadyExited) -> Self {
4218                ()
4219            }
4220        }
4221        #[automatically_derived]
4222        #[doc(hidden)]
4223        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
4224            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4225                Self
4226            }
4227        }
4228        #[automatically_derived]
4229        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
4230            type Parameters<'a> = UnderlyingSolTuple<'a>;
4231            type Token<'a> = <Self::Parameters<
4232                'a,
4233            > as alloy_sol_types::SolType>::Token<'a>;
4234            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
4235            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
4236            #[inline]
4237            fn new<'a>(
4238                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4239            ) -> Self {
4240                tuple.into()
4241            }
4242            #[inline]
4243            fn tokenize(&self) -> Self::Token<'_> {
4244                ()
4245            }
4246            #[inline]
4247            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4248                <Self::Parameters<
4249                    '_,
4250                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4251                    .map(Self::new)
4252            }
4253        }
4254    };
4255    #[derive(serde::Serialize, serde::Deserialize)]
4256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4257    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
4258```solidity
4259error ValidatorAlreadyRegistered();
4260```*/
4261    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4262    #[derive(Clone)]
4263    pub struct ValidatorAlreadyRegistered;
4264    #[allow(
4265        non_camel_case_types,
4266        non_snake_case,
4267        clippy::pub_underscore_fields,
4268        clippy::style
4269    )]
4270    const _: () = {
4271        use alloy::sol_types as alloy_sol_types;
4272        #[doc(hidden)]
4273        type UnderlyingSolTuple<'a> = ();
4274        #[doc(hidden)]
4275        type UnderlyingRustTuple<'a> = ();
4276        #[cfg(test)]
4277        #[allow(dead_code, unreachable_patterns)]
4278        fn _type_assertion(
4279            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4280        ) {
4281            match _t {
4282                alloy_sol_types::private::AssertTypeEq::<
4283                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4284                >(_) => {}
4285            }
4286        }
4287        #[automatically_derived]
4288        #[doc(hidden)]
4289        impl ::core::convert::From<ValidatorAlreadyRegistered>
4290        for UnderlyingRustTuple<'_> {
4291            fn from(value: ValidatorAlreadyRegistered) -> Self {
4292                ()
4293            }
4294        }
4295        #[automatically_derived]
4296        #[doc(hidden)]
4297        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4298        for ValidatorAlreadyRegistered {
4299            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4300                Self
4301            }
4302        }
4303        #[automatically_derived]
4304        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
4305            type Parameters<'a> = UnderlyingSolTuple<'a>;
4306            type Token<'a> = <Self::Parameters<
4307                'a,
4308            > as alloy_sol_types::SolType>::Token<'a>;
4309            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
4310            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
4311            #[inline]
4312            fn new<'a>(
4313                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4314            ) -> Self {
4315                tuple.into()
4316            }
4317            #[inline]
4318            fn tokenize(&self) -> Self::Token<'_> {
4319                ()
4320            }
4321            #[inline]
4322            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4323                <Self::Parameters<
4324                    '_,
4325                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4326                    .map(Self::new)
4327            }
4328        }
4329    };
4330    #[derive(serde::Serialize, serde::Deserialize)]
4331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4332    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
4333```solidity
4334error ValidatorInactive();
4335```*/
4336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4337    #[derive(Clone)]
4338    pub struct ValidatorInactive;
4339    #[allow(
4340        non_camel_case_types,
4341        non_snake_case,
4342        clippy::pub_underscore_fields,
4343        clippy::style
4344    )]
4345    const _: () = {
4346        use alloy::sol_types as alloy_sol_types;
4347        #[doc(hidden)]
4348        type UnderlyingSolTuple<'a> = ();
4349        #[doc(hidden)]
4350        type UnderlyingRustTuple<'a> = ();
4351        #[cfg(test)]
4352        #[allow(dead_code, unreachable_patterns)]
4353        fn _type_assertion(
4354            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4355        ) {
4356            match _t {
4357                alloy_sol_types::private::AssertTypeEq::<
4358                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4359                >(_) => {}
4360            }
4361        }
4362        #[automatically_derived]
4363        #[doc(hidden)]
4364        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
4365            fn from(value: ValidatorInactive) -> Self {
4366                ()
4367            }
4368        }
4369        #[automatically_derived]
4370        #[doc(hidden)]
4371        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
4372            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4373                Self
4374            }
4375        }
4376        #[automatically_derived]
4377        impl alloy_sol_types::SolError for ValidatorInactive {
4378            type Parameters<'a> = UnderlyingSolTuple<'a>;
4379            type Token<'a> = <Self::Parameters<
4380                'a,
4381            > as alloy_sol_types::SolType>::Token<'a>;
4382            const SIGNATURE: &'static str = "ValidatorInactive()";
4383            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
4384            #[inline]
4385            fn new<'a>(
4386                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4387            ) -> Self {
4388                tuple.into()
4389            }
4390            #[inline]
4391            fn tokenize(&self) -> Self::Token<'_> {
4392                ()
4393            }
4394            #[inline]
4395            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4396                <Self::Parameters<
4397                    '_,
4398                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4399                    .map(Self::new)
4400            }
4401        }
4402    };
4403    #[derive(serde::Serialize, serde::Deserialize)]
4404    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4405    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
4406```solidity
4407error ValidatorNotExited();
4408```*/
4409    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4410    #[derive(Clone)]
4411    pub struct ValidatorNotExited;
4412    #[allow(
4413        non_camel_case_types,
4414        non_snake_case,
4415        clippy::pub_underscore_fields,
4416        clippy::style
4417    )]
4418    const _: () = {
4419        use alloy::sol_types as alloy_sol_types;
4420        #[doc(hidden)]
4421        type UnderlyingSolTuple<'a> = ();
4422        #[doc(hidden)]
4423        type UnderlyingRustTuple<'a> = ();
4424        #[cfg(test)]
4425        #[allow(dead_code, unreachable_patterns)]
4426        fn _type_assertion(
4427            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4428        ) {
4429            match _t {
4430                alloy_sol_types::private::AssertTypeEq::<
4431                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4432                >(_) => {}
4433            }
4434        }
4435        #[automatically_derived]
4436        #[doc(hidden)]
4437        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
4438            fn from(value: ValidatorNotExited) -> Self {
4439                ()
4440            }
4441        }
4442        #[automatically_derived]
4443        #[doc(hidden)]
4444        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
4445            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4446                Self
4447            }
4448        }
4449        #[automatically_derived]
4450        impl alloy_sol_types::SolError for ValidatorNotExited {
4451            type Parameters<'a> = UnderlyingSolTuple<'a>;
4452            type Token<'a> = <Self::Parameters<
4453                'a,
4454            > as alloy_sol_types::SolType>::Token<'a>;
4455            const SIGNATURE: &'static str = "ValidatorNotExited()";
4456            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
4457            #[inline]
4458            fn new<'a>(
4459                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4460            ) -> Self {
4461                tuple.into()
4462            }
4463            #[inline]
4464            fn tokenize(&self) -> Self::Token<'_> {
4465                ()
4466            }
4467            #[inline]
4468            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4469                <Self::Parameters<
4470                    '_,
4471                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4472                    .map(Self::new)
4473            }
4474        }
4475    };
4476    #[derive(serde::Serialize, serde::Deserialize)]
4477    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4478    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
4479```solidity
4480error ZeroAddress();
4481```*/
4482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4483    #[derive(Clone)]
4484    pub struct ZeroAddress;
4485    #[allow(
4486        non_camel_case_types,
4487        non_snake_case,
4488        clippy::pub_underscore_fields,
4489        clippy::style
4490    )]
4491    const _: () = {
4492        use alloy::sol_types as alloy_sol_types;
4493        #[doc(hidden)]
4494        type UnderlyingSolTuple<'a> = ();
4495        #[doc(hidden)]
4496        type UnderlyingRustTuple<'a> = ();
4497        #[cfg(test)]
4498        #[allow(dead_code, unreachable_patterns)]
4499        fn _type_assertion(
4500            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4501        ) {
4502            match _t {
4503                alloy_sol_types::private::AssertTypeEq::<
4504                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4505                >(_) => {}
4506            }
4507        }
4508        #[automatically_derived]
4509        #[doc(hidden)]
4510        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
4511            fn from(value: ZeroAddress) -> Self {
4512                ()
4513            }
4514        }
4515        #[automatically_derived]
4516        #[doc(hidden)]
4517        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
4518            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4519                Self
4520            }
4521        }
4522        #[automatically_derived]
4523        impl alloy_sol_types::SolError for ZeroAddress {
4524            type Parameters<'a> = UnderlyingSolTuple<'a>;
4525            type Token<'a> = <Self::Parameters<
4526                'a,
4527            > as alloy_sol_types::SolType>::Token<'a>;
4528            const SIGNATURE: &'static str = "ZeroAddress()";
4529            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
4530            #[inline]
4531            fn new<'a>(
4532                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4533            ) -> Self {
4534                tuple.into()
4535            }
4536            #[inline]
4537            fn tokenize(&self) -> Self::Token<'_> {
4538                ()
4539            }
4540            #[inline]
4541            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4542                <Self::Parameters<
4543                    '_,
4544                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4545                    .map(Self::new)
4546            }
4547        }
4548    };
4549    #[derive(serde::Serialize, serde::Deserialize)]
4550    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4551    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
4552```solidity
4553error ZeroAmount();
4554```*/
4555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4556    #[derive(Clone)]
4557    pub struct ZeroAmount;
4558    #[allow(
4559        non_camel_case_types,
4560        non_snake_case,
4561        clippy::pub_underscore_fields,
4562        clippy::style
4563    )]
4564    const _: () = {
4565        use alloy::sol_types as alloy_sol_types;
4566        #[doc(hidden)]
4567        type UnderlyingSolTuple<'a> = ();
4568        #[doc(hidden)]
4569        type UnderlyingRustTuple<'a> = ();
4570        #[cfg(test)]
4571        #[allow(dead_code, unreachable_patterns)]
4572        fn _type_assertion(
4573            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4574        ) {
4575            match _t {
4576                alloy_sol_types::private::AssertTypeEq::<
4577                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4578                >(_) => {}
4579            }
4580        }
4581        #[automatically_derived]
4582        #[doc(hidden)]
4583        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
4584            fn from(value: ZeroAmount) -> Self {
4585                ()
4586            }
4587        }
4588        #[automatically_derived]
4589        #[doc(hidden)]
4590        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
4591            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4592                Self
4593            }
4594        }
4595        #[automatically_derived]
4596        impl alloy_sol_types::SolError for ZeroAmount {
4597            type Parameters<'a> = UnderlyingSolTuple<'a>;
4598            type Token<'a> = <Self::Parameters<
4599                'a,
4600            > as alloy_sol_types::SolType>::Token<'a>;
4601            const SIGNATURE: &'static str = "ZeroAmount()";
4602            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
4603            #[inline]
4604            fn new<'a>(
4605                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4606            ) -> Self {
4607                tuple.into()
4608            }
4609            #[inline]
4610            fn tokenize(&self) -> Self::Token<'_> {
4611                ()
4612            }
4613            #[inline]
4614            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4615                <Self::Parameters<
4616                    '_,
4617                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4618                    .map(Self::new)
4619            }
4620        }
4621    };
4622    #[derive(serde::Serialize, serde::Deserialize)]
4623    #[derive()]
4624    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
4625```solidity
4626event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
4627```*/
4628    #[allow(
4629        non_camel_case_types,
4630        non_snake_case,
4631        clippy::pub_underscore_fields,
4632        clippy::style
4633    )]
4634    #[derive(Clone)]
4635    pub struct ConsensusKeysUpdated {
4636        #[allow(missing_docs)]
4637        pub account: alloy::sol_types::private::Address,
4638        #[allow(missing_docs)]
4639        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
4640        #[allow(missing_docs)]
4641        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
4642    }
4643    #[allow(
4644        non_camel_case_types,
4645        non_snake_case,
4646        clippy::pub_underscore_fields,
4647        clippy::style
4648    )]
4649    const _: () = {
4650        use alloy::sol_types as alloy_sol_types;
4651        #[automatically_derived]
4652        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
4653            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
4654            type DataToken<'a> = <Self::DataTuple<
4655                'a,
4656            > as alloy_sol_types::SolType>::Token<'a>;
4657            type TopicList = (
4658                alloy_sol_types::sol_data::FixedBytes<32>,
4659                alloy::sol_types::sol_data::Address,
4660            );
4661            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
4662            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4663                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
4664                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
4665                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
4666            ]);
4667            const ANONYMOUS: bool = false;
4668            #[allow(unused_variables)]
4669            #[inline]
4670            fn new(
4671                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4672                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4673            ) -> Self {
4674                Self {
4675                    account: topics.1,
4676                    blsVK: data.0,
4677                    schnorrVK: data.1,
4678                }
4679            }
4680            #[inline]
4681            fn check_signature(
4682                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4683            ) -> alloy_sol_types::Result<()> {
4684                if topics.0 != Self::SIGNATURE_HASH {
4685                    return Err(
4686                        alloy_sol_types::Error::invalid_event_signature_hash(
4687                            Self::SIGNATURE,
4688                            topics.0,
4689                            Self::SIGNATURE_HASH,
4690                        ),
4691                    );
4692                }
4693                Ok(())
4694            }
4695            #[inline]
4696            fn tokenize_body(&self) -> Self::DataToken<'_> {
4697                (
4698                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
4699                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
4700                        &self.schnorrVK,
4701                    ),
4702                )
4703            }
4704            #[inline]
4705            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4706                (Self::SIGNATURE_HASH.into(), self.account.clone())
4707            }
4708            #[inline]
4709            fn encode_topics_raw(
4710                &self,
4711                out: &mut [alloy_sol_types::abi::token::WordToken],
4712            ) -> alloy_sol_types::Result<()> {
4713                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4714                    return Err(alloy_sol_types::Error::Overrun);
4715                }
4716                out[0usize] = alloy_sol_types::abi::token::WordToken(
4717                    Self::SIGNATURE_HASH,
4718                );
4719                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4720                    &self.account,
4721                );
4722                Ok(())
4723            }
4724        }
4725        #[automatically_derived]
4726        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
4727            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4728                From::from(self)
4729            }
4730            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4731                From::from(&self)
4732            }
4733        }
4734        #[automatically_derived]
4735        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
4736            #[inline]
4737            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
4738                alloy_sol_types::SolEvent::encode_log_data(this)
4739            }
4740        }
4741    };
4742    #[derive(serde::Serialize, serde::Deserialize)]
4743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4744    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
4745```solidity
4746event Delegated(address indexed delegator, address indexed validator, uint256 amount);
4747```*/
4748    #[allow(
4749        non_camel_case_types,
4750        non_snake_case,
4751        clippy::pub_underscore_fields,
4752        clippy::style
4753    )]
4754    #[derive(Clone)]
4755    pub struct Delegated {
4756        #[allow(missing_docs)]
4757        pub delegator: alloy::sol_types::private::Address,
4758        #[allow(missing_docs)]
4759        pub validator: alloy::sol_types::private::Address,
4760        #[allow(missing_docs)]
4761        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4762    }
4763    #[allow(
4764        non_camel_case_types,
4765        non_snake_case,
4766        clippy::pub_underscore_fields,
4767        clippy::style
4768    )]
4769    const _: () = {
4770        use alloy::sol_types as alloy_sol_types;
4771        #[automatically_derived]
4772        impl alloy_sol_types::SolEvent for Delegated {
4773            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4774            type DataToken<'a> = <Self::DataTuple<
4775                'a,
4776            > as alloy_sol_types::SolType>::Token<'a>;
4777            type TopicList = (
4778                alloy_sol_types::sol_data::FixedBytes<32>,
4779                alloy::sol_types::sol_data::Address,
4780                alloy::sol_types::sol_data::Address,
4781            );
4782            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
4783            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4784                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
4785                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
4786                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
4787            ]);
4788            const ANONYMOUS: bool = false;
4789            #[allow(unused_variables)]
4790            #[inline]
4791            fn new(
4792                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4793                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4794            ) -> Self {
4795                Self {
4796                    delegator: topics.1,
4797                    validator: topics.2,
4798                    amount: data.0,
4799                }
4800            }
4801            #[inline]
4802            fn check_signature(
4803                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4804            ) -> alloy_sol_types::Result<()> {
4805                if topics.0 != Self::SIGNATURE_HASH {
4806                    return Err(
4807                        alloy_sol_types::Error::invalid_event_signature_hash(
4808                            Self::SIGNATURE,
4809                            topics.0,
4810                            Self::SIGNATURE_HASH,
4811                        ),
4812                    );
4813                }
4814                Ok(())
4815            }
4816            #[inline]
4817            fn tokenize_body(&self) -> Self::DataToken<'_> {
4818                (
4819                    <alloy::sol_types::sol_data::Uint<
4820                        256,
4821                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4822                )
4823            }
4824            #[inline]
4825            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4826                (
4827                    Self::SIGNATURE_HASH.into(),
4828                    self.delegator.clone(),
4829                    self.validator.clone(),
4830                )
4831            }
4832            #[inline]
4833            fn encode_topics_raw(
4834                &self,
4835                out: &mut [alloy_sol_types::abi::token::WordToken],
4836            ) -> alloy_sol_types::Result<()> {
4837                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4838                    return Err(alloy_sol_types::Error::Overrun);
4839                }
4840                out[0usize] = alloy_sol_types::abi::token::WordToken(
4841                    Self::SIGNATURE_HASH,
4842                );
4843                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4844                    &self.delegator,
4845                );
4846                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4847                    &self.validator,
4848                );
4849                Ok(())
4850            }
4851        }
4852        #[automatically_derived]
4853        impl alloy_sol_types::private::IntoLogData for Delegated {
4854            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4855                From::from(self)
4856            }
4857            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4858                From::from(&self)
4859            }
4860        }
4861        #[automatically_derived]
4862        impl From<&Delegated> for alloy_sol_types::private::LogData {
4863            #[inline]
4864            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
4865                alloy_sol_types::SolEvent::encode_log_data(this)
4866            }
4867        }
4868    };
4869    #[derive(serde::Serialize, serde::Deserialize)]
4870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4871    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
4872```solidity
4873event Initialized(uint64 version);
4874```*/
4875    #[allow(
4876        non_camel_case_types,
4877        non_snake_case,
4878        clippy::pub_underscore_fields,
4879        clippy::style
4880    )]
4881    #[derive(Clone)]
4882    pub struct Initialized {
4883        #[allow(missing_docs)]
4884        pub version: u64,
4885    }
4886    #[allow(
4887        non_camel_case_types,
4888        non_snake_case,
4889        clippy::pub_underscore_fields,
4890        clippy::style
4891    )]
4892    const _: () = {
4893        use alloy::sol_types as alloy_sol_types;
4894        #[automatically_derived]
4895        impl alloy_sol_types::SolEvent for Initialized {
4896            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
4897            type DataToken<'a> = <Self::DataTuple<
4898                'a,
4899            > as alloy_sol_types::SolType>::Token<'a>;
4900            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4901            const SIGNATURE: &'static str = "Initialized(uint64)";
4902            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4903                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
4904                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
4905                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
4906            ]);
4907            const ANONYMOUS: bool = false;
4908            #[allow(unused_variables)]
4909            #[inline]
4910            fn new(
4911                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4912                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4913            ) -> Self {
4914                Self { version: data.0 }
4915            }
4916            #[inline]
4917            fn check_signature(
4918                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4919            ) -> alloy_sol_types::Result<()> {
4920                if topics.0 != Self::SIGNATURE_HASH {
4921                    return Err(
4922                        alloy_sol_types::Error::invalid_event_signature_hash(
4923                            Self::SIGNATURE,
4924                            topics.0,
4925                            Self::SIGNATURE_HASH,
4926                        ),
4927                    );
4928                }
4929                Ok(())
4930            }
4931            #[inline]
4932            fn tokenize_body(&self) -> Self::DataToken<'_> {
4933                (
4934                    <alloy::sol_types::sol_data::Uint<
4935                        64,
4936                    > as alloy_sol_types::SolType>::tokenize(&self.version),
4937                )
4938            }
4939            #[inline]
4940            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4941                (Self::SIGNATURE_HASH.into(),)
4942            }
4943            #[inline]
4944            fn encode_topics_raw(
4945                &self,
4946                out: &mut [alloy_sol_types::abi::token::WordToken],
4947            ) -> alloy_sol_types::Result<()> {
4948                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4949                    return Err(alloy_sol_types::Error::Overrun);
4950                }
4951                out[0usize] = alloy_sol_types::abi::token::WordToken(
4952                    Self::SIGNATURE_HASH,
4953                );
4954                Ok(())
4955            }
4956        }
4957        #[automatically_derived]
4958        impl alloy_sol_types::private::IntoLogData for Initialized {
4959            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4960                From::from(self)
4961            }
4962            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4963                From::from(&self)
4964            }
4965        }
4966        #[automatically_derived]
4967        impl From<&Initialized> for alloy_sol_types::private::LogData {
4968            #[inline]
4969            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
4970                alloy_sol_types::SolEvent::encode_log_data(this)
4971            }
4972        }
4973    };
4974    #[derive(serde::Serialize, serde::Deserialize)]
4975    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4976    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
4977```solidity
4978event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
4979```*/
4980    #[allow(
4981        non_camel_case_types,
4982        non_snake_case,
4983        clippy::pub_underscore_fields,
4984        clippy::style
4985    )]
4986    #[derive(Clone)]
4987    pub struct OwnershipTransferred {
4988        #[allow(missing_docs)]
4989        pub previousOwner: alloy::sol_types::private::Address,
4990        #[allow(missing_docs)]
4991        pub newOwner: alloy::sol_types::private::Address,
4992    }
4993    #[allow(
4994        non_camel_case_types,
4995        non_snake_case,
4996        clippy::pub_underscore_fields,
4997        clippy::style
4998    )]
4999    const _: () = {
5000        use alloy::sol_types as alloy_sol_types;
5001        #[automatically_derived]
5002        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5003            type DataTuple<'a> = ();
5004            type DataToken<'a> = <Self::DataTuple<
5005                'a,
5006            > as alloy_sol_types::SolType>::Token<'a>;
5007            type TopicList = (
5008                alloy_sol_types::sol_data::FixedBytes<32>,
5009                alloy::sol_types::sol_data::Address,
5010                alloy::sol_types::sol_data::Address,
5011            );
5012            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5013            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5014                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5015                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5016                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5017            ]);
5018            const ANONYMOUS: bool = false;
5019            #[allow(unused_variables)]
5020            #[inline]
5021            fn new(
5022                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5023                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5024            ) -> Self {
5025                Self {
5026                    previousOwner: topics.1,
5027                    newOwner: topics.2,
5028                }
5029            }
5030            #[inline]
5031            fn check_signature(
5032                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5033            ) -> alloy_sol_types::Result<()> {
5034                if topics.0 != Self::SIGNATURE_HASH {
5035                    return Err(
5036                        alloy_sol_types::Error::invalid_event_signature_hash(
5037                            Self::SIGNATURE,
5038                            topics.0,
5039                            Self::SIGNATURE_HASH,
5040                        ),
5041                    );
5042                }
5043                Ok(())
5044            }
5045            #[inline]
5046            fn tokenize_body(&self) -> Self::DataToken<'_> {
5047                ()
5048            }
5049            #[inline]
5050            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5051                (
5052                    Self::SIGNATURE_HASH.into(),
5053                    self.previousOwner.clone(),
5054                    self.newOwner.clone(),
5055                )
5056            }
5057            #[inline]
5058            fn encode_topics_raw(
5059                &self,
5060                out: &mut [alloy_sol_types::abi::token::WordToken],
5061            ) -> alloy_sol_types::Result<()> {
5062                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5063                    return Err(alloy_sol_types::Error::Overrun);
5064                }
5065                out[0usize] = alloy_sol_types::abi::token::WordToken(
5066                    Self::SIGNATURE_HASH,
5067                );
5068                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5069                    &self.previousOwner,
5070                );
5071                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5072                    &self.newOwner,
5073                );
5074                Ok(())
5075            }
5076        }
5077        #[automatically_derived]
5078        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5079            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5080                From::from(self)
5081            }
5082            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5083                From::from(&self)
5084            }
5085        }
5086        #[automatically_derived]
5087        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5088            #[inline]
5089            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5090                alloy_sol_types::SolEvent::encode_log_data(this)
5091            }
5092        }
5093    };
5094    #[derive(serde::Serialize, serde::Deserialize)]
5095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5096    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
5097```solidity
5098event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
5099```*/
5100    #[allow(
5101        non_camel_case_types,
5102        non_snake_case,
5103        clippy::pub_underscore_fields,
5104        clippy::style
5105    )]
5106    #[derive(Clone)]
5107    pub struct Undelegated {
5108        #[allow(missing_docs)]
5109        pub delegator: alloy::sol_types::private::Address,
5110        #[allow(missing_docs)]
5111        pub validator: alloy::sol_types::private::Address,
5112        #[allow(missing_docs)]
5113        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5114    }
5115    #[allow(
5116        non_camel_case_types,
5117        non_snake_case,
5118        clippy::pub_underscore_fields,
5119        clippy::style
5120    )]
5121    const _: () = {
5122        use alloy::sol_types as alloy_sol_types;
5123        #[automatically_derived]
5124        impl alloy_sol_types::SolEvent for Undelegated {
5125            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5126            type DataToken<'a> = <Self::DataTuple<
5127                'a,
5128            > as alloy_sol_types::SolType>::Token<'a>;
5129            type TopicList = (
5130                alloy_sol_types::sol_data::FixedBytes<32>,
5131                alloy::sol_types::sol_data::Address,
5132                alloy::sol_types::sol_data::Address,
5133            );
5134            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
5135            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5136                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
5137                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
5138                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
5139            ]);
5140            const ANONYMOUS: bool = false;
5141            #[allow(unused_variables)]
5142            #[inline]
5143            fn new(
5144                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5145                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5146            ) -> Self {
5147                Self {
5148                    delegator: topics.1,
5149                    validator: topics.2,
5150                    amount: data.0,
5151                }
5152            }
5153            #[inline]
5154            fn check_signature(
5155                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5156            ) -> alloy_sol_types::Result<()> {
5157                if topics.0 != Self::SIGNATURE_HASH {
5158                    return Err(
5159                        alloy_sol_types::Error::invalid_event_signature_hash(
5160                            Self::SIGNATURE,
5161                            topics.0,
5162                            Self::SIGNATURE_HASH,
5163                        ),
5164                    );
5165                }
5166                Ok(())
5167            }
5168            #[inline]
5169            fn tokenize_body(&self) -> Self::DataToken<'_> {
5170                (
5171                    <alloy::sol_types::sol_data::Uint<
5172                        256,
5173                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5174                )
5175            }
5176            #[inline]
5177            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5178                (
5179                    Self::SIGNATURE_HASH.into(),
5180                    self.delegator.clone(),
5181                    self.validator.clone(),
5182                )
5183            }
5184            #[inline]
5185            fn encode_topics_raw(
5186                &self,
5187                out: &mut [alloy_sol_types::abi::token::WordToken],
5188            ) -> alloy_sol_types::Result<()> {
5189                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5190                    return Err(alloy_sol_types::Error::Overrun);
5191                }
5192                out[0usize] = alloy_sol_types::abi::token::WordToken(
5193                    Self::SIGNATURE_HASH,
5194                );
5195                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5196                    &self.delegator,
5197                );
5198                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5199                    &self.validator,
5200                );
5201                Ok(())
5202            }
5203        }
5204        #[automatically_derived]
5205        impl alloy_sol_types::private::IntoLogData for Undelegated {
5206            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5207                From::from(self)
5208            }
5209            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5210                From::from(&self)
5211            }
5212        }
5213        #[automatically_derived]
5214        impl From<&Undelegated> for alloy_sol_types::private::LogData {
5215            #[inline]
5216            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
5217                alloy_sol_types::SolEvent::encode_log_data(this)
5218            }
5219        }
5220    };
5221    #[derive(serde::Serialize, serde::Deserialize)]
5222    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5223    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
5224```solidity
5225event Upgraded(address indexed implementation);
5226```*/
5227    #[allow(
5228        non_camel_case_types,
5229        non_snake_case,
5230        clippy::pub_underscore_fields,
5231        clippy::style
5232    )]
5233    #[derive(Clone)]
5234    pub struct Upgraded {
5235        #[allow(missing_docs)]
5236        pub implementation: alloy::sol_types::private::Address,
5237    }
5238    #[allow(
5239        non_camel_case_types,
5240        non_snake_case,
5241        clippy::pub_underscore_fields,
5242        clippy::style
5243    )]
5244    const _: () = {
5245        use alloy::sol_types as alloy_sol_types;
5246        #[automatically_derived]
5247        impl alloy_sol_types::SolEvent for Upgraded {
5248            type DataTuple<'a> = ();
5249            type DataToken<'a> = <Self::DataTuple<
5250                'a,
5251            > as alloy_sol_types::SolType>::Token<'a>;
5252            type TopicList = (
5253                alloy_sol_types::sol_data::FixedBytes<32>,
5254                alloy::sol_types::sol_data::Address,
5255            );
5256            const SIGNATURE: &'static str = "Upgraded(address)";
5257            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5258                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
5259                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
5260                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
5261            ]);
5262            const ANONYMOUS: bool = false;
5263            #[allow(unused_variables)]
5264            #[inline]
5265            fn new(
5266                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5267                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5268            ) -> Self {
5269                Self { implementation: topics.1 }
5270            }
5271            #[inline]
5272            fn check_signature(
5273                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5274            ) -> alloy_sol_types::Result<()> {
5275                if topics.0 != Self::SIGNATURE_HASH {
5276                    return Err(
5277                        alloy_sol_types::Error::invalid_event_signature_hash(
5278                            Self::SIGNATURE,
5279                            topics.0,
5280                            Self::SIGNATURE_HASH,
5281                        ),
5282                    );
5283                }
5284                Ok(())
5285            }
5286            #[inline]
5287            fn tokenize_body(&self) -> Self::DataToken<'_> {
5288                ()
5289            }
5290            #[inline]
5291            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5292                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
5293            }
5294            #[inline]
5295            fn encode_topics_raw(
5296                &self,
5297                out: &mut [alloy_sol_types::abi::token::WordToken],
5298            ) -> alloy_sol_types::Result<()> {
5299                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5300                    return Err(alloy_sol_types::Error::Overrun);
5301                }
5302                out[0usize] = alloy_sol_types::abi::token::WordToken(
5303                    Self::SIGNATURE_HASH,
5304                );
5305                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5306                    &self.implementation,
5307                );
5308                Ok(())
5309            }
5310        }
5311        #[automatically_derived]
5312        impl alloy_sol_types::private::IntoLogData for Upgraded {
5313            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5314                From::from(self)
5315            }
5316            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5317                From::from(&self)
5318            }
5319        }
5320        #[automatically_derived]
5321        impl From<&Upgraded> for alloy_sol_types::private::LogData {
5322            #[inline]
5323            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
5324                alloy_sol_types::SolEvent::encode_log_data(this)
5325            }
5326        }
5327    };
5328    #[derive(serde::Serialize, serde::Deserialize)]
5329    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5330    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
5331```solidity
5332event ValidatorExit(address indexed validator);
5333```*/
5334    #[allow(
5335        non_camel_case_types,
5336        non_snake_case,
5337        clippy::pub_underscore_fields,
5338        clippy::style
5339    )]
5340    #[derive(Clone)]
5341    pub struct ValidatorExit {
5342        #[allow(missing_docs)]
5343        pub validator: alloy::sol_types::private::Address,
5344    }
5345    #[allow(
5346        non_camel_case_types,
5347        non_snake_case,
5348        clippy::pub_underscore_fields,
5349        clippy::style
5350    )]
5351    const _: () = {
5352        use alloy::sol_types as alloy_sol_types;
5353        #[automatically_derived]
5354        impl alloy_sol_types::SolEvent for ValidatorExit {
5355            type DataTuple<'a> = ();
5356            type DataToken<'a> = <Self::DataTuple<
5357                'a,
5358            > as alloy_sol_types::SolType>::Token<'a>;
5359            type TopicList = (
5360                alloy_sol_types::sol_data::FixedBytes<32>,
5361                alloy::sol_types::sol_data::Address,
5362            );
5363            const SIGNATURE: &'static str = "ValidatorExit(address)";
5364            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5365                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
5366                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
5367                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
5368            ]);
5369            const ANONYMOUS: bool = false;
5370            #[allow(unused_variables)]
5371            #[inline]
5372            fn new(
5373                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5374                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5375            ) -> Self {
5376                Self { validator: topics.1 }
5377            }
5378            #[inline]
5379            fn check_signature(
5380                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5381            ) -> alloy_sol_types::Result<()> {
5382                if topics.0 != Self::SIGNATURE_HASH {
5383                    return Err(
5384                        alloy_sol_types::Error::invalid_event_signature_hash(
5385                            Self::SIGNATURE,
5386                            topics.0,
5387                            Self::SIGNATURE_HASH,
5388                        ),
5389                    );
5390                }
5391                Ok(())
5392            }
5393            #[inline]
5394            fn tokenize_body(&self) -> Self::DataToken<'_> {
5395                ()
5396            }
5397            #[inline]
5398            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5399                (Self::SIGNATURE_HASH.into(), self.validator.clone())
5400            }
5401            #[inline]
5402            fn encode_topics_raw(
5403                &self,
5404                out: &mut [alloy_sol_types::abi::token::WordToken],
5405            ) -> alloy_sol_types::Result<()> {
5406                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5407                    return Err(alloy_sol_types::Error::Overrun);
5408                }
5409                out[0usize] = alloy_sol_types::abi::token::WordToken(
5410                    Self::SIGNATURE_HASH,
5411                );
5412                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5413                    &self.validator,
5414                );
5415                Ok(())
5416            }
5417        }
5418        #[automatically_derived]
5419        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
5420            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5421                From::from(self)
5422            }
5423            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5424                From::from(&self)
5425            }
5426        }
5427        #[automatically_derived]
5428        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
5429            #[inline]
5430            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
5431                alloy_sol_types::SolEvent::encode_log_data(this)
5432            }
5433        }
5434    };
5435    #[derive(serde::Serialize, serde::Deserialize)]
5436    #[derive()]
5437    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
5438```solidity
5439event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
5440```*/
5441    #[allow(
5442        non_camel_case_types,
5443        non_snake_case,
5444        clippy::pub_underscore_fields,
5445        clippy::style
5446    )]
5447    #[derive(Clone)]
5448    pub struct ValidatorRegistered {
5449        #[allow(missing_docs)]
5450        pub account: alloy::sol_types::private::Address,
5451        #[allow(missing_docs)]
5452        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5453        #[allow(missing_docs)]
5454        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
5455        #[allow(missing_docs)]
5456        pub commission: u16,
5457    }
5458    #[allow(
5459        non_camel_case_types,
5460        non_snake_case,
5461        clippy::pub_underscore_fields,
5462        clippy::style
5463    )]
5464    const _: () = {
5465        use alloy::sol_types as alloy_sol_types;
5466        #[automatically_derived]
5467        impl alloy_sol_types::SolEvent for ValidatorRegistered {
5468            type DataTuple<'a> = (
5469                BN254::G2Point,
5470                EdOnBN254::EdOnBN254Point,
5471                alloy::sol_types::sol_data::Uint<16>,
5472            );
5473            type DataToken<'a> = <Self::DataTuple<
5474                'a,
5475            > as alloy_sol_types::SolType>::Token<'a>;
5476            type TopicList = (
5477                alloy_sol_types::sol_data::FixedBytes<32>,
5478                alloy::sol_types::sol_data::Address,
5479            );
5480            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
5481            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5482                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
5483                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
5484                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
5485            ]);
5486            const ANONYMOUS: bool = false;
5487            #[allow(unused_variables)]
5488            #[inline]
5489            fn new(
5490                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5491                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5492            ) -> Self {
5493                Self {
5494                    account: topics.1,
5495                    blsVk: data.0,
5496                    schnorrVk: data.1,
5497                    commission: data.2,
5498                }
5499            }
5500            #[inline]
5501            fn check_signature(
5502                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5503            ) -> alloy_sol_types::Result<()> {
5504                if topics.0 != Self::SIGNATURE_HASH {
5505                    return Err(
5506                        alloy_sol_types::Error::invalid_event_signature_hash(
5507                            Self::SIGNATURE,
5508                            topics.0,
5509                            Self::SIGNATURE_HASH,
5510                        ),
5511                    );
5512                }
5513                Ok(())
5514            }
5515            #[inline]
5516            fn tokenize_body(&self) -> Self::DataToken<'_> {
5517                (
5518                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
5519                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
5520                        &self.schnorrVk,
5521                    ),
5522                    <alloy::sol_types::sol_data::Uint<
5523                        16,
5524                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
5525                )
5526            }
5527            #[inline]
5528            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5529                (Self::SIGNATURE_HASH.into(), self.account.clone())
5530            }
5531            #[inline]
5532            fn encode_topics_raw(
5533                &self,
5534                out: &mut [alloy_sol_types::abi::token::WordToken],
5535            ) -> alloy_sol_types::Result<()> {
5536                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5537                    return Err(alloy_sol_types::Error::Overrun);
5538                }
5539                out[0usize] = alloy_sol_types::abi::token::WordToken(
5540                    Self::SIGNATURE_HASH,
5541                );
5542                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5543                    &self.account,
5544                );
5545                Ok(())
5546            }
5547        }
5548        #[automatically_derived]
5549        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
5550            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5551                From::from(self)
5552            }
5553            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5554                From::from(&self)
5555            }
5556        }
5557        #[automatically_derived]
5558        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
5559            #[inline]
5560            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
5561                alloy_sol_types::SolEvent::encode_log_data(this)
5562            }
5563        }
5564    };
5565    #[derive(serde::Serialize, serde::Deserialize)]
5566    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5567    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
5568```solidity
5569event Withdrawal(address indexed account, uint256 amount);
5570```*/
5571    #[allow(
5572        non_camel_case_types,
5573        non_snake_case,
5574        clippy::pub_underscore_fields,
5575        clippy::style
5576    )]
5577    #[derive(Clone)]
5578    pub struct Withdrawal {
5579        #[allow(missing_docs)]
5580        pub account: alloy::sol_types::private::Address,
5581        #[allow(missing_docs)]
5582        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5583    }
5584    #[allow(
5585        non_camel_case_types,
5586        non_snake_case,
5587        clippy::pub_underscore_fields,
5588        clippy::style
5589    )]
5590    const _: () = {
5591        use alloy::sol_types as alloy_sol_types;
5592        #[automatically_derived]
5593        impl alloy_sol_types::SolEvent for Withdrawal {
5594            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5595            type DataToken<'a> = <Self::DataTuple<
5596                'a,
5597            > as alloy_sol_types::SolType>::Token<'a>;
5598            type TopicList = (
5599                alloy_sol_types::sol_data::FixedBytes<32>,
5600                alloy::sol_types::sol_data::Address,
5601            );
5602            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
5603            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5604                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
5605                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
5606                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
5607            ]);
5608            const ANONYMOUS: bool = false;
5609            #[allow(unused_variables)]
5610            #[inline]
5611            fn new(
5612                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5613                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5614            ) -> Self {
5615                Self {
5616                    account: topics.1,
5617                    amount: data.0,
5618                }
5619            }
5620            #[inline]
5621            fn check_signature(
5622                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5623            ) -> alloy_sol_types::Result<()> {
5624                if topics.0 != Self::SIGNATURE_HASH {
5625                    return Err(
5626                        alloy_sol_types::Error::invalid_event_signature_hash(
5627                            Self::SIGNATURE,
5628                            topics.0,
5629                            Self::SIGNATURE_HASH,
5630                        ),
5631                    );
5632                }
5633                Ok(())
5634            }
5635            #[inline]
5636            fn tokenize_body(&self) -> Self::DataToken<'_> {
5637                (
5638                    <alloy::sol_types::sol_data::Uint<
5639                        256,
5640                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5641                )
5642            }
5643            #[inline]
5644            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5645                (Self::SIGNATURE_HASH.into(), self.account.clone())
5646            }
5647            #[inline]
5648            fn encode_topics_raw(
5649                &self,
5650                out: &mut [alloy_sol_types::abi::token::WordToken],
5651            ) -> alloy_sol_types::Result<()> {
5652                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5653                    return Err(alloy_sol_types::Error::Overrun);
5654                }
5655                out[0usize] = alloy_sol_types::abi::token::WordToken(
5656                    Self::SIGNATURE_HASH,
5657                );
5658                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5659                    &self.account,
5660                );
5661                Ok(())
5662            }
5663        }
5664        #[automatically_derived]
5665        impl alloy_sol_types::private::IntoLogData for Withdrawal {
5666            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5667                From::from(self)
5668            }
5669            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5670                From::from(&self)
5671            }
5672        }
5673        #[automatically_derived]
5674        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
5675            #[inline]
5676            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
5677                alloy_sol_types::SolEvent::encode_log_data(this)
5678            }
5679        }
5680    };
5681    /**Constructor`.
5682```solidity
5683constructor();
5684```*/
5685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5686    #[derive(Clone)]
5687    pub struct constructorCall {}
5688    const _: () = {
5689        use alloy::sol_types as alloy_sol_types;
5690        {
5691            #[doc(hidden)]
5692            type UnderlyingSolTuple<'a> = ();
5693            #[doc(hidden)]
5694            type UnderlyingRustTuple<'a> = ();
5695            #[cfg(test)]
5696            #[allow(dead_code, unreachable_patterns)]
5697            fn _type_assertion(
5698                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5699            ) {
5700                match _t {
5701                    alloy_sol_types::private::AssertTypeEq::<
5702                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5703                    >(_) => {}
5704                }
5705            }
5706            #[automatically_derived]
5707            #[doc(hidden)]
5708            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
5709                fn from(value: constructorCall) -> Self {
5710                    ()
5711                }
5712            }
5713            #[automatically_derived]
5714            #[doc(hidden)]
5715            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
5716                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5717                    Self {}
5718                }
5719            }
5720        }
5721        #[automatically_derived]
5722        impl alloy_sol_types::SolConstructor for constructorCall {
5723            type Parameters<'a> = ();
5724            type Token<'a> = <Self::Parameters<
5725                'a,
5726            > as alloy_sol_types::SolType>::Token<'a>;
5727            #[inline]
5728            fn new<'a>(
5729                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5730            ) -> Self {
5731                tuple.into()
5732            }
5733            #[inline]
5734            fn tokenize(&self) -> Self::Token<'_> {
5735                ()
5736            }
5737        }
5738    };
5739    #[derive(serde::Serialize, serde::Deserialize)]
5740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5741    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
5742```solidity
5743function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
5744```*/
5745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5746    #[derive(Clone)]
5747    pub struct UPGRADE_INTERFACE_VERSIONCall;
5748    #[derive(serde::Serialize, serde::Deserialize)]
5749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5750    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
5751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5752    #[derive(Clone)]
5753    pub struct UPGRADE_INTERFACE_VERSIONReturn {
5754        #[allow(missing_docs)]
5755        pub _0: alloy::sol_types::private::String,
5756    }
5757    #[allow(
5758        non_camel_case_types,
5759        non_snake_case,
5760        clippy::pub_underscore_fields,
5761        clippy::style
5762    )]
5763    const _: () = {
5764        use alloy::sol_types as alloy_sol_types;
5765        {
5766            #[doc(hidden)]
5767            type UnderlyingSolTuple<'a> = ();
5768            #[doc(hidden)]
5769            type UnderlyingRustTuple<'a> = ();
5770            #[cfg(test)]
5771            #[allow(dead_code, unreachable_patterns)]
5772            fn _type_assertion(
5773                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5774            ) {
5775                match _t {
5776                    alloy_sol_types::private::AssertTypeEq::<
5777                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5778                    >(_) => {}
5779                }
5780            }
5781            #[automatically_derived]
5782            #[doc(hidden)]
5783            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
5784            for UnderlyingRustTuple<'_> {
5785                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
5786                    ()
5787                }
5788            }
5789            #[automatically_derived]
5790            #[doc(hidden)]
5791            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5792            for UPGRADE_INTERFACE_VERSIONCall {
5793                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5794                    Self
5795                }
5796            }
5797        }
5798        {
5799            #[doc(hidden)]
5800            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
5801            #[doc(hidden)]
5802            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
5803            #[cfg(test)]
5804            #[allow(dead_code, unreachable_patterns)]
5805            fn _type_assertion(
5806                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5807            ) {
5808                match _t {
5809                    alloy_sol_types::private::AssertTypeEq::<
5810                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5811                    >(_) => {}
5812                }
5813            }
5814            #[automatically_derived]
5815            #[doc(hidden)]
5816            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
5817            for UnderlyingRustTuple<'_> {
5818                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
5819                    (value._0,)
5820                }
5821            }
5822            #[automatically_derived]
5823            #[doc(hidden)]
5824            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5825            for UPGRADE_INTERFACE_VERSIONReturn {
5826                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5827                    Self { _0: tuple.0 }
5828                }
5829            }
5830        }
5831        #[automatically_derived]
5832        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
5833            type Parameters<'a> = ();
5834            type Token<'a> = <Self::Parameters<
5835                'a,
5836            > as alloy_sol_types::SolType>::Token<'a>;
5837            type Return = alloy::sol_types::private::String;
5838            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
5839            type ReturnToken<'a> = <Self::ReturnTuple<
5840                'a,
5841            > as alloy_sol_types::SolType>::Token<'a>;
5842            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
5843            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
5844            #[inline]
5845            fn new<'a>(
5846                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5847            ) -> Self {
5848                tuple.into()
5849            }
5850            #[inline]
5851            fn tokenize(&self) -> Self::Token<'_> {
5852                ()
5853            }
5854            #[inline]
5855            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5856                (
5857                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
5858                        ret,
5859                    ),
5860                )
5861            }
5862            #[inline]
5863            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5864                <Self::ReturnTuple<
5865                    '_,
5866                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5867                    .map(|r| {
5868                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
5869                        r._0
5870                    })
5871            }
5872            #[inline]
5873            fn abi_decode_returns_validate(
5874                data: &[u8],
5875            ) -> alloy_sol_types::Result<Self::Return> {
5876                <Self::ReturnTuple<
5877                    '_,
5878                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5879                    .map(|r| {
5880                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
5881                        r._0
5882                    })
5883            }
5884        }
5885    };
5886    #[derive(serde::Serialize, serde::Deserialize)]
5887    #[derive()]
5888    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
5889```solidity
5890function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
5891```*/
5892    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5893    #[derive(Clone)]
5894    pub struct _hashBlsKeyCall {
5895        #[allow(missing_docs)]
5896        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5897    }
5898    #[derive(serde::Serialize, serde::Deserialize)]
5899    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5900    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
5901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5902    #[derive(Clone)]
5903    pub struct _hashBlsKeyReturn {
5904        #[allow(missing_docs)]
5905        pub _0: alloy::sol_types::private::FixedBytes<32>,
5906    }
5907    #[allow(
5908        non_camel_case_types,
5909        non_snake_case,
5910        clippy::pub_underscore_fields,
5911        clippy::style
5912    )]
5913    const _: () = {
5914        use alloy::sol_types as alloy_sol_types;
5915        {
5916            #[doc(hidden)]
5917            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
5918            #[doc(hidden)]
5919            type UnderlyingRustTuple<'a> = (
5920                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5921            );
5922            #[cfg(test)]
5923            #[allow(dead_code, unreachable_patterns)]
5924            fn _type_assertion(
5925                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5926            ) {
5927                match _t {
5928                    alloy_sol_types::private::AssertTypeEq::<
5929                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5930                    >(_) => {}
5931                }
5932            }
5933            #[automatically_derived]
5934            #[doc(hidden)]
5935            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
5936                fn from(value: _hashBlsKeyCall) -> Self {
5937                    (value.blsVK,)
5938                }
5939            }
5940            #[automatically_derived]
5941            #[doc(hidden)]
5942            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
5943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5944                    Self { blsVK: tuple.0 }
5945                }
5946            }
5947        }
5948        {
5949            #[doc(hidden)]
5950            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5951            #[doc(hidden)]
5952            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5953            #[cfg(test)]
5954            #[allow(dead_code, unreachable_patterns)]
5955            fn _type_assertion(
5956                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5957            ) {
5958                match _t {
5959                    alloy_sol_types::private::AssertTypeEq::<
5960                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5961                    >(_) => {}
5962                }
5963            }
5964            #[automatically_derived]
5965            #[doc(hidden)]
5966            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
5967                fn from(value: _hashBlsKeyReturn) -> Self {
5968                    (value._0,)
5969                }
5970            }
5971            #[automatically_derived]
5972            #[doc(hidden)]
5973            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
5974                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5975                    Self { _0: tuple.0 }
5976                }
5977            }
5978        }
5979        #[automatically_derived]
5980        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
5981            type Parameters<'a> = (BN254::G2Point,);
5982            type Token<'a> = <Self::Parameters<
5983                'a,
5984            > as alloy_sol_types::SolType>::Token<'a>;
5985            type Return = alloy::sol_types::private::FixedBytes<32>;
5986            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5987            type ReturnToken<'a> = <Self::ReturnTuple<
5988                'a,
5989            > as alloy_sol_types::SolType>::Token<'a>;
5990            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
5991            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
5992            #[inline]
5993            fn new<'a>(
5994                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5995            ) -> Self {
5996                tuple.into()
5997            }
5998            #[inline]
5999            fn tokenize(&self) -> Self::Token<'_> {
6000                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
6001            }
6002            #[inline]
6003            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6004                (
6005                    <alloy::sol_types::sol_data::FixedBytes<
6006                        32,
6007                    > as alloy_sol_types::SolType>::tokenize(ret),
6008                )
6009            }
6010            #[inline]
6011            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6012                <Self::ReturnTuple<
6013                    '_,
6014                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6015                    .map(|r| {
6016                        let r: _hashBlsKeyReturn = r.into();
6017                        r._0
6018                    })
6019            }
6020            #[inline]
6021            fn abi_decode_returns_validate(
6022                data: &[u8],
6023            ) -> alloy_sol_types::Result<Self::Return> {
6024                <Self::ReturnTuple<
6025                    '_,
6026                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6027                    .map(|r| {
6028                        let r: _hashBlsKeyReturn = r.into();
6029                        r._0
6030                    })
6031            }
6032        }
6033    };
6034    #[derive(serde::Serialize, serde::Deserialize)]
6035    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6036    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
6037```solidity
6038function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
6039```*/
6040    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6041    #[derive(Clone)]
6042    pub struct blsKeysCall {
6043        #[allow(missing_docs)]
6044        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
6045    }
6046    #[derive(serde::Serialize, serde::Deserialize)]
6047    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6048    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
6049    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6050    #[derive(Clone)]
6051    pub struct blsKeysReturn {
6052        #[allow(missing_docs)]
6053        pub used: bool,
6054    }
6055    #[allow(
6056        non_camel_case_types,
6057        non_snake_case,
6058        clippy::pub_underscore_fields,
6059        clippy::style
6060    )]
6061    const _: () = {
6062        use alloy::sol_types as alloy_sol_types;
6063        {
6064            #[doc(hidden)]
6065            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6066            #[doc(hidden)]
6067            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6068            #[cfg(test)]
6069            #[allow(dead_code, unreachable_patterns)]
6070            fn _type_assertion(
6071                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6072            ) {
6073                match _t {
6074                    alloy_sol_types::private::AssertTypeEq::<
6075                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6076                    >(_) => {}
6077                }
6078            }
6079            #[automatically_derived]
6080            #[doc(hidden)]
6081            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
6082                fn from(value: blsKeysCall) -> Self {
6083                    (value.blsKeyHash,)
6084                }
6085            }
6086            #[automatically_derived]
6087            #[doc(hidden)]
6088            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
6089                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6090                    Self { blsKeyHash: tuple.0 }
6091                }
6092            }
6093        }
6094        {
6095            #[doc(hidden)]
6096            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6097            #[doc(hidden)]
6098            type UnderlyingRustTuple<'a> = (bool,);
6099            #[cfg(test)]
6100            #[allow(dead_code, unreachable_patterns)]
6101            fn _type_assertion(
6102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6103            ) {
6104                match _t {
6105                    alloy_sol_types::private::AssertTypeEq::<
6106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6107                    >(_) => {}
6108                }
6109            }
6110            #[automatically_derived]
6111            #[doc(hidden)]
6112            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
6113                fn from(value: blsKeysReturn) -> Self {
6114                    (value.used,)
6115                }
6116            }
6117            #[automatically_derived]
6118            #[doc(hidden)]
6119            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
6120                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6121                    Self { used: tuple.0 }
6122                }
6123            }
6124        }
6125        #[automatically_derived]
6126        impl alloy_sol_types::SolCall for blsKeysCall {
6127            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6128            type Token<'a> = <Self::Parameters<
6129                'a,
6130            > as alloy_sol_types::SolType>::Token<'a>;
6131            type Return = bool;
6132            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6133            type ReturnToken<'a> = <Self::ReturnTuple<
6134                'a,
6135            > as alloy_sol_types::SolType>::Token<'a>;
6136            const SIGNATURE: &'static str = "blsKeys(bytes32)";
6137            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
6138            #[inline]
6139            fn new<'a>(
6140                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6141            ) -> Self {
6142                tuple.into()
6143            }
6144            #[inline]
6145            fn tokenize(&self) -> Self::Token<'_> {
6146                (
6147                    <alloy::sol_types::sol_data::FixedBytes<
6148                        32,
6149                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
6150                )
6151            }
6152            #[inline]
6153            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6154                (
6155                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6156                        ret,
6157                    ),
6158                )
6159            }
6160            #[inline]
6161            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6162                <Self::ReturnTuple<
6163                    '_,
6164                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6165                    .map(|r| {
6166                        let r: blsKeysReturn = r.into();
6167                        r.used
6168                    })
6169            }
6170            #[inline]
6171            fn abi_decode_returns_validate(
6172                data: &[u8],
6173            ) -> alloy_sol_types::Result<Self::Return> {
6174                <Self::ReturnTuple<
6175                    '_,
6176                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6177                    .map(|r| {
6178                        let r: blsKeysReturn = r.into();
6179                        r.used
6180                    })
6181            }
6182        }
6183    };
6184    #[derive(serde::Serialize, serde::Deserialize)]
6185    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6186    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
6187```solidity
6188function claimValidatorExit(address validator) external;
6189```*/
6190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6191    #[derive(Clone)]
6192    pub struct claimValidatorExitCall {
6193        #[allow(missing_docs)]
6194        pub validator: alloy::sol_types::private::Address,
6195    }
6196    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
6197    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6198    #[derive(Clone)]
6199    pub struct claimValidatorExitReturn {}
6200    #[allow(
6201        non_camel_case_types,
6202        non_snake_case,
6203        clippy::pub_underscore_fields,
6204        clippy::style
6205    )]
6206    const _: () = {
6207        use alloy::sol_types as alloy_sol_types;
6208        {
6209            #[doc(hidden)]
6210            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6211            #[doc(hidden)]
6212            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6213            #[cfg(test)]
6214            #[allow(dead_code, unreachable_patterns)]
6215            fn _type_assertion(
6216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6217            ) {
6218                match _t {
6219                    alloy_sol_types::private::AssertTypeEq::<
6220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6221                    >(_) => {}
6222                }
6223            }
6224            #[automatically_derived]
6225            #[doc(hidden)]
6226            impl ::core::convert::From<claimValidatorExitCall>
6227            for UnderlyingRustTuple<'_> {
6228                fn from(value: claimValidatorExitCall) -> Self {
6229                    (value.validator,)
6230                }
6231            }
6232            #[automatically_derived]
6233            #[doc(hidden)]
6234            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6235            for claimValidatorExitCall {
6236                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6237                    Self { validator: tuple.0 }
6238                }
6239            }
6240        }
6241        {
6242            #[doc(hidden)]
6243            type UnderlyingSolTuple<'a> = ();
6244            #[doc(hidden)]
6245            type UnderlyingRustTuple<'a> = ();
6246            #[cfg(test)]
6247            #[allow(dead_code, unreachable_patterns)]
6248            fn _type_assertion(
6249                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6250            ) {
6251                match _t {
6252                    alloy_sol_types::private::AssertTypeEq::<
6253                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6254                    >(_) => {}
6255                }
6256            }
6257            #[automatically_derived]
6258            #[doc(hidden)]
6259            impl ::core::convert::From<claimValidatorExitReturn>
6260            for UnderlyingRustTuple<'_> {
6261                fn from(value: claimValidatorExitReturn) -> Self {
6262                    ()
6263                }
6264            }
6265            #[automatically_derived]
6266            #[doc(hidden)]
6267            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6268            for claimValidatorExitReturn {
6269                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6270                    Self {}
6271                }
6272            }
6273        }
6274        impl claimValidatorExitReturn {
6275            fn _tokenize(
6276                &self,
6277            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6278                ()
6279            }
6280        }
6281        #[automatically_derived]
6282        impl alloy_sol_types::SolCall for claimValidatorExitCall {
6283            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6284            type Token<'a> = <Self::Parameters<
6285                'a,
6286            > as alloy_sol_types::SolType>::Token<'a>;
6287            type Return = claimValidatorExitReturn;
6288            type ReturnTuple<'a> = ();
6289            type ReturnToken<'a> = <Self::ReturnTuple<
6290                'a,
6291            > as alloy_sol_types::SolType>::Token<'a>;
6292            const SIGNATURE: &'static str = "claimValidatorExit(address)";
6293            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
6294            #[inline]
6295            fn new<'a>(
6296                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6297            ) -> Self {
6298                tuple.into()
6299            }
6300            #[inline]
6301            fn tokenize(&self) -> Self::Token<'_> {
6302                (
6303                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6304                        &self.validator,
6305                    ),
6306                )
6307            }
6308            #[inline]
6309            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6310                claimValidatorExitReturn::_tokenize(ret)
6311            }
6312            #[inline]
6313            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6314                <Self::ReturnTuple<
6315                    '_,
6316                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6317                    .map(Into::into)
6318            }
6319            #[inline]
6320            fn abi_decode_returns_validate(
6321                data: &[u8],
6322            ) -> alloy_sol_types::Result<Self::Return> {
6323                <Self::ReturnTuple<
6324                    '_,
6325                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6326                    .map(Into::into)
6327            }
6328        }
6329    };
6330    #[derive(serde::Serialize, serde::Deserialize)]
6331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6332    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
6333```solidity
6334function claimWithdrawal(address validator) external;
6335```*/
6336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6337    #[derive(Clone)]
6338    pub struct claimWithdrawalCall {
6339        #[allow(missing_docs)]
6340        pub validator: alloy::sol_types::private::Address,
6341    }
6342    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
6343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6344    #[derive(Clone)]
6345    pub struct claimWithdrawalReturn {}
6346    #[allow(
6347        non_camel_case_types,
6348        non_snake_case,
6349        clippy::pub_underscore_fields,
6350        clippy::style
6351    )]
6352    const _: () = {
6353        use alloy::sol_types as alloy_sol_types;
6354        {
6355            #[doc(hidden)]
6356            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6357            #[doc(hidden)]
6358            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6359            #[cfg(test)]
6360            #[allow(dead_code, unreachable_patterns)]
6361            fn _type_assertion(
6362                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6363            ) {
6364                match _t {
6365                    alloy_sol_types::private::AssertTypeEq::<
6366                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6367                    >(_) => {}
6368                }
6369            }
6370            #[automatically_derived]
6371            #[doc(hidden)]
6372            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
6373                fn from(value: claimWithdrawalCall) -> Self {
6374                    (value.validator,)
6375                }
6376            }
6377            #[automatically_derived]
6378            #[doc(hidden)]
6379            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
6380                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6381                    Self { validator: tuple.0 }
6382                }
6383            }
6384        }
6385        {
6386            #[doc(hidden)]
6387            type UnderlyingSolTuple<'a> = ();
6388            #[doc(hidden)]
6389            type UnderlyingRustTuple<'a> = ();
6390            #[cfg(test)]
6391            #[allow(dead_code, unreachable_patterns)]
6392            fn _type_assertion(
6393                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6394            ) {
6395                match _t {
6396                    alloy_sol_types::private::AssertTypeEq::<
6397                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6398                    >(_) => {}
6399                }
6400            }
6401            #[automatically_derived]
6402            #[doc(hidden)]
6403            impl ::core::convert::From<claimWithdrawalReturn>
6404            for UnderlyingRustTuple<'_> {
6405                fn from(value: claimWithdrawalReturn) -> Self {
6406                    ()
6407                }
6408            }
6409            #[automatically_derived]
6410            #[doc(hidden)]
6411            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6412            for claimWithdrawalReturn {
6413                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6414                    Self {}
6415                }
6416            }
6417        }
6418        impl claimWithdrawalReturn {
6419            fn _tokenize(
6420                &self,
6421            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6422                ()
6423            }
6424        }
6425        #[automatically_derived]
6426        impl alloy_sol_types::SolCall for claimWithdrawalCall {
6427            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6428            type Token<'a> = <Self::Parameters<
6429                'a,
6430            > as alloy_sol_types::SolType>::Token<'a>;
6431            type Return = claimWithdrawalReturn;
6432            type ReturnTuple<'a> = ();
6433            type ReturnToken<'a> = <Self::ReturnTuple<
6434                'a,
6435            > as alloy_sol_types::SolType>::Token<'a>;
6436            const SIGNATURE: &'static str = "claimWithdrawal(address)";
6437            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
6438            #[inline]
6439            fn new<'a>(
6440                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6441            ) -> Self {
6442                tuple.into()
6443            }
6444            #[inline]
6445            fn tokenize(&self) -> Self::Token<'_> {
6446                (
6447                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6448                        &self.validator,
6449                    ),
6450                )
6451            }
6452            #[inline]
6453            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6454                claimWithdrawalReturn::_tokenize(ret)
6455            }
6456            #[inline]
6457            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6458                <Self::ReturnTuple<
6459                    '_,
6460                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6461                    .map(Into::into)
6462            }
6463            #[inline]
6464            fn abi_decode_returns_validate(
6465                data: &[u8],
6466            ) -> alloy_sol_types::Result<Self::Return> {
6467                <Self::ReturnTuple<
6468                    '_,
6469                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6470                    .map(Into::into)
6471            }
6472        }
6473    };
6474    #[derive(serde::Serialize, serde::Deserialize)]
6475    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6476    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
6477```solidity
6478function delegate(address validator, uint256 amount) external;
6479```*/
6480    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6481    #[derive(Clone)]
6482    pub struct delegateCall {
6483        #[allow(missing_docs)]
6484        pub validator: alloy::sol_types::private::Address,
6485        #[allow(missing_docs)]
6486        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6487    }
6488    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
6489    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6490    #[derive(Clone)]
6491    pub struct delegateReturn {}
6492    #[allow(
6493        non_camel_case_types,
6494        non_snake_case,
6495        clippy::pub_underscore_fields,
6496        clippy::style
6497    )]
6498    const _: () = {
6499        use alloy::sol_types as alloy_sol_types;
6500        {
6501            #[doc(hidden)]
6502            type UnderlyingSolTuple<'a> = (
6503                alloy::sol_types::sol_data::Address,
6504                alloy::sol_types::sol_data::Uint<256>,
6505            );
6506            #[doc(hidden)]
6507            type UnderlyingRustTuple<'a> = (
6508                alloy::sol_types::private::Address,
6509                alloy::sol_types::private::primitives::aliases::U256,
6510            );
6511            #[cfg(test)]
6512            #[allow(dead_code, unreachable_patterns)]
6513            fn _type_assertion(
6514                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6515            ) {
6516                match _t {
6517                    alloy_sol_types::private::AssertTypeEq::<
6518                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6519                    >(_) => {}
6520                }
6521            }
6522            #[automatically_derived]
6523            #[doc(hidden)]
6524            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
6525                fn from(value: delegateCall) -> Self {
6526                    (value.validator, value.amount)
6527                }
6528            }
6529            #[automatically_derived]
6530            #[doc(hidden)]
6531            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
6532                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6533                    Self {
6534                        validator: tuple.0,
6535                        amount: tuple.1,
6536                    }
6537                }
6538            }
6539        }
6540        {
6541            #[doc(hidden)]
6542            type UnderlyingSolTuple<'a> = ();
6543            #[doc(hidden)]
6544            type UnderlyingRustTuple<'a> = ();
6545            #[cfg(test)]
6546            #[allow(dead_code, unreachable_patterns)]
6547            fn _type_assertion(
6548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6549            ) {
6550                match _t {
6551                    alloy_sol_types::private::AssertTypeEq::<
6552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6553                    >(_) => {}
6554                }
6555            }
6556            #[automatically_derived]
6557            #[doc(hidden)]
6558            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
6559                fn from(value: delegateReturn) -> Self {
6560                    ()
6561                }
6562            }
6563            #[automatically_derived]
6564            #[doc(hidden)]
6565            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
6566                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6567                    Self {}
6568                }
6569            }
6570        }
6571        impl delegateReturn {
6572            fn _tokenize(
6573                &self,
6574            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6575                ()
6576            }
6577        }
6578        #[automatically_derived]
6579        impl alloy_sol_types::SolCall for delegateCall {
6580            type Parameters<'a> = (
6581                alloy::sol_types::sol_data::Address,
6582                alloy::sol_types::sol_data::Uint<256>,
6583            );
6584            type Token<'a> = <Self::Parameters<
6585                'a,
6586            > as alloy_sol_types::SolType>::Token<'a>;
6587            type Return = delegateReturn;
6588            type ReturnTuple<'a> = ();
6589            type ReturnToken<'a> = <Self::ReturnTuple<
6590                'a,
6591            > as alloy_sol_types::SolType>::Token<'a>;
6592            const SIGNATURE: &'static str = "delegate(address,uint256)";
6593            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
6594            #[inline]
6595            fn new<'a>(
6596                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6597            ) -> Self {
6598                tuple.into()
6599            }
6600            #[inline]
6601            fn tokenize(&self) -> Self::Token<'_> {
6602                (
6603                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6604                        &self.validator,
6605                    ),
6606                    <alloy::sol_types::sol_data::Uint<
6607                        256,
6608                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
6609                )
6610            }
6611            #[inline]
6612            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6613                delegateReturn::_tokenize(ret)
6614            }
6615            #[inline]
6616            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6617                <Self::ReturnTuple<
6618                    '_,
6619                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6620                    .map(Into::into)
6621            }
6622            #[inline]
6623            fn abi_decode_returns_validate(
6624                data: &[u8],
6625            ) -> alloy_sol_types::Result<Self::Return> {
6626                <Self::ReturnTuple<
6627                    '_,
6628                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6629                    .map(Into::into)
6630            }
6631        }
6632    };
6633    #[derive(serde::Serialize, serde::Deserialize)]
6634    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6635    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
6636```solidity
6637function delegations(address validator, address delegator) external view returns (uint256 amount);
6638```*/
6639    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6640    #[derive(Clone)]
6641    pub struct delegationsCall {
6642        #[allow(missing_docs)]
6643        pub validator: alloy::sol_types::private::Address,
6644        #[allow(missing_docs)]
6645        pub delegator: alloy::sol_types::private::Address,
6646    }
6647    #[derive(serde::Serialize, serde::Deserialize)]
6648    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6649    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
6650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6651    #[derive(Clone)]
6652    pub struct delegationsReturn {
6653        #[allow(missing_docs)]
6654        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6655    }
6656    #[allow(
6657        non_camel_case_types,
6658        non_snake_case,
6659        clippy::pub_underscore_fields,
6660        clippy::style
6661    )]
6662    const _: () = {
6663        use alloy::sol_types as alloy_sol_types;
6664        {
6665            #[doc(hidden)]
6666            type UnderlyingSolTuple<'a> = (
6667                alloy::sol_types::sol_data::Address,
6668                alloy::sol_types::sol_data::Address,
6669            );
6670            #[doc(hidden)]
6671            type UnderlyingRustTuple<'a> = (
6672                alloy::sol_types::private::Address,
6673                alloy::sol_types::private::Address,
6674            );
6675            #[cfg(test)]
6676            #[allow(dead_code, unreachable_patterns)]
6677            fn _type_assertion(
6678                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6679            ) {
6680                match _t {
6681                    alloy_sol_types::private::AssertTypeEq::<
6682                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6683                    >(_) => {}
6684                }
6685            }
6686            #[automatically_derived]
6687            #[doc(hidden)]
6688            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
6689                fn from(value: delegationsCall) -> Self {
6690                    (value.validator, value.delegator)
6691                }
6692            }
6693            #[automatically_derived]
6694            #[doc(hidden)]
6695            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
6696                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6697                    Self {
6698                        validator: tuple.0,
6699                        delegator: tuple.1,
6700                    }
6701                }
6702            }
6703        }
6704        {
6705            #[doc(hidden)]
6706            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6707            #[doc(hidden)]
6708            type UnderlyingRustTuple<'a> = (
6709                alloy::sol_types::private::primitives::aliases::U256,
6710            );
6711            #[cfg(test)]
6712            #[allow(dead_code, unreachable_patterns)]
6713            fn _type_assertion(
6714                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6715            ) {
6716                match _t {
6717                    alloy_sol_types::private::AssertTypeEq::<
6718                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6719                    >(_) => {}
6720                }
6721            }
6722            #[automatically_derived]
6723            #[doc(hidden)]
6724            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
6725                fn from(value: delegationsReturn) -> Self {
6726                    (value.amount,)
6727                }
6728            }
6729            #[automatically_derived]
6730            #[doc(hidden)]
6731            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
6732                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6733                    Self { amount: tuple.0 }
6734                }
6735            }
6736        }
6737        #[automatically_derived]
6738        impl alloy_sol_types::SolCall for delegationsCall {
6739            type Parameters<'a> = (
6740                alloy::sol_types::sol_data::Address,
6741                alloy::sol_types::sol_data::Address,
6742            );
6743            type Token<'a> = <Self::Parameters<
6744                'a,
6745            > as alloy_sol_types::SolType>::Token<'a>;
6746            type Return = alloy::sol_types::private::primitives::aliases::U256;
6747            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6748            type ReturnToken<'a> = <Self::ReturnTuple<
6749                'a,
6750            > as alloy_sol_types::SolType>::Token<'a>;
6751            const SIGNATURE: &'static str = "delegations(address,address)";
6752            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
6753            #[inline]
6754            fn new<'a>(
6755                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6756            ) -> Self {
6757                tuple.into()
6758            }
6759            #[inline]
6760            fn tokenize(&self) -> Self::Token<'_> {
6761                (
6762                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6763                        &self.validator,
6764                    ),
6765                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6766                        &self.delegator,
6767                    ),
6768                )
6769            }
6770            #[inline]
6771            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6772                (
6773                    <alloy::sol_types::sol_data::Uint<
6774                        256,
6775                    > as alloy_sol_types::SolType>::tokenize(ret),
6776                )
6777            }
6778            #[inline]
6779            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6780                <Self::ReturnTuple<
6781                    '_,
6782                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6783                    .map(|r| {
6784                        let r: delegationsReturn = r.into();
6785                        r.amount
6786                    })
6787            }
6788            #[inline]
6789            fn abi_decode_returns_validate(
6790                data: &[u8],
6791            ) -> alloy_sol_types::Result<Self::Return> {
6792                <Self::ReturnTuple<
6793                    '_,
6794                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6795                    .map(|r| {
6796                        let r: delegationsReturn = r.into();
6797                        r.amount
6798                    })
6799            }
6800        }
6801    };
6802    #[derive(serde::Serialize, serde::Deserialize)]
6803    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6804    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
6805```solidity
6806function deregisterValidator() external;
6807```*/
6808    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6809    #[derive(Clone)]
6810    pub struct deregisterValidatorCall;
6811    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
6812    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6813    #[derive(Clone)]
6814    pub struct deregisterValidatorReturn {}
6815    #[allow(
6816        non_camel_case_types,
6817        non_snake_case,
6818        clippy::pub_underscore_fields,
6819        clippy::style
6820    )]
6821    const _: () = {
6822        use alloy::sol_types as alloy_sol_types;
6823        {
6824            #[doc(hidden)]
6825            type UnderlyingSolTuple<'a> = ();
6826            #[doc(hidden)]
6827            type UnderlyingRustTuple<'a> = ();
6828            #[cfg(test)]
6829            #[allow(dead_code, unreachable_patterns)]
6830            fn _type_assertion(
6831                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6832            ) {
6833                match _t {
6834                    alloy_sol_types::private::AssertTypeEq::<
6835                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6836                    >(_) => {}
6837                }
6838            }
6839            #[automatically_derived]
6840            #[doc(hidden)]
6841            impl ::core::convert::From<deregisterValidatorCall>
6842            for UnderlyingRustTuple<'_> {
6843                fn from(value: deregisterValidatorCall) -> Self {
6844                    ()
6845                }
6846            }
6847            #[automatically_derived]
6848            #[doc(hidden)]
6849            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6850            for deregisterValidatorCall {
6851                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6852                    Self
6853                }
6854            }
6855        }
6856        {
6857            #[doc(hidden)]
6858            type UnderlyingSolTuple<'a> = ();
6859            #[doc(hidden)]
6860            type UnderlyingRustTuple<'a> = ();
6861            #[cfg(test)]
6862            #[allow(dead_code, unreachable_patterns)]
6863            fn _type_assertion(
6864                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6865            ) {
6866                match _t {
6867                    alloy_sol_types::private::AssertTypeEq::<
6868                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6869                    >(_) => {}
6870                }
6871            }
6872            #[automatically_derived]
6873            #[doc(hidden)]
6874            impl ::core::convert::From<deregisterValidatorReturn>
6875            for UnderlyingRustTuple<'_> {
6876                fn from(value: deregisterValidatorReturn) -> Self {
6877                    ()
6878                }
6879            }
6880            #[automatically_derived]
6881            #[doc(hidden)]
6882            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6883            for deregisterValidatorReturn {
6884                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6885                    Self {}
6886                }
6887            }
6888        }
6889        impl deregisterValidatorReturn {
6890            fn _tokenize(
6891                &self,
6892            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6893                ()
6894            }
6895        }
6896        #[automatically_derived]
6897        impl alloy_sol_types::SolCall for deregisterValidatorCall {
6898            type Parameters<'a> = ();
6899            type Token<'a> = <Self::Parameters<
6900                'a,
6901            > as alloy_sol_types::SolType>::Token<'a>;
6902            type Return = deregisterValidatorReturn;
6903            type ReturnTuple<'a> = ();
6904            type ReturnToken<'a> = <Self::ReturnTuple<
6905                'a,
6906            > as alloy_sol_types::SolType>::Token<'a>;
6907            const SIGNATURE: &'static str = "deregisterValidator()";
6908            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
6909            #[inline]
6910            fn new<'a>(
6911                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6912            ) -> Self {
6913                tuple.into()
6914            }
6915            #[inline]
6916            fn tokenize(&self) -> Self::Token<'_> {
6917                ()
6918            }
6919            #[inline]
6920            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6921                deregisterValidatorReturn::_tokenize(ret)
6922            }
6923            #[inline]
6924            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6925                <Self::ReturnTuple<
6926                    '_,
6927                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6928                    .map(Into::into)
6929            }
6930            #[inline]
6931            fn abi_decode_returns_validate(
6932                data: &[u8],
6933            ) -> alloy_sol_types::Result<Self::Return> {
6934                <Self::ReturnTuple<
6935                    '_,
6936                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6937                    .map(Into::into)
6938            }
6939        }
6940    };
6941    #[derive(serde::Serialize, serde::Deserialize)]
6942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6943    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
6944```solidity
6945function exitEscrowPeriod() external view returns (uint256);
6946```*/
6947    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6948    #[derive(Clone)]
6949    pub struct exitEscrowPeriodCall;
6950    #[derive(serde::Serialize, serde::Deserialize)]
6951    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6952    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
6953    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6954    #[derive(Clone)]
6955    pub struct exitEscrowPeriodReturn {
6956        #[allow(missing_docs)]
6957        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6958    }
6959    #[allow(
6960        non_camel_case_types,
6961        non_snake_case,
6962        clippy::pub_underscore_fields,
6963        clippy::style
6964    )]
6965    const _: () = {
6966        use alloy::sol_types as alloy_sol_types;
6967        {
6968            #[doc(hidden)]
6969            type UnderlyingSolTuple<'a> = ();
6970            #[doc(hidden)]
6971            type UnderlyingRustTuple<'a> = ();
6972            #[cfg(test)]
6973            #[allow(dead_code, unreachable_patterns)]
6974            fn _type_assertion(
6975                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6976            ) {
6977                match _t {
6978                    alloy_sol_types::private::AssertTypeEq::<
6979                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6980                    >(_) => {}
6981                }
6982            }
6983            #[automatically_derived]
6984            #[doc(hidden)]
6985            impl ::core::convert::From<exitEscrowPeriodCall>
6986            for UnderlyingRustTuple<'_> {
6987                fn from(value: exitEscrowPeriodCall) -> Self {
6988                    ()
6989                }
6990            }
6991            #[automatically_derived]
6992            #[doc(hidden)]
6993            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6994            for exitEscrowPeriodCall {
6995                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6996                    Self
6997                }
6998            }
6999        }
7000        {
7001            #[doc(hidden)]
7002            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7003            #[doc(hidden)]
7004            type UnderlyingRustTuple<'a> = (
7005                alloy::sol_types::private::primitives::aliases::U256,
7006            );
7007            #[cfg(test)]
7008            #[allow(dead_code, unreachable_patterns)]
7009            fn _type_assertion(
7010                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7011            ) {
7012                match _t {
7013                    alloy_sol_types::private::AssertTypeEq::<
7014                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7015                    >(_) => {}
7016                }
7017            }
7018            #[automatically_derived]
7019            #[doc(hidden)]
7020            impl ::core::convert::From<exitEscrowPeriodReturn>
7021            for UnderlyingRustTuple<'_> {
7022                fn from(value: exitEscrowPeriodReturn) -> Self {
7023                    (value._0,)
7024                }
7025            }
7026            #[automatically_derived]
7027            #[doc(hidden)]
7028            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7029            for exitEscrowPeriodReturn {
7030                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7031                    Self { _0: tuple.0 }
7032                }
7033            }
7034        }
7035        #[automatically_derived]
7036        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
7037            type Parameters<'a> = ();
7038            type Token<'a> = <Self::Parameters<
7039                'a,
7040            > as alloy_sol_types::SolType>::Token<'a>;
7041            type Return = alloy::sol_types::private::primitives::aliases::U256;
7042            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7043            type ReturnToken<'a> = <Self::ReturnTuple<
7044                'a,
7045            > as alloy_sol_types::SolType>::Token<'a>;
7046            const SIGNATURE: &'static str = "exitEscrowPeriod()";
7047            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
7048            #[inline]
7049            fn new<'a>(
7050                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7051            ) -> Self {
7052                tuple.into()
7053            }
7054            #[inline]
7055            fn tokenize(&self) -> Self::Token<'_> {
7056                ()
7057            }
7058            #[inline]
7059            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7060                (
7061                    <alloy::sol_types::sol_data::Uint<
7062                        256,
7063                    > as alloy_sol_types::SolType>::tokenize(ret),
7064                )
7065            }
7066            #[inline]
7067            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7068                <Self::ReturnTuple<
7069                    '_,
7070                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7071                    .map(|r| {
7072                        let r: exitEscrowPeriodReturn = r.into();
7073                        r._0
7074                    })
7075            }
7076            #[inline]
7077            fn abi_decode_returns_validate(
7078                data: &[u8],
7079            ) -> alloy_sol_types::Result<Self::Return> {
7080                <Self::ReturnTuple<
7081                    '_,
7082                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7083                    .map(|r| {
7084                        let r: exitEscrowPeriodReturn = r.into();
7085                        r._0
7086                    })
7087            }
7088        }
7089    };
7090    #[derive(serde::Serialize, serde::Deserialize)]
7091    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7092    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
7093```solidity
7094function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
7095```*/
7096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7097    #[derive(Clone)]
7098    pub struct getVersionCall;
7099    #[derive(serde::Serialize, serde::Deserialize)]
7100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7101    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
7102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7103    #[derive(Clone)]
7104    pub struct getVersionReturn {
7105        #[allow(missing_docs)]
7106        pub majorVersion: u8,
7107        #[allow(missing_docs)]
7108        pub minorVersion: u8,
7109        #[allow(missing_docs)]
7110        pub patchVersion: u8,
7111    }
7112    #[allow(
7113        non_camel_case_types,
7114        non_snake_case,
7115        clippy::pub_underscore_fields,
7116        clippy::style
7117    )]
7118    const _: () = {
7119        use alloy::sol_types as alloy_sol_types;
7120        {
7121            #[doc(hidden)]
7122            type UnderlyingSolTuple<'a> = ();
7123            #[doc(hidden)]
7124            type UnderlyingRustTuple<'a> = ();
7125            #[cfg(test)]
7126            #[allow(dead_code, unreachable_patterns)]
7127            fn _type_assertion(
7128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7129            ) {
7130                match _t {
7131                    alloy_sol_types::private::AssertTypeEq::<
7132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7133                    >(_) => {}
7134                }
7135            }
7136            #[automatically_derived]
7137            #[doc(hidden)]
7138            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7139                fn from(value: getVersionCall) -> Self {
7140                    ()
7141                }
7142            }
7143            #[automatically_derived]
7144            #[doc(hidden)]
7145            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7146                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7147                    Self
7148                }
7149            }
7150        }
7151        {
7152            #[doc(hidden)]
7153            type UnderlyingSolTuple<'a> = (
7154                alloy::sol_types::sol_data::Uint<8>,
7155                alloy::sol_types::sol_data::Uint<8>,
7156                alloy::sol_types::sol_data::Uint<8>,
7157            );
7158            #[doc(hidden)]
7159            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7160            #[cfg(test)]
7161            #[allow(dead_code, unreachable_patterns)]
7162            fn _type_assertion(
7163                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7164            ) {
7165                match _t {
7166                    alloy_sol_types::private::AssertTypeEq::<
7167                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7168                    >(_) => {}
7169                }
7170            }
7171            #[automatically_derived]
7172            #[doc(hidden)]
7173            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7174                fn from(value: getVersionReturn) -> Self {
7175                    (value.majorVersion, value.minorVersion, value.patchVersion)
7176                }
7177            }
7178            #[automatically_derived]
7179            #[doc(hidden)]
7180            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7181                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7182                    Self {
7183                        majorVersion: tuple.0,
7184                        minorVersion: tuple.1,
7185                        patchVersion: tuple.2,
7186                    }
7187                }
7188            }
7189        }
7190        impl getVersionReturn {
7191            fn _tokenize(
7192                &self,
7193            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7194                (
7195                    <alloy::sol_types::sol_data::Uint<
7196                        8,
7197                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
7198                    <alloy::sol_types::sol_data::Uint<
7199                        8,
7200                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
7201                    <alloy::sol_types::sol_data::Uint<
7202                        8,
7203                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
7204                )
7205            }
7206        }
7207        #[automatically_derived]
7208        impl alloy_sol_types::SolCall for getVersionCall {
7209            type Parameters<'a> = ();
7210            type Token<'a> = <Self::Parameters<
7211                'a,
7212            > as alloy_sol_types::SolType>::Token<'a>;
7213            type Return = getVersionReturn;
7214            type ReturnTuple<'a> = (
7215                alloy::sol_types::sol_data::Uint<8>,
7216                alloy::sol_types::sol_data::Uint<8>,
7217                alloy::sol_types::sol_data::Uint<8>,
7218            );
7219            type ReturnToken<'a> = <Self::ReturnTuple<
7220                'a,
7221            > as alloy_sol_types::SolType>::Token<'a>;
7222            const SIGNATURE: &'static str = "getVersion()";
7223            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
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 tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7236                getVersionReturn::_tokenize(ret)
7237            }
7238            #[inline]
7239            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7240                <Self::ReturnTuple<
7241                    '_,
7242                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7243                    .map(Into::into)
7244            }
7245            #[inline]
7246            fn abi_decode_returns_validate(
7247                data: &[u8],
7248            ) -> alloy_sol_types::Result<Self::Return> {
7249                <Self::ReturnTuple<
7250                    '_,
7251                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7252                    .map(Into::into)
7253            }
7254        }
7255    };
7256    #[derive(serde::Serialize, serde::Deserialize)]
7257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7258    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
7259```solidity
7260function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
7261```*/
7262    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7263    #[derive(Clone)]
7264    pub struct initializeCall {
7265        #[allow(missing_docs)]
7266        pub _tokenAddress: alloy::sol_types::private::Address,
7267        #[allow(missing_docs)]
7268        pub _lightClientAddress: alloy::sol_types::private::Address,
7269        #[allow(missing_docs)]
7270        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
7271        #[allow(missing_docs)]
7272        pub _timelock: alloy::sol_types::private::Address,
7273    }
7274    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
7275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7276    #[derive(Clone)]
7277    pub struct initializeReturn {}
7278    #[allow(
7279        non_camel_case_types,
7280        non_snake_case,
7281        clippy::pub_underscore_fields,
7282        clippy::style
7283    )]
7284    const _: () = {
7285        use alloy::sol_types as alloy_sol_types;
7286        {
7287            #[doc(hidden)]
7288            type UnderlyingSolTuple<'a> = (
7289                alloy::sol_types::sol_data::Address,
7290                alloy::sol_types::sol_data::Address,
7291                alloy::sol_types::sol_data::Uint<256>,
7292                alloy::sol_types::sol_data::Address,
7293            );
7294            #[doc(hidden)]
7295            type UnderlyingRustTuple<'a> = (
7296                alloy::sol_types::private::Address,
7297                alloy::sol_types::private::Address,
7298                alloy::sol_types::private::primitives::aliases::U256,
7299                alloy::sol_types::private::Address,
7300            );
7301            #[cfg(test)]
7302            #[allow(dead_code, unreachable_patterns)]
7303            fn _type_assertion(
7304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7305            ) {
7306                match _t {
7307                    alloy_sol_types::private::AssertTypeEq::<
7308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7309                    >(_) => {}
7310                }
7311            }
7312            #[automatically_derived]
7313            #[doc(hidden)]
7314            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7315                fn from(value: initializeCall) -> Self {
7316                    (
7317                        value._tokenAddress,
7318                        value._lightClientAddress,
7319                        value._exitEscrowPeriod,
7320                        value._timelock,
7321                    )
7322                }
7323            }
7324            #[automatically_derived]
7325            #[doc(hidden)]
7326            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7327                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7328                    Self {
7329                        _tokenAddress: tuple.0,
7330                        _lightClientAddress: tuple.1,
7331                        _exitEscrowPeriod: tuple.2,
7332                        _timelock: tuple.3,
7333                    }
7334                }
7335            }
7336        }
7337        {
7338            #[doc(hidden)]
7339            type UnderlyingSolTuple<'a> = ();
7340            #[doc(hidden)]
7341            type UnderlyingRustTuple<'a> = ();
7342            #[cfg(test)]
7343            #[allow(dead_code, unreachable_patterns)]
7344            fn _type_assertion(
7345                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7346            ) {
7347                match _t {
7348                    alloy_sol_types::private::AssertTypeEq::<
7349                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7350                    >(_) => {}
7351                }
7352            }
7353            #[automatically_derived]
7354            #[doc(hidden)]
7355            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7356                fn from(value: initializeReturn) -> Self {
7357                    ()
7358                }
7359            }
7360            #[automatically_derived]
7361            #[doc(hidden)]
7362            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7363                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7364                    Self {}
7365                }
7366            }
7367        }
7368        impl initializeReturn {
7369            fn _tokenize(
7370                &self,
7371            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7372                ()
7373            }
7374        }
7375        #[automatically_derived]
7376        impl alloy_sol_types::SolCall for initializeCall {
7377            type Parameters<'a> = (
7378                alloy::sol_types::sol_data::Address,
7379                alloy::sol_types::sol_data::Address,
7380                alloy::sol_types::sol_data::Uint<256>,
7381                alloy::sol_types::sol_data::Address,
7382            );
7383            type Token<'a> = <Self::Parameters<
7384                'a,
7385            > as alloy_sol_types::SolType>::Token<'a>;
7386            type Return = initializeReturn;
7387            type ReturnTuple<'a> = ();
7388            type ReturnToken<'a> = <Self::ReturnTuple<
7389                'a,
7390            > as alloy_sol_types::SolType>::Token<'a>;
7391            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
7392            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
7393            #[inline]
7394            fn new<'a>(
7395                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7396            ) -> Self {
7397                tuple.into()
7398            }
7399            #[inline]
7400            fn tokenize(&self) -> Self::Token<'_> {
7401                (
7402                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7403                        &self._tokenAddress,
7404                    ),
7405                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7406                        &self._lightClientAddress,
7407                    ),
7408                    <alloy::sol_types::sol_data::Uint<
7409                        256,
7410                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
7411                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7412                        &self._timelock,
7413                    ),
7414                )
7415            }
7416            #[inline]
7417            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7418                initializeReturn::_tokenize(ret)
7419            }
7420            #[inline]
7421            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7422                <Self::ReturnTuple<
7423                    '_,
7424                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7425                    .map(Into::into)
7426            }
7427            #[inline]
7428            fn abi_decode_returns_validate(
7429                data: &[u8],
7430            ) -> alloy_sol_types::Result<Self::Return> {
7431                <Self::ReturnTuple<
7432                    '_,
7433                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7434                    .map(Into::into)
7435            }
7436        }
7437    };
7438    #[derive(serde::Serialize, serde::Deserialize)]
7439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7440    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
7441```solidity
7442function initializedAtBlock() external view returns (uint256);
7443```*/
7444    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7445    #[derive(Clone)]
7446    pub struct initializedAtBlockCall;
7447    #[derive(serde::Serialize, serde::Deserialize)]
7448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7449    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
7450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7451    #[derive(Clone)]
7452    pub struct initializedAtBlockReturn {
7453        #[allow(missing_docs)]
7454        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7455    }
7456    #[allow(
7457        non_camel_case_types,
7458        non_snake_case,
7459        clippy::pub_underscore_fields,
7460        clippy::style
7461    )]
7462    const _: () = {
7463        use alloy::sol_types as alloy_sol_types;
7464        {
7465            #[doc(hidden)]
7466            type UnderlyingSolTuple<'a> = ();
7467            #[doc(hidden)]
7468            type UnderlyingRustTuple<'a> = ();
7469            #[cfg(test)]
7470            #[allow(dead_code, unreachable_patterns)]
7471            fn _type_assertion(
7472                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7473            ) {
7474                match _t {
7475                    alloy_sol_types::private::AssertTypeEq::<
7476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7477                    >(_) => {}
7478                }
7479            }
7480            #[automatically_derived]
7481            #[doc(hidden)]
7482            impl ::core::convert::From<initializedAtBlockCall>
7483            for UnderlyingRustTuple<'_> {
7484                fn from(value: initializedAtBlockCall) -> Self {
7485                    ()
7486                }
7487            }
7488            #[automatically_derived]
7489            #[doc(hidden)]
7490            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7491            for initializedAtBlockCall {
7492                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7493                    Self
7494                }
7495            }
7496        }
7497        {
7498            #[doc(hidden)]
7499            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7500            #[doc(hidden)]
7501            type UnderlyingRustTuple<'a> = (
7502                alloy::sol_types::private::primitives::aliases::U256,
7503            );
7504            #[cfg(test)]
7505            #[allow(dead_code, unreachable_patterns)]
7506            fn _type_assertion(
7507                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7508            ) {
7509                match _t {
7510                    alloy_sol_types::private::AssertTypeEq::<
7511                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7512                    >(_) => {}
7513                }
7514            }
7515            #[automatically_derived]
7516            #[doc(hidden)]
7517            impl ::core::convert::From<initializedAtBlockReturn>
7518            for UnderlyingRustTuple<'_> {
7519                fn from(value: initializedAtBlockReturn) -> Self {
7520                    (value._0,)
7521                }
7522            }
7523            #[automatically_derived]
7524            #[doc(hidden)]
7525            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7526            for initializedAtBlockReturn {
7527                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7528                    Self { _0: tuple.0 }
7529                }
7530            }
7531        }
7532        #[automatically_derived]
7533        impl alloy_sol_types::SolCall for initializedAtBlockCall {
7534            type Parameters<'a> = ();
7535            type Token<'a> = <Self::Parameters<
7536                'a,
7537            > as alloy_sol_types::SolType>::Token<'a>;
7538            type Return = alloy::sol_types::private::primitives::aliases::U256;
7539            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7540            type ReturnToken<'a> = <Self::ReturnTuple<
7541                'a,
7542            > as alloy_sol_types::SolType>::Token<'a>;
7543            const SIGNATURE: &'static str = "initializedAtBlock()";
7544            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
7545            #[inline]
7546            fn new<'a>(
7547                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7548            ) -> Self {
7549                tuple.into()
7550            }
7551            #[inline]
7552            fn tokenize(&self) -> Self::Token<'_> {
7553                ()
7554            }
7555            #[inline]
7556            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7557                (
7558                    <alloy::sol_types::sol_data::Uint<
7559                        256,
7560                    > as alloy_sol_types::SolType>::tokenize(ret),
7561                )
7562            }
7563            #[inline]
7564            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7565                <Self::ReturnTuple<
7566                    '_,
7567                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7568                    .map(|r| {
7569                        let r: initializedAtBlockReturn = r.into();
7570                        r._0
7571                    })
7572            }
7573            #[inline]
7574            fn abi_decode_returns_validate(
7575                data: &[u8],
7576            ) -> alloy_sol_types::Result<Self::Return> {
7577                <Self::ReturnTuple<
7578                    '_,
7579                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7580                    .map(|r| {
7581                        let r: initializedAtBlockReturn = r.into();
7582                        r._0
7583                    })
7584            }
7585        }
7586    };
7587    #[derive(serde::Serialize, serde::Deserialize)]
7588    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7589    /**Function with signature `lightClient()` and selector `0xb5700e68`.
7590```solidity
7591function lightClient() external view returns (address);
7592```*/
7593    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7594    #[derive(Clone)]
7595    pub struct lightClientCall;
7596    #[derive(serde::Serialize, serde::Deserialize)]
7597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7598    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
7599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7600    #[derive(Clone)]
7601    pub struct lightClientReturn {
7602        #[allow(missing_docs)]
7603        pub _0: alloy::sol_types::private::Address,
7604    }
7605    #[allow(
7606        non_camel_case_types,
7607        non_snake_case,
7608        clippy::pub_underscore_fields,
7609        clippy::style
7610    )]
7611    const _: () = {
7612        use alloy::sol_types as alloy_sol_types;
7613        {
7614            #[doc(hidden)]
7615            type UnderlyingSolTuple<'a> = ();
7616            #[doc(hidden)]
7617            type UnderlyingRustTuple<'a> = ();
7618            #[cfg(test)]
7619            #[allow(dead_code, unreachable_patterns)]
7620            fn _type_assertion(
7621                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7622            ) {
7623                match _t {
7624                    alloy_sol_types::private::AssertTypeEq::<
7625                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7626                    >(_) => {}
7627                }
7628            }
7629            #[automatically_derived]
7630            #[doc(hidden)]
7631            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
7632                fn from(value: lightClientCall) -> Self {
7633                    ()
7634                }
7635            }
7636            #[automatically_derived]
7637            #[doc(hidden)]
7638            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
7639                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7640                    Self
7641                }
7642            }
7643        }
7644        {
7645            #[doc(hidden)]
7646            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7647            #[doc(hidden)]
7648            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7649            #[cfg(test)]
7650            #[allow(dead_code, unreachable_patterns)]
7651            fn _type_assertion(
7652                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7653            ) {
7654                match _t {
7655                    alloy_sol_types::private::AssertTypeEq::<
7656                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7657                    >(_) => {}
7658                }
7659            }
7660            #[automatically_derived]
7661            #[doc(hidden)]
7662            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
7663                fn from(value: lightClientReturn) -> Self {
7664                    (value._0,)
7665                }
7666            }
7667            #[automatically_derived]
7668            #[doc(hidden)]
7669            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
7670                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7671                    Self { _0: tuple.0 }
7672                }
7673            }
7674        }
7675        #[automatically_derived]
7676        impl alloy_sol_types::SolCall for lightClientCall {
7677            type Parameters<'a> = ();
7678            type Token<'a> = <Self::Parameters<
7679                'a,
7680            > as alloy_sol_types::SolType>::Token<'a>;
7681            type Return = alloy::sol_types::private::Address;
7682            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7683            type ReturnToken<'a> = <Self::ReturnTuple<
7684                'a,
7685            > as alloy_sol_types::SolType>::Token<'a>;
7686            const SIGNATURE: &'static str = "lightClient()";
7687            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
7688            #[inline]
7689            fn new<'a>(
7690                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7691            ) -> Self {
7692                tuple.into()
7693            }
7694            #[inline]
7695            fn tokenize(&self) -> Self::Token<'_> {
7696                ()
7697            }
7698            #[inline]
7699            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7700                (
7701                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7702                        ret,
7703                    ),
7704                )
7705            }
7706            #[inline]
7707            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7708                <Self::ReturnTuple<
7709                    '_,
7710                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7711                    .map(|r| {
7712                        let r: lightClientReturn = r.into();
7713                        r._0
7714                    })
7715            }
7716            #[inline]
7717            fn abi_decode_returns_validate(
7718                data: &[u8],
7719            ) -> alloy_sol_types::Result<Self::Return> {
7720                <Self::ReturnTuple<
7721                    '_,
7722                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7723                    .map(|r| {
7724                        let r: lightClientReturn = r.into();
7725                        r._0
7726                    })
7727            }
7728        }
7729    };
7730    #[derive(serde::Serialize, serde::Deserialize)]
7731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7732    /**Function with signature `owner()` and selector `0x8da5cb5b`.
7733```solidity
7734function owner() external view returns (address);
7735```*/
7736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7737    #[derive(Clone)]
7738    pub struct ownerCall;
7739    #[derive(serde::Serialize, serde::Deserialize)]
7740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7741    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
7742    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7743    #[derive(Clone)]
7744    pub struct ownerReturn {
7745        #[allow(missing_docs)]
7746        pub _0: alloy::sol_types::private::Address,
7747    }
7748    #[allow(
7749        non_camel_case_types,
7750        non_snake_case,
7751        clippy::pub_underscore_fields,
7752        clippy::style
7753    )]
7754    const _: () = {
7755        use alloy::sol_types as alloy_sol_types;
7756        {
7757            #[doc(hidden)]
7758            type UnderlyingSolTuple<'a> = ();
7759            #[doc(hidden)]
7760            type UnderlyingRustTuple<'a> = ();
7761            #[cfg(test)]
7762            #[allow(dead_code, unreachable_patterns)]
7763            fn _type_assertion(
7764                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7765            ) {
7766                match _t {
7767                    alloy_sol_types::private::AssertTypeEq::<
7768                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7769                    >(_) => {}
7770                }
7771            }
7772            #[automatically_derived]
7773            #[doc(hidden)]
7774            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
7775                fn from(value: ownerCall) -> Self {
7776                    ()
7777                }
7778            }
7779            #[automatically_derived]
7780            #[doc(hidden)]
7781            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
7782                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7783                    Self
7784                }
7785            }
7786        }
7787        {
7788            #[doc(hidden)]
7789            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7790            #[doc(hidden)]
7791            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7792            #[cfg(test)]
7793            #[allow(dead_code, unreachable_patterns)]
7794            fn _type_assertion(
7795                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7796            ) {
7797                match _t {
7798                    alloy_sol_types::private::AssertTypeEq::<
7799                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7800                    >(_) => {}
7801                }
7802            }
7803            #[automatically_derived]
7804            #[doc(hidden)]
7805            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
7806                fn from(value: ownerReturn) -> Self {
7807                    (value._0,)
7808                }
7809            }
7810            #[automatically_derived]
7811            #[doc(hidden)]
7812            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
7813                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7814                    Self { _0: tuple.0 }
7815                }
7816            }
7817        }
7818        #[automatically_derived]
7819        impl alloy_sol_types::SolCall for ownerCall {
7820            type Parameters<'a> = ();
7821            type Token<'a> = <Self::Parameters<
7822                'a,
7823            > as alloy_sol_types::SolType>::Token<'a>;
7824            type Return = alloy::sol_types::private::Address;
7825            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7826            type ReturnToken<'a> = <Self::ReturnTuple<
7827                'a,
7828            > as alloy_sol_types::SolType>::Token<'a>;
7829            const SIGNATURE: &'static str = "owner()";
7830            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
7831            #[inline]
7832            fn new<'a>(
7833                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7834            ) -> Self {
7835                tuple.into()
7836            }
7837            #[inline]
7838            fn tokenize(&self) -> Self::Token<'_> {
7839                ()
7840            }
7841            #[inline]
7842            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7843                (
7844                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7845                        ret,
7846                    ),
7847                )
7848            }
7849            #[inline]
7850            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7851                <Self::ReturnTuple<
7852                    '_,
7853                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7854                    .map(|r| {
7855                        let r: ownerReturn = r.into();
7856                        r._0
7857                    })
7858            }
7859            #[inline]
7860            fn abi_decode_returns_validate(
7861                data: &[u8],
7862            ) -> alloy_sol_types::Result<Self::Return> {
7863                <Self::ReturnTuple<
7864                    '_,
7865                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7866                    .map(|r| {
7867                        let r: ownerReturn = r.into();
7868                        r._0
7869                    })
7870            }
7871        }
7872    };
7873    #[derive(serde::Serialize, serde::Deserialize)]
7874    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7875    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
7876```solidity
7877function proxiableUUID() external view returns (bytes32);
7878```*/
7879    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7880    #[derive(Clone)]
7881    pub struct proxiableUUIDCall;
7882    #[derive(serde::Serialize, serde::Deserialize)]
7883    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7884    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
7885    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7886    #[derive(Clone)]
7887    pub struct proxiableUUIDReturn {
7888        #[allow(missing_docs)]
7889        pub _0: alloy::sol_types::private::FixedBytes<32>,
7890    }
7891    #[allow(
7892        non_camel_case_types,
7893        non_snake_case,
7894        clippy::pub_underscore_fields,
7895        clippy::style
7896    )]
7897    const _: () = {
7898        use alloy::sol_types as alloy_sol_types;
7899        {
7900            #[doc(hidden)]
7901            type UnderlyingSolTuple<'a> = ();
7902            #[doc(hidden)]
7903            type UnderlyingRustTuple<'a> = ();
7904            #[cfg(test)]
7905            #[allow(dead_code, unreachable_patterns)]
7906            fn _type_assertion(
7907                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7908            ) {
7909                match _t {
7910                    alloy_sol_types::private::AssertTypeEq::<
7911                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7912                    >(_) => {}
7913                }
7914            }
7915            #[automatically_derived]
7916            #[doc(hidden)]
7917            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
7918                fn from(value: proxiableUUIDCall) -> Self {
7919                    ()
7920                }
7921            }
7922            #[automatically_derived]
7923            #[doc(hidden)]
7924            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
7925                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7926                    Self
7927                }
7928            }
7929        }
7930        {
7931            #[doc(hidden)]
7932            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7933            #[doc(hidden)]
7934            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7935            #[cfg(test)]
7936            #[allow(dead_code, unreachable_patterns)]
7937            fn _type_assertion(
7938                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7939            ) {
7940                match _t {
7941                    alloy_sol_types::private::AssertTypeEq::<
7942                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7943                    >(_) => {}
7944                }
7945            }
7946            #[automatically_derived]
7947            #[doc(hidden)]
7948            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
7949                fn from(value: proxiableUUIDReturn) -> Self {
7950                    (value._0,)
7951                }
7952            }
7953            #[automatically_derived]
7954            #[doc(hidden)]
7955            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
7956                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7957                    Self { _0: tuple.0 }
7958                }
7959            }
7960        }
7961        #[automatically_derived]
7962        impl alloy_sol_types::SolCall for proxiableUUIDCall {
7963            type Parameters<'a> = ();
7964            type Token<'a> = <Self::Parameters<
7965                'a,
7966            > as alloy_sol_types::SolType>::Token<'a>;
7967            type Return = alloy::sol_types::private::FixedBytes<32>;
7968            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7969            type ReturnToken<'a> = <Self::ReturnTuple<
7970                'a,
7971            > as alloy_sol_types::SolType>::Token<'a>;
7972            const SIGNATURE: &'static str = "proxiableUUID()";
7973            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
7974            #[inline]
7975            fn new<'a>(
7976                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7977            ) -> Self {
7978                tuple.into()
7979            }
7980            #[inline]
7981            fn tokenize(&self) -> Self::Token<'_> {
7982                ()
7983            }
7984            #[inline]
7985            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7986                (
7987                    <alloy::sol_types::sol_data::FixedBytes<
7988                        32,
7989                    > as alloy_sol_types::SolType>::tokenize(ret),
7990                )
7991            }
7992            #[inline]
7993            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7994                <Self::ReturnTuple<
7995                    '_,
7996                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7997                    .map(|r| {
7998                        let r: proxiableUUIDReturn = r.into();
7999                        r._0
8000                    })
8001            }
8002            #[inline]
8003            fn abi_decode_returns_validate(
8004                data: &[u8],
8005            ) -> alloy_sol_types::Result<Self::Return> {
8006                <Self::ReturnTuple<
8007                    '_,
8008                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8009                    .map(|r| {
8010                        let r: proxiableUUIDReturn = r.into();
8011                        r._0
8012                    })
8013            }
8014        }
8015    };
8016    #[derive(serde::Serialize, serde::Deserialize)]
8017    #[derive()]
8018    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
8019```solidity
8020function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
8021```*/
8022    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8023    #[derive(Clone)]
8024    pub struct registerValidatorCall {
8025        #[allow(missing_docs)]
8026        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8027        #[allow(missing_docs)]
8028        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8029        #[allow(missing_docs)]
8030        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8031        #[allow(missing_docs)]
8032        pub commission: u16,
8033    }
8034    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
8035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8036    #[derive(Clone)]
8037    pub struct registerValidatorReturn {}
8038    #[allow(
8039        non_camel_case_types,
8040        non_snake_case,
8041        clippy::pub_underscore_fields,
8042        clippy::style
8043    )]
8044    const _: () = {
8045        use alloy::sol_types as alloy_sol_types;
8046        {
8047            #[doc(hidden)]
8048            type UnderlyingSolTuple<'a> = (
8049                BN254::G2Point,
8050                EdOnBN254::EdOnBN254Point,
8051                BN254::G1Point,
8052                alloy::sol_types::sol_data::Uint<16>,
8053            );
8054            #[doc(hidden)]
8055            type UnderlyingRustTuple<'a> = (
8056                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8057                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8058                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8059                u16,
8060            );
8061            #[cfg(test)]
8062            #[allow(dead_code, unreachable_patterns)]
8063            fn _type_assertion(
8064                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8065            ) {
8066                match _t {
8067                    alloy_sol_types::private::AssertTypeEq::<
8068                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8069                    >(_) => {}
8070                }
8071            }
8072            #[automatically_derived]
8073            #[doc(hidden)]
8074            impl ::core::convert::From<registerValidatorCall>
8075            for UnderlyingRustTuple<'_> {
8076                fn from(value: registerValidatorCall) -> Self {
8077                    (value.blsVK, value.schnorrVK, value.blsSig, value.commission)
8078                }
8079            }
8080            #[automatically_derived]
8081            #[doc(hidden)]
8082            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8083            for registerValidatorCall {
8084                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8085                    Self {
8086                        blsVK: tuple.0,
8087                        schnorrVK: tuple.1,
8088                        blsSig: tuple.2,
8089                        commission: tuple.3,
8090                    }
8091                }
8092            }
8093        }
8094        {
8095            #[doc(hidden)]
8096            type UnderlyingSolTuple<'a> = ();
8097            #[doc(hidden)]
8098            type UnderlyingRustTuple<'a> = ();
8099            #[cfg(test)]
8100            #[allow(dead_code, unreachable_patterns)]
8101            fn _type_assertion(
8102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8103            ) {
8104                match _t {
8105                    alloy_sol_types::private::AssertTypeEq::<
8106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8107                    >(_) => {}
8108                }
8109            }
8110            #[automatically_derived]
8111            #[doc(hidden)]
8112            impl ::core::convert::From<registerValidatorReturn>
8113            for UnderlyingRustTuple<'_> {
8114                fn from(value: registerValidatorReturn) -> Self {
8115                    ()
8116                }
8117            }
8118            #[automatically_derived]
8119            #[doc(hidden)]
8120            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8121            for registerValidatorReturn {
8122                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8123                    Self {}
8124                }
8125            }
8126        }
8127        impl registerValidatorReturn {
8128            fn _tokenize(
8129                &self,
8130            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8131                ()
8132            }
8133        }
8134        #[automatically_derived]
8135        impl alloy_sol_types::SolCall for registerValidatorCall {
8136            type Parameters<'a> = (
8137                BN254::G2Point,
8138                EdOnBN254::EdOnBN254Point,
8139                BN254::G1Point,
8140                alloy::sol_types::sol_data::Uint<16>,
8141            );
8142            type Token<'a> = <Self::Parameters<
8143                'a,
8144            > as alloy_sol_types::SolType>::Token<'a>;
8145            type Return = registerValidatorReturn;
8146            type ReturnTuple<'a> = ();
8147            type ReturnToken<'a> = <Self::ReturnTuple<
8148                'a,
8149            > as alloy_sol_types::SolType>::Token<'a>;
8150            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
8151            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
8152            #[inline]
8153            fn new<'a>(
8154                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8155            ) -> Self {
8156                tuple.into()
8157            }
8158            #[inline]
8159            fn tokenize(&self) -> Self::Token<'_> {
8160                (
8161                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8162                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8163                        &self.schnorrVK,
8164                    ),
8165                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8166                    <alloy::sol_types::sol_data::Uint<
8167                        16,
8168                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
8169                )
8170            }
8171            #[inline]
8172            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8173                registerValidatorReturn::_tokenize(ret)
8174            }
8175            #[inline]
8176            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8177                <Self::ReturnTuple<
8178                    '_,
8179                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8180                    .map(Into::into)
8181            }
8182            #[inline]
8183            fn abi_decode_returns_validate(
8184                data: &[u8],
8185            ) -> alloy_sol_types::Result<Self::Return> {
8186                <Self::ReturnTuple<
8187                    '_,
8188                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8189                    .map(Into::into)
8190            }
8191        }
8192    };
8193    #[derive(serde::Serialize, serde::Deserialize)]
8194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8195    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
8196```solidity
8197function renounceOwnership() external;
8198```*/
8199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8200    #[derive(Clone)]
8201    pub struct renounceOwnershipCall;
8202    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8203    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8204    #[derive(Clone)]
8205    pub struct renounceOwnershipReturn {}
8206    #[allow(
8207        non_camel_case_types,
8208        non_snake_case,
8209        clippy::pub_underscore_fields,
8210        clippy::style
8211    )]
8212    const _: () = {
8213        use alloy::sol_types as alloy_sol_types;
8214        {
8215            #[doc(hidden)]
8216            type UnderlyingSolTuple<'a> = ();
8217            #[doc(hidden)]
8218            type UnderlyingRustTuple<'a> = ();
8219            #[cfg(test)]
8220            #[allow(dead_code, unreachable_patterns)]
8221            fn _type_assertion(
8222                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8223            ) {
8224                match _t {
8225                    alloy_sol_types::private::AssertTypeEq::<
8226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8227                    >(_) => {}
8228                }
8229            }
8230            #[automatically_derived]
8231            #[doc(hidden)]
8232            impl ::core::convert::From<renounceOwnershipCall>
8233            for UnderlyingRustTuple<'_> {
8234                fn from(value: renounceOwnershipCall) -> Self {
8235                    ()
8236                }
8237            }
8238            #[automatically_derived]
8239            #[doc(hidden)]
8240            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8241            for renounceOwnershipCall {
8242                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8243                    Self
8244                }
8245            }
8246        }
8247        {
8248            #[doc(hidden)]
8249            type UnderlyingSolTuple<'a> = ();
8250            #[doc(hidden)]
8251            type UnderlyingRustTuple<'a> = ();
8252            #[cfg(test)]
8253            #[allow(dead_code, unreachable_patterns)]
8254            fn _type_assertion(
8255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8256            ) {
8257                match _t {
8258                    alloy_sol_types::private::AssertTypeEq::<
8259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8260                    >(_) => {}
8261                }
8262            }
8263            #[automatically_derived]
8264            #[doc(hidden)]
8265            impl ::core::convert::From<renounceOwnershipReturn>
8266            for UnderlyingRustTuple<'_> {
8267                fn from(value: renounceOwnershipReturn) -> Self {
8268                    ()
8269                }
8270            }
8271            #[automatically_derived]
8272            #[doc(hidden)]
8273            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8274            for renounceOwnershipReturn {
8275                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8276                    Self {}
8277                }
8278            }
8279        }
8280        impl renounceOwnershipReturn {
8281            fn _tokenize(
8282                &self,
8283            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8284                ()
8285            }
8286        }
8287        #[automatically_derived]
8288        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8289            type Parameters<'a> = ();
8290            type Token<'a> = <Self::Parameters<
8291                'a,
8292            > as alloy_sol_types::SolType>::Token<'a>;
8293            type Return = renounceOwnershipReturn;
8294            type ReturnTuple<'a> = ();
8295            type ReturnToken<'a> = <Self::ReturnTuple<
8296                'a,
8297            > as alloy_sol_types::SolType>::Token<'a>;
8298            const SIGNATURE: &'static str = "renounceOwnership()";
8299            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8300            #[inline]
8301            fn new<'a>(
8302                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8303            ) -> Self {
8304                tuple.into()
8305            }
8306            #[inline]
8307            fn tokenize(&self) -> Self::Token<'_> {
8308                ()
8309            }
8310            #[inline]
8311            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8312                renounceOwnershipReturn::_tokenize(ret)
8313            }
8314            #[inline]
8315            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8316                <Self::ReturnTuple<
8317                    '_,
8318                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8319                    .map(Into::into)
8320            }
8321            #[inline]
8322            fn abi_decode_returns_validate(
8323                data: &[u8],
8324            ) -> alloy_sol_types::Result<Self::Return> {
8325                <Self::ReturnTuple<
8326                    '_,
8327                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8328                    .map(Into::into)
8329            }
8330        }
8331    };
8332    #[derive(serde::Serialize, serde::Deserialize)]
8333    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8334    /**Function with signature `token()` and selector `0xfc0c546a`.
8335```solidity
8336function token() external view returns (address);
8337```*/
8338    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8339    #[derive(Clone)]
8340    pub struct tokenCall;
8341    #[derive(serde::Serialize, serde::Deserialize)]
8342    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8343    ///Container type for the return parameters of the [`token()`](tokenCall) function.
8344    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8345    #[derive(Clone)]
8346    pub struct tokenReturn {
8347        #[allow(missing_docs)]
8348        pub _0: alloy::sol_types::private::Address,
8349    }
8350    #[allow(
8351        non_camel_case_types,
8352        non_snake_case,
8353        clippy::pub_underscore_fields,
8354        clippy::style
8355    )]
8356    const _: () = {
8357        use alloy::sol_types as alloy_sol_types;
8358        {
8359            #[doc(hidden)]
8360            type UnderlyingSolTuple<'a> = ();
8361            #[doc(hidden)]
8362            type UnderlyingRustTuple<'a> = ();
8363            #[cfg(test)]
8364            #[allow(dead_code, unreachable_patterns)]
8365            fn _type_assertion(
8366                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8367            ) {
8368                match _t {
8369                    alloy_sol_types::private::AssertTypeEq::<
8370                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8371                    >(_) => {}
8372                }
8373            }
8374            #[automatically_derived]
8375            #[doc(hidden)]
8376            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
8377                fn from(value: tokenCall) -> Self {
8378                    ()
8379                }
8380            }
8381            #[automatically_derived]
8382            #[doc(hidden)]
8383            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
8384                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8385                    Self
8386                }
8387            }
8388        }
8389        {
8390            #[doc(hidden)]
8391            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8392            #[doc(hidden)]
8393            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8394            #[cfg(test)]
8395            #[allow(dead_code, unreachable_patterns)]
8396            fn _type_assertion(
8397                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8398            ) {
8399                match _t {
8400                    alloy_sol_types::private::AssertTypeEq::<
8401                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8402                    >(_) => {}
8403                }
8404            }
8405            #[automatically_derived]
8406            #[doc(hidden)]
8407            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
8408                fn from(value: tokenReturn) -> Self {
8409                    (value._0,)
8410                }
8411            }
8412            #[automatically_derived]
8413            #[doc(hidden)]
8414            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
8415                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8416                    Self { _0: tuple.0 }
8417                }
8418            }
8419        }
8420        #[automatically_derived]
8421        impl alloy_sol_types::SolCall for tokenCall {
8422            type Parameters<'a> = ();
8423            type Token<'a> = <Self::Parameters<
8424                'a,
8425            > as alloy_sol_types::SolType>::Token<'a>;
8426            type Return = alloy::sol_types::private::Address;
8427            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8428            type ReturnToken<'a> = <Self::ReturnTuple<
8429                'a,
8430            > as alloy_sol_types::SolType>::Token<'a>;
8431            const SIGNATURE: &'static str = "token()";
8432            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
8433            #[inline]
8434            fn new<'a>(
8435                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8436            ) -> Self {
8437                tuple.into()
8438            }
8439            #[inline]
8440            fn tokenize(&self) -> Self::Token<'_> {
8441                ()
8442            }
8443            #[inline]
8444            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8445                (
8446                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8447                        ret,
8448                    ),
8449                )
8450            }
8451            #[inline]
8452            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8453                <Self::ReturnTuple<
8454                    '_,
8455                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8456                    .map(|r| {
8457                        let r: tokenReturn = r.into();
8458                        r._0
8459                    })
8460            }
8461            #[inline]
8462            fn abi_decode_returns_validate(
8463                data: &[u8],
8464            ) -> alloy_sol_types::Result<Self::Return> {
8465                <Self::ReturnTuple<
8466                    '_,
8467                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8468                    .map(|r| {
8469                        let r: tokenReturn = r.into();
8470                        r._0
8471                    })
8472            }
8473        }
8474    };
8475    #[derive(serde::Serialize, serde::Deserialize)]
8476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8477    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8478```solidity
8479function transferOwnership(address newOwner) external;
8480```*/
8481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8482    #[derive(Clone)]
8483    pub struct transferOwnershipCall {
8484        #[allow(missing_docs)]
8485        pub newOwner: alloy::sol_types::private::Address,
8486    }
8487    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8488    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8489    #[derive(Clone)]
8490    pub struct transferOwnershipReturn {}
8491    #[allow(
8492        non_camel_case_types,
8493        non_snake_case,
8494        clippy::pub_underscore_fields,
8495        clippy::style
8496    )]
8497    const _: () = {
8498        use alloy::sol_types as alloy_sol_types;
8499        {
8500            #[doc(hidden)]
8501            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8502            #[doc(hidden)]
8503            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8504            #[cfg(test)]
8505            #[allow(dead_code, unreachable_patterns)]
8506            fn _type_assertion(
8507                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8508            ) {
8509                match _t {
8510                    alloy_sol_types::private::AssertTypeEq::<
8511                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8512                    >(_) => {}
8513                }
8514            }
8515            #[automatically_derived]
8516            #[doc(hidden)]
8517            impl ::core::convert::From<transferOwnershipCall>
8518            for UnderlyingRustTuple<'_> {
8519                fn from(value: transferOwnershipCall) -> Self {
8520                    (value.newOwner,)
8521                }
8522            }
8523            #[automatically_derived]
8524            #[doc(hidden)]
8525            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8526            for transferOwnershipCall {
8527                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8528                    Self { newOwner: tuple.0 }
8529                }
8530            }
8531        }
8532        {
8533            #[doc(hidden)]
8534            type UnderlyingSolTuple<'a> = ();
8535            #[doc(hidden)]
8536            type UnderlyingRustTuple<'a> = ();
8537            #[cfg(test)]
8538            #[allow(dead_code, unreachable_patterns)]
8539            fn _type_assertion(
8540                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8541            ) {
8542                match _t {
8543                    alloy_sol_types::private::AssertTypeEq::<
8544                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8545                    >(_) => {}
8546                }
8547            }
8548            #[automatically_derived]
8549            #[doc(hidden)]
8550            impl ::core::convert::From<transferOwnershipReturn>
8551            for UnderlyingRustTuple<'_> {
8552                fn from(value: transferOwnershipReturn) -> Self {
8553                    ()
8554                }
8555            }
8556            #[automatically_derived]
8557            #[doc(hidden)]
8558            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8559            for transferOwnershipReturn {
8560                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8561                    Self {}
8562                }
8563            }
8564        }
8565        impl transferOwnershipReturn {
8566            fn _tokenize(
8567                &self,
8568            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8569                ()
8570            }
8571        }
8572        #[automatically_derived]
8573        impl alloy_sol_types::SolCall for transferOwnershipCall {
8574            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8575            type Token<'a> = <Self::Parameters<
8576                'a,
8577            > as alloy_sol_types::SolType>::Token<'a>;
8578            type Return = transferOwnershipReturn;
8579            type ReturnTuple<'a> = ();
8580            type ReturnToken<'a> = <Self::ReturnTuple<
8581                'a,
8582            > as alloy_sol_types::SolType>::Token<'a>;
8583            const SIGNATURE: &'static str = "transferOwnership(address)";
8584            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8585            #[inline]
8586            fn new<'a>(
8587                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8588            ) -> Self {
8589                tuple.into()
8590            }
8591            #[inline]
8592            fn tokenize(&self) -> Self::Token<'_> {
8593                (
8594                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8595                        &self.newOwner,
8596                    ),
8597                )
8598            }
8599            #[inline]
8600            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8601                transferOwnershipReturn::_tokenize(ret)
8602            }
8603            #[inline]
8604            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8605                <Self::ReturnTuple<
8606                    '_,
8607                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8608                    .map(Into::into)
8609            }
8610            #[inline]
8611            fn abi_decode_returns_validate(
8612                data: &[u8],
8613            ) -> alloy_sol_types::Result<Self::Return> {
8614                <Self::ReturnTuple<
8615                    '_,
8616                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8617                    .map(Into::into)
8618            }
8619        }
8620    };
8621    #[derive(serde::Serialize, serde::Deserialize)]
8622    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8623    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
8624```solidity
8625function undelegate(address validator, uint256 amount) external;
8626```*/
8627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8628    #[derive(Clone)]
8629    pub struct undelegateCall {
8630        #[allow(missing_docs)]
8631        pub validator: alloy::sol_types::private::Address,
8632        #[allow(missing_docs)]
8633        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8634    }
8635    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
8636    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8637    #[derive(Clone)]
8638    pub struct undelegateReturn {}
8639    #[allow(
8640        non_camel_case_types,
8641        non_snake_case,
8642        clippy::pub_underscore_fields,
8643        clippy::style
8644    )]
8645    const _: () = {
8646        use alloy::sol_types as alloy_sol_types;
8647        {
8648            #[doc(hidden)]
8649            type UnderlyingSolTuple<'a> = (
8650                alloy::sol_types::sol_data::Address,
8651                alloy::sol_types::sol_data::Uint<256>,
8652            );
8653            #[doc(hidden)]
8654            type UnderlyingRustTuple<'a> = (
8655                alloy::sol_types::private::Address,
8656                alloy::sol_types::private::primitives::aliases::U256,
8657            );
8658            #[cfg(test)]
8659            #[allow(dead_code, unreachable_patterns)]
8660            fn _type_assertion(
8661                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8662            ) {
8663                match _t {
8664                    alloy_sol_types::private::AssertTypeEq::<
8665                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8666                    >(_) => {}
8667                }
8668            }
8669            #[automatically_derived]
8670            #[doc(hidden)]
8671            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
8672                fn from(value: undelegateCall) -> Self {
8673                    (value.validator, value.amount)
8674                }
8675            }
8676            #[automatically_derived]
8677            #[doc(hidden)]
8678            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
8679                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8680                    Self {
8681                        validator: tuple.0,
8682                        amount: tuple.1,
8683                    }
8684                }
8685            }
8686        }
8687        {
8688            #[doc(hidden)]
8689            type UnderlyingSolTuple<'a> = ();
8690            #[doc(hidden)]
8691            type UnderlyingRustTuple<'a> = ();
8692            #[cfg(test)]
8693            #[allow(dead_code, unreachable_patterns)]
8694            fn _type_assertion(
8695                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8696            ) {
8697                match _t {
8698                    alloy_sol_types::private::AssertTypeEq::<
8699                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8700                    >(_) => {}
8701                }
8702            }
8703            #[automatically_derived]
8704            #[doc(hidden)]
8705            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
8706                fn from(value: undelegateReturn) -> Self {
8707                    ()
8708                }
8709            }
8710            #[automatically_derived]
8711            #[doc(hidden)]
8712            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
8713                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8714                    Self {}
8715                }
8716            }
8717        }
8718        impl undelegateReturn {
8719            fn _tokenize(
8720                &self,
8721            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8722                ()
8723            }
8724        }
8725        #[automatically_derived]
8726        impl alloy_sol_types::SolCall for undelegateCall {
8727            type Parameters<'a> = (
8728                alloy::sol_types::sol_data::Address,
8729                alloy::sol_types::sol_data::Uint<256>,
8730            );
8731            type Token<'a> = <Self::Parameters<
8732                'a,
8733            > as alloy_sol_types::SolType>::Token<'a>;
8734            type Return = undelegateReturn;
8735            type ReturnTuple<'a> = ();
8736            type ReturnToken<'a> = <Self::ReturnTuple<
8737                'a,
8738            > as alloy_sol_types::SolType>::Token<'a>;
8739            const SIGNATURE: &'static str = "undelegate(address,uint256)";
8740            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
8741            #[inline]
8742            fn new<'a>(
8743                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8744            ) -> Self {
8745                tuple.into()
8746            }
8747            #[inline]
8748            fn tokenize(&self) -> Self::Token<'_> {
8749                (
8750                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8751                        &self.validator,
8752                    ),
8753                    <alloy::sol_types::sol_data::Uint<
8754                        256,
8755                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8756                )
8757            }
8758            #[inline]
8759            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8760                undelegateReturn::_tokenize(ret)
8761            }
8762            #[inline]
8763            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8764                <Self::ReturnTuple<
8765                    '_,
8766                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8767                    .map(Into::into)
8768            }
8769            #[inline]
8770            fn abi_decode_returns_validate(
8771                data: &[u8],
8772            ) -> alloy_sol_types::Result<Self::Return> {
8773                <Self::ReturnTuple<
8774                    '_,
8775                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8776                    .map(Into::into)
8777            }
8778        }
8779    };
8780    #[derive(serde::Serialize, serde::Deserialize)]
8781    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8782    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
8783```solidity
8784function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
8785```*/
8786    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8787    #[derive(Clone)]
8788    pub struct undelegationsCall {
8789        #[allow(missing_docs)]
8790        pub validator: alloy::sol_types::private::Address,
8791        #[allow(missing_docs)]
8792        pub delegator: alloy::sol_types::private::Address,
8793    }
8794    #[derive(serde::Serialize, serde::Deserialize)]
8795    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8796    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
8797    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8798    #[derive(Clone)]
8799    pub struct undelegationsReturn {
8800        #[allow(missing_docs)]
8801        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8802        #[allow(missing_docs)]
8803        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
8804    }
8805    #[allow(
8806        non_camel_case_types,
8807        non_snake_case,
8808        clippy::pub_underscore_fields,
8809        clippy::style
8810    )]
8811    const _: () = {
8812        use alloy::sol_types as alloy_sol_types;
8813        {
8814            #[doc(hidden)]
8815            type UnderlyingSolTuple<'a> = (
8816                alloy::sol_types::sol_data::Address,
8817                alloy::sol_types::sol_data::Address,
8818            );
8819            #[doc(hidden)]
8820            type UnderlyingRustTuple<'a> = (
8821                alloy::sol_types::private::Address,
8822                alloy::sol_types::private::Address,
8823            );
8824            #[cfg(test)]
8825            #[allow(dead_code, unreachable_patterns)]
8826            fn _type_assertion(
8827                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8828            ) {
8829                match _t {
8830                    alloy_sol_types::private::AssertTypeEq::<
8831                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8832                    >(_) => {}
8833                }
8834            }
8835            #[automatically_derived]
8836            #[doc(hidden)]
8837            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
8838                fn from(value: undelegationsCall) -> Self {
8839                    (value.validator, value.delegator)
8840                }
8841            }
8842            #[automatically_derived]
8843            #[doc(hidden)]
8844            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
8845                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8846                    Self {
8847                        validator: tuple.0,
8848                        delegator: tuple.1,
8849                    }
8850                }
8851            }
8852        }
8853        {
8854            #[doc(hidden)]
8855            type UnderlyingSolTuple<'a> = (
8856                alloy::sol_types::sol_data::Uint<256>,
8857                alloy::sol_types::sol_data::Uint<256>,
8858            );
8859            #[doc(hidden)]
8860            type UnderlyingRustTuple<'a> = (
8861                alloy::sol_types::private::primitives::aliases::U256,
8862                alloy::sol_types::private::primitives::aliases::U256,
8863            );
8864            #[cfg(test)]
8865            #[allow(dead_code, unreachable_patterns)]
8866            fn _type_assertion(
8867                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8868            ) {
8869                match _t {
8870                    alloy_sol_types::private::AssertTypeEq::<
8871                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8872                    >(_) => {}
8873                }
8874            }
8875            #[automatically_derived]
8876            #[doc(hidden)]
8877            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
8878                fn from(value: undelegationsReturn) -> Self {
8879                    (value.amount, value.unlocksAt)
8880                }
8881            }
8882            #[automatically_derived]
8883            #[doc(hidden)]
8884            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
8885                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8886                    Self {
8887                        amount: tuple.0,
8888                        unlocksAt: tuple.1,
8889                    }
8890                }
8891            }
8892        }
8893        impl undelegationsReturn {
8894            fn _tokenize(
8895                &self,
8896            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8897                (
8898                    <alloy::sol_types::sol_data::Uint<
8899                        256,
8900                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8901                    <alloy::sol_types::sol_data::Uint<
8902                        256,
8903                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
8904                )
8905            }
8906        }
8907        #[automatically_derived]
8908        impl alloy_sol_types::SolCall for undelegationsCall {
8909            type Parameters<'a> = (
8910                alloy::sol_types::sol_data::Address,
8911                alloy::sol_types::sol_data::Address,
8912            );
8913            type Token<'a> = <Self::Parameters<
8914                'a,
8915            > as alloy_sol_types::SolType>::Token<'a>;
8916            type Return = undelegationsReturn;
8917            type ReturnTuple<'a> = (
8918                alloy::sol_types::sol_data::Uint<256>,
8919                alloy::sol_types::sol_data::Uint<256>,
8920            );
8921            type ReturnToken<'a> = <Self::ReturnTuple<
8922                'a,
8923            > as alloy_sol_types::SolType>::Token<'a>;
8924            const SIGNATURE: &'static str = "undelegations(address,address)";
8925            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
8926            #[inline]
8927            fn new<'a>(
8928                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8929            ) -> Self {
8930                tuple.into()
8931            }
8932            #[inline]
8933            fn tokenize(&self) -> Self::Token<'_> {
8934                (
8935                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8936                        &self.validator,
8937                    ),
8938                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8939                        &self.delegator,
8940                    ),
8941                )
8942            }
8943            #[inline]
8944            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8945                undelegationsReturn::_tokenize(ret)
8946            }
8947            #[inline]
8948            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8949                <Self::ReturnTuple<
8950                    '_,
8951                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8952                    .map(Into::into)
8953            }
8954            #[inline]
8955            fn abi_decode_returns_validate(
8956                data: &[u8],
8957            ) -> alloy_sol_types::Result<Self::Return> {
8958                <Self::ReturnTuple<
8959                    '_,
8960                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8961                    .map(Into::into)
8962            }
8963        }
8964    };
8965    #[derive(serde::Serialize, serde::Deserialize)]
8966    #[derive()]
8967    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
8968```solidity
8969function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
8970```*/
8971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8972    #[derive(Clone)]
8973    pub struct updateConsensusKeysCall {
8974        #[allow(missing_docs)]
8975        pub newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8976        #[allow(missing_docs)]
8977        pub newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8978        #[allow(missing_docs)]
8979        pub newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8980    }
8981    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
8982    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8983    #[derive(Clone)]
8984    pub struct updateConsensusKeysReturn {}
8985    #[allow(
8986        non_camel_case_types,
8987        non_snake_case,
8988        clippy::pub_underscore_fields,
8989        clippy::style
8990    )]
8991    const _: () = {
8992        use alloy::sol_types as alloy_sol_types;
8993        {
8994            #[doc(hidden)]
8995            type UnderlyingSolTuple<'a> = (
8996                BN254::G2Point,
8997                EdOnBN254::EdOnBN254Point,
8998                BN254::G1Point,
8999            );
9000            #[doc(hidden)]
9001            type UnderlyingRustTuple<'a> = (
9002                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9003                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
9004                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
9005            );
9006            #[cfg(test)]
9007            #[allow(dead_code, unreachable_patterns)]
9008            fn _type_assertion(
9009                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9010            ) {
9011                match _t {
9012                    alloy_sol_types::private::AssertTypeEq::<
9013                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9014                    >(_) => {}
9015                }
9016            }
9017            #[automatically_derived]
9018            #[doc(hidden)]
9019            impl ::core::convert::From<updateConsensusKeysCall>
9020            for UnderlyingRustTuple<'_> {
9021                fn from(value: updateConsensusKeysCall) -> Self {
9022                    (value.newBlsVK, value.newSchnorrVK, value.newBlsSig)
9023                }
9024            }
9025            #[automatically_derived]
9026            #[doc(hidden)]
9027            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9028            for updateConsensusKeysCall {
9029                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9030                    Self {
9031                        newBlsVK: tuple.0,
9032                        newSchnorrVK: tuple.1,
9033                        newBlsSig: tuple.2,
9034                    }
9035                }
9036            }
9037        }
9038        {
9039            #[doc(hidden)]
9040            type UnderlyingSolTuple<'a> = ();
9041            #[doc(hidden)]
9042            type UnderlyingRustTuple<'a> = ();
9043            #[cfg(test)]
9044            #[allow(dead_code, unreachable_patterns)]
9045            fn _type_assertion(
9046                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9047            ) {
9048                match _t {
9049                    alloy_sol_types::private::AssertTypeEq::<
9050                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9051                    >(_) => {}
9052                }
9053            }
9054            #[automatically_derived]
9055            #[doc(hidden)]
9056            impl ::core::convert::From<updateConsensusKeysReturn>
9057            for UnderlyingRustTuple<'_> {
9058                fn from(value: updateConsensusKeysReturn) -> Self {
9059                    ()
9060                }
9061            }
9062            #[automatically_derived]
9063            #[doc(hidden)]
9064            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9065            for updateConsensusKeysReturn {
9066                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9067                    Self {}
9068                }
9069            }
9070        }
9071        impl updateConsensusKeysReturn {
9072            fn _tokenize(
9073                &self,
9074            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9075                ()
9076            }
9077        }
9078        #[automatically_derived]
9079        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
9080            type Parameters<'a> = (
9081                BN254::G2Point,
9082                EdOnBN254::EdOnBN254Point,
9083                BN254::G1Point,
9084            );
9085            type Token<'a> = <Self::Parameters<
9086                'a,
9087            > as alloy_sol_types::SolType>::Token<'a>;
9088            type Return = updateConsensusKeysReturn;
9089            type ReturnTuple<'a> = ();
9090            type ReturnToken<'a> = <Self::ReturnTuple<
9091                'a,
9092            > as alloy_sol_types::SolType>::Token<'a>;
9093            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
9094            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
9095            #[inline]
9096            fn new<'a>(
9097                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9098            ) -> Self {
9099                tuple.into()
9100            }
9101            #[inline]
9102            fn tokenize(&self) -> Self::Token<'_> {
9103                (
9104                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(
9105                        &self.newBlsVK,
9106                    ),
9107                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
9108                        &self.newSchnorrVK,
9109                    ),
9110                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
9111                        &self.newBlsSig,
9112                    ),
9113                )
9114            }
9115            #[inline]
9116            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9117                updateConsensusKeysReturn::_tokenize(ret)
9118            }
9119            #[inline]
9120            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9121                <Self::ReturnTuple<
9122                    '_,
9123                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9124                    .map(Into::into)
9125            }
9126            #[inline]
9127            fn abi_decode_returns_validate(
9128                data: &[u8],
9129            ) -> alloy_sol_types::Result<Self::Return> {
9130                <Self::ReturnTuple<
9131                    '_,
9132                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9133                    .map(Into::into)
9134            }
9135        }
9136    };
9137    #[derive(serde::Serialize, serde::Deserialize)]
9138    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9139    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
9140```solidity
9141function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
9142```*/
9143    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9144    #[derive(Clone)]
9145    pub struct upgradeToAndCallCall {
9146        #[allow(missing_docs)]
9147        pub newImplementation: alloy::sol_types::private::Address,
9148        #[allow(missing_docs)]
9149        pub data: alloy::sol_types::private::Bytes,
9150    }
9151    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
9152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9153    #[derive(Clone)]
9154    pub struct upgradeToAndCallReturn {}
9155    #[allow(
9156        non_camel_case_types,
9157        non_snake_case,
9158        clippy::pub_underscore_fields,
9159        clippy::style
9160    )]
9161    const _: () = {
9162        use alloy::sol_types as alloy_sol_types;
9163        {
9164            #[doc(hidden)]
9165            type UnderlyingSolTuple<'a> = (
9166                alloy::sol_types::sol_data::Address,
9167                alloy::sol_types::sol_data::Bytes,
9168            );
9169            #[doc(hidden)]
9170            type UnderlyingRustTuple<'a> = (
9171                alloy::sol_types::private::Address,
9172                alloy::sol_types::private::Bytes,
9173            );
9174            #[cfg(test)]
9175            #[allow(dead_code, unreachable_patterns)]
9176            fn _type_assertion(
9177                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9178            ) {
9179                match _t {
9180                    alloy_sol_types::private::AssertTypeEq::<
9181                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9182                    >(_) => {}
9183                }
9184            }
9185            #[automatically_derived]
9186            #[doc(hidden)]
9187            impl ::core::convert::From<upgradeToAndCallCall>
9188            for UnderlyingRustTuple<'_> {
9189                fn from(value: upgradeToAndCallCall) -> Self {
9190                    (value.newImplementation, value.data)
9191                }
9192            }
9193            #[automatically_derived]
9194            #[doc(hidden)]
9195            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9196            for upgradeToAndCallCall {
9197                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9198                    Self {
9199                        newImplementation: tuple.0,
9200                        data: tuple.1,
9201                    }
9202                }
9203            }
9204        }
9205        {
9206            #[doc(hidden)]
9207            type UnderlyingSolTuple<'a> = ();
9208            #[doc(hidden)]
9209            type UnderlyingRustTuple<'a> = ();
9210            #[cfg(test)]
9211            #[allow(dead_code, unreachable_patterns)]
9212            fn _type_assertion(
9213                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9214            ) {
9215                match _t {
9216                    alloy_sol_types::private::AssertTypeEq::<
9217                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9218                    >(_) => {}
9219                }
9220            }
9221            #[automatically_derived]
9222            #[doc(hidden)]
9223            impl ::core::convert::From<upgradeToAndCallReturn>
9224            for UnderlyingRustTuple<'_> {
9225                fn from(value: upgradeToAndCallReturn) -> Self {
9226                    ()
9227                }
9228            }
9229            #[automatically_derived]
9230            #[doc(hidden)]
9231            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9232            for upgradeToAndCallReturn {
9233                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9234                    Self {}
9235                }
9236            }
9237        }
9238        impl upgradeToAndCallReturn {
9239            fn _tokenize(
9240                &self,
9241            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9242                ()
9243            }
9244        }
9245        #[automatically_derived]
9246        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
9247            type Parameters<'a> = (
9248                alloy::sol_types::sol_data::Address,
9249                alloy::sol_types::sol_data::Bytes,
9250            );
9251            type Token<'a> = <Self::Parameters<
9252                'a,
9253            > as alloy_sol_types::SolType>::Token<'a>;
9254            type Return = upgradeToAndCallReturn;
9255            type ReturnTuple<'a> = ();
9256            type ReturnToken<'a> = <Self::ReturnTuple<
9257                'a,
9258            > as alloy_sol_types::SolType>::Token<'a>;
9259            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
9260            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
9261            #[inline]
9262            fn new<'a>(
9263                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9264            ) -> Self {
9265                tuple.into()
9266            }
9267            #[inline]
9268            fn tokenize(&self) -> Self::Token<'_> {
9269                (
9270                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9271                        &self.newImplementation,
9272                    ),
9273                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9274                        &self.data,
9275                    ),
9276                )
9277            }
9278            #[inline]
9279            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9280                upgradeToAndCallReturn::_tokenize(ret)
9281            }
9282            #[inline]
9283            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9284                <Self::ReturnTuple<
9285                    '_,
9286                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9287                    .map(Into::into)
9288            }
9289            #[inline]
9290            fn abi_decode_returns_validate(
9291                data: &[u8],
9292            ) -> alloy_sol_types::Result<Self::Return> {
9293                <Self::ReturnTuple<
9294                    '_,
9295                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9296                    .map(Into::into)
9297            }
9298        }
9299    };
9300    #[derive(serde::Serialize, serde::Deserialize)]
9301    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9302    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
9303```solidity
9304function validatorExits(address validator) external view returns (uint256 unlocksAt);
9305```*/
9306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9307    #[derive(Clone)]
9308    pub struct validatorExitsCall {
9309        #[allow(missing_docs)]
9310        pub validator: alloy::sol_types::private::Address,
9311    }
9312    #[derive(serde::Serialize, serde::Deserialize)]
9313    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9314    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
9315    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9316    #[derive(Clone)]
9317    pub struct validatorExitsReturn {
9318        #[allow(missing_docs)]
9319        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9320    }
9321    #[allow(
9322        non_camel_case_types,
9323        non_snake_case,
9324        clippy::pub_underscore_fields,
9325        clippy::style
9326    )]
9327    const _: () = {
9328        use alloy::sol_types as alloy_sol_types;
9329        {
9330            #[doc(hidden)]
9331            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9332            #[doc(hidden)]
9333            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9334            #[cfg(test)]
9335            #[allow(dead_code, unreachable_patterns)]
9336            fn _type_assertion(
9337                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9338            ) {
9339                match _t {
9340                    alloy_sol_types::private::AssertTypeEq::<
9341                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9342                    >(_) => {}
9343                }
9344            }
9345            #[automatically_derived]
9346            #[doc(hidden)]
9347            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
9348                fn from(value: validatorExitsCall) -> Self {
9349                    (value.validator,)
9350                }
9351            }
9352            #[automatically_derived]
9353            #[doc(hidden)]
9354            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
9355                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9356                    Self { validator: tuple.0 }
9357                }
9358            }
9359        }
9360        {
9361            #[doc(hidden)]
9362            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9363            #[doc(hidden)]
9364            type UnderlyingRustTuple<'a> = (
9365                alloy::sol_types::private::primitives::aliases::U256,
9366            );
9367            #[cfg(test)]
9368            #[allow(dead_code, unreachable_patterns)]
9369            fn _type_assertion(
9370                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9371            ) {
9372                match _t {
9373                    alloy_sol_types::private::AssertTypeEq::<
9374                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9375                    >(_) => {}
9376                }
9377            }
9378            #[automatically_derived]
9379            #[doc(hidden)]
9380            impl ::core::convert::From<validatorExitsReturn>
9381            for UnderlyingRustTuple<'_> {
9382                fn from(value: validatorExitsReturn) -> Self {
9383                    (value.unlocksAt,)
9384                }
9385            }
9386            #[automatically_derived]
9387            #[doc(hidden)]
9388            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9389            for validatorExitsReturn {
9390                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9391                    Self { unlocksAt: tuple.0 }
9392                }
9393            }
9394        }
9395        #[automatically_derived]
9396        impl alloy_sol_types::SolCall for validatorExitsCall {
9397            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9398            type Token<'a> = <Self::Parameters<
9399                'a,
9400            > as alloy_sol_types::SolType>::Token<'a>;
9401            type Return = alloy::sol_types::private::primitives::aliases::U256;
9402            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9403            type ReturnToken<'a> = <Self::ReturnTuple<
9404                'a,
9405            > as alloy_sol_types::SolType>::Token<'a>;
9406            const SIGNATURE: &'static str = "validatorExits(address)";
9407            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
9408            #[inline]
9409            fn new<'a>(
9410                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9411            ) -> Self {
9412                tuple.into()
9413            }
9414            #[inline]
9415            fn tokenize(&self) -> Self::Token<'_> {
9416                (
9417                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9418                        &self.validator,
9419                    ),
9420                )
9421            }
9422            #[inline]
9423            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9424                (
9425                    <alloy::sol_types::sol_data::Uint<
9426                        256,
9427                    > as alloy_sol_types::SolType>::tokenize(ret),
9428                )
9429            }
9430            #[inline]
9431            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9432                <Self::ReturnTuple<
9433                    '_,
9434                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9435                    .map(|r| {
9436                        let r: validatorExitsReturn = r.into();
9437                        r.unlocksAt
9438                    })
9439            }
9440            #[inline]
9441            fn abi_decode_returns_validate(
9442                data: &[u8],
9443            ) -> alloy_sol_types::Result<Self::Return> {
9444                <Self::ReturnTuple<
9445                    '_,
9446                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9447                    .map(|r| {
9448                        let r: validatorExitsReturn = r.into();
9449                        r.unlocksAt
9450                    })
9451            }
9452        }
9453    };
9454    #[derive(serde::Serialize, serde::Deserialize)]
9455    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9456    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
9457```solidity
9458function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
9459```*/
9460    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9461    #[derive(Clone)]
9462    pub struct validatorsCall {
9463        #[allow(missing_docs)]
9464        pub account: alloy::sol_types::private::Address,
9465    }
9466    #[derive(serde::Serialize, serde::Deserialize)]
9467    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9468    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
9469    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9470    #[derive(Clone)]
9471    pub struct validatorsReturn {
9472        #[allow(missing_docs)]
9473        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
9474        #[allow(missing_docs)]
9475        pub status: <ValidatorStatus as alloy::sol_types::SolType>::RustType,
9476    }
9477    #[allow(
9478        non_camel_case_types,
9479        non_snake_case,
9480        clippy::pub_underscore_fields,
9481        clippy::style
9482    )]
9483    const _: () = {
9484        use alloy::sol_types as alloy_sol_types;
9485        {
9486            #[doc(hidden)]
9487            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9488            #[doc(hidden)]
9489            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9490            #[cfg(test)]
9491            #[allow(dead_code, unreachable_patterns)]
9492            fn _type_assertion(
9493                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9494            ) {
9495                match _t {
9496                    alloy_sol_types::private::AssertTypeEq::<
9497                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9498                    >(_) => {}
9499                }
9500            }
9501            #[automatically_derived]
9502            #[doc(hidden)]
9503            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
9504                fn from(value: validatorsCall) -> Self {
9505                    (value.account,)
9506                }
9507            }
9508            #[automatically_derived]
9509            #[doc(hidden)]
9510            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
9511                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9512                    Self { account: tuple.0 }
9513                }
9514            }
9515        }
9516        {
9517            #[doc(hidden)]
9518            type UnderlyingSolTuple<'a> = (
9519                alloy::sol_types::sol_data::Uint<256>,
9520                ValidatorStatus,
9521            );
9522            #[doc(hidden)]
9523            type UnderlyingRustTuple<'a> = (
9524                alloy::sol_types::private::primitives::aliases::U256,
9525                <ValidatorStatus as alloy::sol_types::SolType>::RustType,
9526            );
9527            #[cfg(test)]
9528            #[allow(dead_code, unreachable_patterns)]
9529            fn _type_assertion(
9530                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9531            ) {
9532                match _t {
9533                    alloy_sol_types::private::AssertTypeEq::<
9534                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9535                    >(_) => {}
9536                }
9537            }
9538            #[automatically_derived]
9539            #[doc(hidden)]
9540            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
9541                fn from(value: validatorsReturn) -> Self {
9542                    (value.delegatedAmount, value.status)
9543                }
9544            }
9545            #[automatically_derived]
9546            #[doc(hidden)]
9547            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
9548                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9549                    Self {
9550                        delegatedAmount: tuple.0,
9551                        status: tuple.1,
9552                    }
9553                }
9554            }
9555        }
9556        impl validatorsReturn {
9557            fn _tokenize(
9558                &self,
9559            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9560                (
9561                    <alloy::sol_types::sol_data::Uint<
9562                        256,
9563                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
9564                    <ValidatorStatus as alloy_sol_types::SolType>::tokenize(&self.status),
9565                )
9566            }
9567        }
9568        #[automatically_derived]
9569        impl alloy_sol_types::SolCall for validatorsCall {
9570            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9571            type Token<'a> = <Self::Parameters<
9572                'a,
9573            > as alloy_sol_types::SolType>::Token<'a>;
9574            type Return = validatorsReturn;
9575            type ReturnTuple<'a> = (
9576                alloy::sol_types::sol_data::Uint<256>,
9577                ValidatorStatus,
9578            );
9579            type ReturnToken<'a> = <Self::ReturnTuple<
9580                'a,
9581            > as alloy_sol_types::SolType>::Token<'a>;
9582            const SIGNATURE: &'static str = "validators(address)";
9583            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
9584            #[inline]
9585            fn new<'a>(
9586                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9587            ) -> Self {
9588                tuple.into()
9589            }
9590            #[inline]
9591            fn tokenize(&self) -> Self::Token<'_> {
9592                (
9593                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9594                        &self.account,
9595                    ),
9596                )
9597            }
9598            #[inline]
9599            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9600                validatorsReturn::_tokenize(ret)
9601            }
9602            #[inline]
9603            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9604                <Self::ReturnTuple<
9605                    '_,
9606                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9607                    .map(Into::into)
9608            }
9609            #[inline]
9610            fn abi_decode_returns_validate(
9611                data: &[u8],
9612            ) -> alloy_sol_types::Result<Self::Return> {
9613                <Self::ReturnTuple<
9614                    '_,
9615                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9616                    .map(Into::into)
9617            }
9618        }
9619    };
9620    ///Container for all the [`StakeTable`](self) function calls.
9621    #[derive(serde::Serialize, serde::Deserialize)]
9622    #[derive()]
9623    pub enum StakeTableCalls {
9624        #[allow(missing_docs)]
9625        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
9626        #[allow(missing_docs)]
9627        _hashBlsKey(_hashBlsKeyCall),
9628        #[allow(missing_docs)]
9629        blsKeys(blsKeysCall),
9630        #[allow(missing_docs)]
9631        claimValidatorExit(claimValidatorExitCall),
9632        #[allow(missing_docs)]
9633        claimWithdrawal(claimWithdrawalCall),
9634        #[allow(missing_docs)]
9635        delegate(delegateCall),
9636        #[allow(missing_docs)]
9637        delegations(delegationsCall),
9638        #[allow(missing_docs)]
9639        deregisterValidator(deregisterValidatorCall),
9640        #[allow(missing_docs)]
9641        exitEscrowPeriod(exitEscrowPeriodCall),
9642        #[allow(missing_docs)]
9643        getVersion(getVersionCall),
9644        #[allow(missing_docs)]
9645        initialize(initializeCall),
9646        #[allow(missing_docs)]
9647        initializedAtBlock(initializedAtBlockCall),
9648        #[allow(missing_docs)]
9649        lightClient(lightClientCall),
9650        #[allow(missing_docs)]
9651        owner(ownerCall),
9652        #[allow(missing_docs)]
9653        proxiableUUID(proxiableUUIDCall),
9654        #[allow(missing_docs)]
9655        registerValidator(registerValidatorCall),
9656        #[allow(missing_docs)]
9657        renounceOwnership(renounceOwnershipCall),
9658        #[allow(missing_docs)]
9659        token(tokenCall),
9660        #[allow(missing_docs)]
9661        transferOwnership(transferOwnershipCall),
9662        #[allow(missing_docs)]
9663        undelegate(undelegateCall),
9664        #[allow(missing_docs)]
9665        undelegations(undelegationsCall),
9666        #[allow(missing_docs)]
9667        updateConsensusKeys(updateConsensusKeysCall),
9668        #[allow(missing_docs)]
9669        upgradeToAndCall(upgradeToAndCallCall),
9670        #[allow(missing_docs)]
9671        validatorExits(validatorExitsCall),
9672        #[allow(missing_docs)]
9673        validators(validatorsCall),
9674    }
9675    #[automatically_derived]
9676    impl StakeTableCalls {
9677        /// All the selectors of this enum.
9678        ///
9679        /// Note that the selectors might not be in the same order as the variants.
9680        /// No guarantees are made about the order of the selectors.
9681        ///
9682        /// Prefer using `SolInterface` methods instead.
9683        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9684            [2u8, 110u8, 64u8, 43u8],
9685            [13u8, 142u8, 110u8, 44u8],
9686            [19u8, 185u8, 5u8, 122u8],
9687            [33u8, 64u8, 254u8, 205u8],
9688            [62u8, 157u8, 249u8, 181u8],
9689            [77u8, 153u8, 221u8, 22u8],
9690            [79u8, 30u8, 242u8, 134u8],
9691            [82u8, 209u8, 144u8, 45u8],
9692            [85u8, 68u8, 194u8, 241u8],
9693            [106u8, 145u8, 28u8, 207u8],
9694            [113u8, 80u8, 24u8, 166u8],
9695            [141u8, 165u8, 203u8, 91u8],
9696            [155u8, 48u8, 165u8, 230u8],
9697            [158u8, 154u8, 143u8, 49u8],
9698            [162u8, 215u8, 141u8, 213u8],
9699            [163u8, 6u8, 106u8, 171u8],
9700            [173u8, 60u8, 177u8, 204u8],
9701            [179u8, 230u8, 235u8, 213u8],
9702            [181u8, 112u8, 14u8, 104u8],
9703            [181u8, 236u8, 179u8, 68u8],
9704            [190u8, 32u8, 48u8, 148u8],
9705            [198u8, 72u8, 20u8, 221u8],
9706            [242u8, 253u8, 227u8, 139u8],
9707            [250u8, 82u8, 199u8, 216u8],
9708            [252u8, 12u8, 84u8, 106u8],
9709        ];
9710    }
9711    #[automatically_derived]
9712    impl alloy_sol_types::SolInterface for StakeTableCalls {
9713        const NAME: &'static str = "StakeTableCalls";
9714        const MIN_DATA_LENGTH: usize = 0usize;
9715        const COUNT: usize = 25usize;
9716        #[inline]
9717        fn selector(&self) -> [u8; 4] {
9718            match self {
9719                Self::UPGRADE_INTERFACE_VERSION(_) => {
9720                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
9721                }
9722                Self::_hashBlsKey(_) => {
9723                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
9724                }
9725                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
9726                Self::claimValidatorExit(_) => {
9727                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
9728                }
9729                Self::claimWithdrawal(_) => {
9730                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
9731                }
9732                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
9733                Self::delegations(_) => {
9734                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
9735                }
9736                Self::deregisterValidator(_) => {
9737                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
9738                }
9739                Self::exitEscrowPeriod(_) => {
9740                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9741                }
9742                Self::getVersion(_) => {
9743                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
9744                }
9745                Self::initialize(_) => {
9746                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9747                }
9748                Self::initializedAtBlock(_) => {
9749                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
9750                }
9751                Self::lightClient(_) => {
9752                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
9753                }
9754                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9755                Self::proxiableUUID(_) => {
9756                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
9757                }
9758                Self::registerValidator(_) => {
9759                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
9760                }
9761                Self::renounceOwnership(_) => {
9762                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9763                }
9764                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
9765                Self::transferOwnership(_) => {
9766                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9767                }
9768                Self::undelegate(_) => {
9769                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
9770                }
9771                Self::undelegations(_) => {
9772                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
9773                }
9774                Self::updateConsensusKeys(_) => {
9775                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
9776                }
9777                Self::upgradeToAndCall(_) => {
9778                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
9779                }
9780                Self::validatorExits(_) => {
9781                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
9782                }
9783                Self::validators(_) => {
9784                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
9785                }
9786            }
9787        }
9788        #[inline]
9789        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9790            Self::SELECTORS.get(i).copied()
9791        }
9792        #[inline]
9793        fn valid_selector(selector: [u8; 4]) -> bool {
9794            Self::SELECTORS.binary_search(&selector).is_ok()
9795        }
9796        #[inline]
9797        #[allow(non_snake_case)]
9798        fn abi_decode_raw(
9799            selector: [u8; 4],
9800            data: &[u8],
9801        ) -> alloy_sol_types::Result<Self> {
9802            static DECODE_SHIMS: &[fn(
9803                &[u8],
9804            ) -> alloy_sol_types::Result<StakeTableCalls>] = &[
9805                {
9806                    fn delegate(
9807                        data: &[u8],
9808                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9809                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9810                            .map(StakeTableCalls::delegate)
9811                    }
9812                    delegate
9813                },
9814                {
9815                    fn getVersion(
9816                        data: &[u8],
9817                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9818                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
9819                                data,
9820                            )
9821                            .map(StakeTableCalls::getVersion)
9822                    }
9823                    getVersion
9824                },
9825                {
9826                    fn registerValidator(
9827                        data: &[u8],
9828                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9829                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9830                                data,
9831                            )
9832                            .map(StakeTableCalls::registerValidator)
9833                    }
9834                    registerValidator
9835                },
9836                {
9837                    fn claimValidatorExit(
9838                        data: &[u8],
9839                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9840                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
9841                                data,
9842                            )
9843                            .map(StakeTableCalls::claimValidatorExit)
9844                    }
9845                    claimValidatorExit
9846                },
9847                {
9848                    fn initializedAtBlock(
9849                        data: &[u8],
9850                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9851                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
9852                                data,
9853                            )
9854                            .map(StakeTableCalls::initializedAtBlock)
9855                    }
9856                    initializedAtBlock
9857                },
9858                {
9859                    fn undelegate(
9860                        data: &[u8],
9861                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9862                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9863                                data,
9864                            )
9865                            .map(StakeTableCalls::undelegate)
9866                    }
9867                    undelegate
9868                },
9869                {
9870                    fn upgradeToAndCall(
9871                        data: &[u8],
9872                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9873                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
9874                                data,
9875                            )
9876                            .map(StakeTableCalls::upgradeToAndCall)
9877                    }
9878                    upgradeToAndCall
9879                },
9880                {
9881                    fn proxiableUUID(
9882                        data: &[u8],
9883                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9884                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
9885                                data,
9886                            )
9887                            .map(StakeTableCalls::proxiableUUID)
9888                    }
9889                    proxiableUUID
9890                },
9891                {
9892                    fn updateConsensusKeys(
9893                        data: &[u8],
9894                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9895                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
9896                                data,
9897                            )
9898                            .map(StakeTableCalls::updateConsensusKeys)
9899                    }
9900                    updateConsensusKeys
9901                },
9902                {
9903                    fn deregisterValidator(
9904                        data: &[u8],
9905                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9906                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9907                                data,
9908                            )
9909                            .map(StakeTableCalls::deregisterValidator)
9910                    }
9911                    deregisterValidator
9912                },
9913                {
9914                    fn renounceOwnership(
9915                        data: &[u8],
9916                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9917                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9918                                data,
9919                            )
9920                            .map(StakeTableCalls::renounceOwnership)
9921                    }
9922                    renounceOwnership
9923                },
9924                {
9925                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
9926                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9927                            .map(StakeTableCalls::owner)
9928                    }
9929                    owner
9930                },
9931                {
9932                    fn _hashBlsKey(
9933                        data: &[u8],
9934                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9935                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
9936                                data,
9937                            )
9938                            .map(StakeTableCalls::_hashBlsKey)
9939                    }
9940                    _hashBlsKey
9941                },
9942                {
9943                    fn exitEscrowPeriod(
9944                        data: &[u8],
9945                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9946                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
9947                                data,
9948                            )
9949                            .map(StakeTableCalls::exitEscrowPeriod)
9950                    }
9951                    exitEscrowPeriod
9952                },
9953                {
9954                    fn undelegations(
9955                        data: &[u8],
9956                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9957                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9958                                data,
9959                            )
9960                            .map(StakeTableCalls::undelegations)
9961                    }
9962                    undelegations
9963                },
9964                {
9965                    fn claimWithdrawal(
9966                        data: &[u8],
9967                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9968                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
9969                                data,
9970                            )
9971                            .map(StakeTableCalls::claimWithdrawal)
9972                    }
9973                    claimWithdrawal
9974                },
9975                {
9976                    fn UPGRADE_INTERFACE_VERSION(
9977                        data: &[u8],
9978                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9979                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
9980                                data,
9981                            )
9982                            .map(StakeTableCalls::UPGRADE_INTERFACE_VERSION)
9983                    }
9984                    UPGRADE_INTERFACE_VERSION
9985                },
9986                {
9987                    fn blsKeys(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
9988                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9989                            .map(StakeTableCalls::blsKeys)
9990                    }
9991                    blsKeys
9992                },
9993                {
9994                    fn lightClient(
9995                        data: &[u8],
9996                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9997                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
9998                                data,
9999                            )
10000                            .map(StakeTableCalls::lightClient)
10001                    }
10002                    lightClient
10003                },
10004                {
10005                    fn validatorExits(
10006                        data: &[u8],
10007                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10008                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10009                                data,
10010                            )
10011                            .map(StakeTableCalls::validatorExits)
10012                    }
10013                    validatorExits
10014                },
10015                {
10016                    fn initialize(
10017                        data: &[u8],
10018                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10019                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10020                                data,
10021                            )
10022                            .map(StakeTableCalls::initialize)
10023                    }
10024                    initialize
10025                },
10026                {
10027                    fn delegations(
10028                        data: &[u8],
10029                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10030                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10031                                data,
10032                            )
10033                            .map(StakeTableCalls::delegations)
10034                    }
10035                    delegations
10036                },
10037                {
10038                    fn transferOwnership(
10039                        data: &[u8],
10040                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10041                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10042                                data,
10043                            )
10044                            .map(StakeTableCalls::transferOwnership)
10045                    }
10046                    transferOwnership
10047                },
10048                {
10049                    fn validators(
10050                        data: &[u8],
10051                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10052                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10053                                data,
10054                            )
10055                            .map(StakeTableCalls::validators)
10056                    }
10057                    validators
10058                },
10059                {
10060                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10061                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10062                            .map(StakeTableCalls::token)
10063                    }
10064                    token
10065                },
10066            ];
10067            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10068                return Err(
10069                    alloy_sol_types::Error::unknown_selector(
10070                        <Self as alloy_sol_types::SolInterface>::NAME,
10071                        selector,
10072                    ),
10073                );
10074            };
10075            DECODE_SHIMS[idx](data)
10076        }
10077        #[inline]
10078        #[allow(non_snake_case)]
10079        fn abi_decode_raw_validate(
10080            selector: [u8; 4],
10081            data: &[u8],
10082        ) -> alloy_sol_types::Result<Self> {
10083            static DECODE_VALIDATE_SHIMS: &[fn(
10084                &[u8],
10085            ) -> alloy_sol_types::Result<StakeTableCalls>] = &[
10086                {
10087                    fn delegate(
10088                        data: &[u8],
10089                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10090                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10091                                data,
10092                            )
10093                            .map(StakeTableCalls::delegate)
10094                    }
10095                    delegate
10096                },
10097                {
10098                    fn getVersion(
10099                        data: &[u8],
10100                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10101                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10102                                data,
10103                            )
10104                            .map(StakeTableCalls::getVersion)
10105                    }
10106                    getVersion
10107                },
10108                {
10109                    fn registerValidator(
10110                        data: &[u8],
10111                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10112                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10113                                data,
10114                            )
10115                            .map(StakeTableCalls::registerValidator)
10116                    }
10117                    registerValidator
10118                },
10119                {
10120                    fn claimValidatorExit(
10121                        data: &[u8],
10122                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10123                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10124                                data,
10125                            )
10126                            .map(StakeTableCalls::claimValidatorExit)
10127                    }
10128                    claimValidatorExit
10129                },
10130                {
10131                    fn initializedAtBlock(
10132                        data: &[u8],
10133                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10134                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10135                                data,
10136                            )
10137                            .map(StakeTableCalls::initializedAtBlock)
10138                    }
10139                    initializedAtBlock
10140                },
10141                {
10142                    fn undelegate(
10143                        data: &[u8],
10144                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10145                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10146                                data,
10147                            )
10148                            .map(StakeTableCalls::undelegate)
10149                    }
10150                    undelegate
10151                },
10152                {
10153                    fn upgradeToAndCall(
10154                        data: &[u8],
10155                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10156                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10157                                data,
10158                            )
10159                            .map(StakeTableCalls::upgradeToAndCall)
10160                    }
10161                    upgradeToAndCall
10162                },
10163                {
10164                    fn proxiableUUID(
10165                        data: &[u8],
10166                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10167                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10168                                data,
10169                            )
10170                            .map(StakeTableCalls::proxiableUUID)
10171                    }
10172                    proxiableUUID
10173                },
10174                {
10175                    fn updateConsensusKeys(
10176                        data: &[u8],
10177                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10178                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10179                                data,
10180                            )
10181                            .map(StakeTableCalls::updateConsensusKeys)
10182                    }
10183                    updateConsensusKeys
10184                },
10185                {
10186                    fn deregisterValidator(
10187                        data: &[u8],
10188                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10189                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10190                                data,
10191                            )
10192                            .map(StakeTableCalls::deregisterValidator)
10193                    }
10194                    deregisterValidator
10195                },
10196                {
10197                    fn renounceOwnership(
10198                        data: &[u8],
10199                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10200                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10201                                data,
10202                            )
10203                            .map(StakeTableCalls::renounceOwnership)
10204                    }
10205                    renounceOwnership
10206                },
10207                {
10208                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10209                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10210                                data,
10211                            )
10212                            .map(StakeTableCalls::owner)
10213                    }
10214                    owner
10215                },
10216                {
10217                    fn _hashBlsKey(
10218                        data: &[u8],
10219                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10220                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10221                                data,
10222                            )
10223                            .map(StakeTableCalls::_hashBlsKey)
10224                    }
10225                    _hashBlsKey
10226                },
10227                {
10228                    fn exitEscrowPeriod(
10229                        data: &[u8],
10230                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10231                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10232                                data,
10233                            )
10234                            .map(StakeTableCalls::exitEscrowPeriod)
10235                    }
10236                    exitEscrowPeriod
10237                },
10238                {
10239                    fn undelegations(
10240                        data: &[u8],
10241                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10242                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10243                                data,
10244                            )
10245                            .map(StakeTableCalls::undelegations)
10246                    }
10247                    undelegations
10248                },
10249                {
10250                    fn claimWithdrawal(
10251                        data: &[u8],
10252                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10253                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10254                                data,
10255                            )
10256                            .map(StakeTableCalls::claimWithdrawal)
10257                    }
10258                    claimWithdrawal
10259                },
10260                {
10261                    fn UPGRADE_INTERFACE_VERSION(
10262                        data: &[u8],
10263                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10264                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10265                                data,
10266                            )
10267                            .map(StakeTableCalls::UPGRADE_INTERFACE_VERSION)
10268                    }
10269                    UPGRADE_INTERFACE_VERSION
10270                },
10271                {
10272                    fn blsKeys(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10273                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10274                                data,
10275                            )
10276                            .map(StakeTableCalls::blsKeys)
10277                    }
10278                    blsKeys
10279                },
10280                {
10281                    fn lightClient(
10282                        data: &[u8],
10283                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10284                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10285                                data,
10286                            )
10287                            .map(StakeTableCalls::lightClient)
10288                    }
10289                    lightClient
10290                },
10291                {
10292                    fn validatorExits(
10293                        data: &[u8],
10294                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10295                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10296                                data,
10297                            )
10298                            .map(StakeTableCalls::validatorExits)
10299                    }
10300                    validatorExits
10301                },
10302                {
10303                    fn initialize(
10304                        data: &[u8],
10305                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10306                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10307                                data,
10308                            )
10309                            .map(StakeTableCalls::initialize)
10310                    }
10311                    initialize
10312                },
10313                {
10314                    fn delegations(
10315                        data: &[u8],
10316                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10317                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10318                                data,
10319                            )
10320                            .map(StakeTableCalls::delegations)
10321                    }
10322                    delegations
10323                },
10324                {
10325                    fn transferOwnership(
10326                        data: &[u8],
10327                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10328                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10329                                data,
10330                            )
10331                            .map(StakeTableCalls::transferOwnership)
10332                    }
10333                    transferOwnership
10334                },
10335                {
10336                    fn validators(
10337                        data: &[u8],
10338                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10339                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10340                                data,
10341                            )
10342                            .map(StakeTableCalls::validators)
10343                    }
10344                    validators
10345                },
10346                {
10347                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10348                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10349                                data,
10350                            )
10351                            .map(StakeTableCalls::token)
10352                    }
10353                    token
10354                },
10355            ];
10356            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10357                return Err(
10358                    alloy_sol_types::Error::unknown_selector(
10359                        <Self as alloy_sol_types::SolInterface>::NAME,
10360                        selector,
10361                    ),
10362                );
10363            };
10364            DECODE_VALIDATE_SHIMS[idx](data)
10365        }
10366        #[inline]
10367        fn abi_encoded_size(&self) -> usize {
10368            match self {
10369                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10370                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
10371                        inner,
10372                    )
10373                }
10374                Self::_hashBlsKey(inner) => {
10375                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
10376                        inner,
10377                    )
10378                }
10379                Self::blsKeys(inner) => {
10380                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10381                }
10382                Self::claimValidatorExit(inner) => {
10383                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
10384                        inner,
10385                    )
10386                }
10387                Self::claimWithdrawal(inner) => {
10388                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
10389                        inner,
10390                    )
10391                }
10392                Self::delegate(inner) => {
10393                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10394                }
10395                Self::delegations(inner) => {
10396                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10397                        inner,
10398                    )
10399                }
10400                Self::deregisterValidator(inner) => {
10401                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10402                        inner,
10403                    )
10404                }
10405                Self::exitEscrowPeriod(inner) => {
10406                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10407                        inner,
10408                    )
10409                }
10410                Self::getVersion(inner) => {
10411                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10412                }
10413                Self::initialize(inner) => {
10414                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10415                }
10416                Self::initializedAtBlock(inner) => {
10417                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
10418                        inner,
10419                    )
10420                }
10421                Self::lightClient(inner) => {
10422                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
10423                        inner,
10424                    )
10425                }
10426                Self::owner(inner) => {
10427                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10428                }
10429                Self::proxiableUUID(inner) => {
10430                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
10431                        inner,
10432                    )
10433                }
10434                Self::registerValidator(inner) => {
10435                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10436                        inner,
10437                    )
10438                }
10439                Self::renounceOwnership(inner) => {
10440                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10441                        inner,
10442                    )
10443                }
10444                Self::token(inner) => {
10445                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10446                }
10447                Self::transferOwnership(inner) => {
10448                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10449                        inner,
10450                    )
10451                }
10452                Self::undelegate(inner) => {
10453                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10454                }
10455                Self::undelegations(inner) => {
10456                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10457                        inner,
10458                    )
10459                }
10460                Self::updateConsensusKeys(inner) => {
10461                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
10462                        inner,
10463                    )
10464                }
10465                Self::upgradeToAndCall(inner) => {
10466                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
10467                        inner,
10468                    )
10469                }
10470                Self::validatorExits(inner) => {
10471                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10472                        inner,
10473                    )
10474                }
10475                Self::validators(inner) => {
10476                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10477                }
10478            }
10479        }
10480        #[inline]
10481        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10482            match self {
10483                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10484                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
10485                        inner,
10486                        out,
10487                    )
10488                }
10489                Self::_hashBlsKey(inner) => {
10490                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
10491                        inner,
10492                        out,
10493                    )
10494                }
10495                Self::blsKeys(inner) => {
10496                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10497                }
10498                Self::claimValidatorExit(inner) => {
10499                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
10500                        inner,
10501                        out,
10502                    )
10503                }
10504                Self::claimWithdrawal(inner) => {
10505                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
10506                        inner,
10507                        out,
10508                    )
10509                }
10510                Self::delegate(inner) => {
10511                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10512                        inner,
10513                        out,
10514                    )
10515                }
10516                Self::delegations(inner) => {
10517                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10518                        inner,
10519                        out,
10520                    )
10521                }
10522                Self::deregisterValidator(inner) => {
10523                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10524                        inner,
10525                        out,
10526                    )
10527                }
10528                Self::exitEscrowPeriod(inner) => {
10529                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10530                        inner,
10531                        out,
10532                    )
10533                }
10534                Self::getVersion(inner) => {
10535                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
10536                        inner,
10537                        out,
10538                    )
10539                }
10540                Self::initialize(inner) => {
10541                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10542                        inner,
10543                        out,
10544                    )
10545                }
10546                Self::initializedAtBlock(inner) => {
10547                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
10548                        inner,
10549                        out,
10550                    )
10551                }
10552                Self::lightClient(inner) => {
10553                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
10554                        inner,
10555                        out,
10556                    )
10557                }
10558                Self::owner(inner) => {
10559                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10560                }
10561                Self::proxiableUUID(inner) => {
10562                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
10563                        inner,
10564                        out,
10565                    )
10566                }
10567                Self::registerValidator(inner) => {
10568                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10569                        inner,
10570                        out,
10571                    )
10572                }
10573                Self::renounceOwnership(inner) => {
10574                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10575                        inner,
10576                        out,
10577                    )
10578                }
10579                Self::token(inner) => {
10580                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10581                }
10582                Self::transferOwnership(inner) => {
10583                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10584                        inner,
10585                        out,
10586                    )
10587                }
10588                Self::undelegate(inner) => {
10589                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10590                        inner,
10591                        out,
10592                    )
10593                }
10594                Self::undelegations(inner) => {
10595                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10596                        inner,
10597                        out,
10598                    )
10599                }
10600                Self::updateConsensusKeys(inner) => {
10601                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
10602                        inner,
10603                        out,
10604                    )
10605                }
10606                Self::upgradeToAndCall(inner) => {
10607                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
10608                        inner,
10609                        out,
10610                    )
10611                }
10612                Self::validatorExits(inner) => {
10613                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10614                        inner,
10615                        out,
10616                    )
10617                }
10618                Self::validators(inner) => {
10619                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10620                        inner,
10621                        out,
10622                    )
10623                }
10624            }
10625        }
10626    }
10627    ///Container for all the [`StakeTable`](self) custom errors.
10628    #[derive(serde::Serialize, serde::Deserialize)]
10629    #[derive(Debug, PartialEq, Eq, Hash)]
10630    pub enum StakeTableErrors {
10631        #[allow(missing_docs)]
10632        AddressEmptyCode(AddressEmptyCode),
10633        #[allow(missing_docs)]
10634        BLSSigVerificationFailed(BLSSigVerificationFailed),
10635        #[allow(missing_docs)]
10636        BN254PairingProdFailed(BN254PairingProdFailed),
10637        #[allow(missing_docs)]
10638        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
10639        #[allow(missing_docs)]
10640        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
10641        #[allow(missing_docs)]
10642        ERC1967NonPayable(ERC1967NonPayable),
10643        #[allow(missing_docs)]
10644        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
10645        #[allow(missing_docs)]
10646        FailedInnerCall(FailedInnerCall),
10647        #[allow(missing_docs)]
10648        InsufficientAllowance(InsufficientAllowance),
10649        #[allow(missing_docs)]
10650        InsufficientBalance(InsufficientBalance),
10651        #[allow(missing_docs)]
10652        InvalidCommission(InvalidCommission),
10653        #[allow(missing_docs)]
10654        InvalidG1(InvalidG1),
10655        #[allow(missing_docs)]
10656        InvalidInitialization(InvalidInitialization),
10657        #[allow(missing_docs)]
10658        InvalidSchnorrVK(InvalidSchnorrVK),
10659        #[allow(missing_docs)]
10660        NotInitializing(NotInitializing),
10661        #[allow(missing_docs)]
10662        NothingToWithdraw(NothingToWithdraw),
10663        #[allow(missing_docs)]
10664        OwnableInvalidOwner(OwnableInvalidOwner),
10665        #[allow(missing_docs)]
10666        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
10667        #[allow(missing_docs)]
10668        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
10669        #[allow(missing_docs)]
10670        PowPrecompileFailed(PowPrecompileFailed),
10671        #[allow(missing_docs)]
10672        PrematureWithdrawal(PrematureWithdrawal),
10673        #[allow(missing_docs)]
10674        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
10675        #[allow(missing_docs)]
10676        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
10677        #[allow(missing_docs)]
10678        UndelegationAlreadyExists(UndelegationAlreadyExists),
10679        #[allow(missing_docs)]
10680        ValidatorAlreadyExited(ValidatorAlreadyExited),
10681        #[allow(missing_docs)]
10682        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
10683        #[allow(missing_docs)]
10684        ValidatorInactive(ValidatorInactive),
10685        #[allow(missing_docs)]
10686        ValidatorNotExited(ValidatorNotExited),
10687        #[allow(missing_docs)]
10688        ZeroAddress(ZeroAddress),
10689        #[allow(missing_docs)]
10690        ZeroAmount(ZeroAmount),
10691    }
10692    #[automatically_derived]
10693    impl StakeTableErrors {
10694        /// All the selectors of this enum.
10695        ///
10696        /// Note that the selectors might not be in the same order as the variants.
10697        /// No guarantees are made about the order of the selectors.
10698        ///
10699        /// Prefer using `SolInterface` methods instead.
10700        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10701            [1u8, 181u8, 20u8, 174u8],
10702            [6u8, 207u8, 67u8, 143u8],
10703            [12u8, 237u8, 62u8, 80u8],
10704            [17u8, 140u8, 218u8, 167u8],
10705            [20u8, 37u8, 234u8, 66u8],
10706            [30u8, 79u8, 189u8, 247u8],
10707            [31u8, 42u8, 32u8, 5u8],
10708            [42u8, 27u8, 45u8, 216u8],
10709            [47u8, 171u8, 146u8, 202u8],
10710            [50u8, 116u8, 250u8, 100u8],
10711            [76u8, 156u8, 140u8, 227u8],
10712            [80u8, 138u8, 121u8, 63u8],
10713            [90u8, 119u8, 67u8, 87u8],
10714            [146u8, 102u8, 83u8, 81u8],
10715            [153u8, 115u8, 247u8, 216u8],
10716            [153u8, 150u8, 179u8, 21u8],
10717            [158u8, 120u8, 209u8, 76u8],
10718            [170u8, 29u8, 73u8, 164u8],
10719            [179u8, 152u8, 151u8, 159u8],
10720            [181u8, 126u8, 33u8, 223u8],
10721            [194u8, 6u8, 51u8, 79u8],
10722            [208u8, 208u8, 79u8, 96u8],
10723            [212u8, 35u8, 164u8, 241u8],
10724            [215u8, 230u8, 188u8, 248u8],
10725            [217u8, 46u8, 35u8, 61u8],
10726            [220u8, 129u8, 219u8, 133u8],
10727            [224u8, 124u8, 141u8, 186u8],
10728            [234u8, 180u8, 169u8, 99u8],
10729            [242u8, 83u8, 20u8, 166u8],
10730            [249u8, 46u8, 232u8, 169u8],
10731        ];
10732    }
10733    #[automatically_derived]
10734    impl alloy_sol_types::SolInterface for StakeTableErrors {
10735        const NAME: &'static str = "StakeTableErrors";
10736        const MIN_DATA_LENGTH: usize = 0usize;
10737        const COUNT: usize = 30usize;
10738        #[inline]
10739        fn selector(&self) -> [u8; 4] {
10740            match self {
10741                Self::AddressEmptyCode(_) => {
10742                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
10743                }
10744                Self::BLSSigVerificationFailed(_) => {
10745                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
10746                }
10747                Self::BN254PairingProdFailed(_) => {
10748                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
10749                }
10750                Self::BlsKeyAlreadyUsed(_) => {
10751                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
10752                }
10753                Self::ERC1967InvalidImplementation(_) => {
10754                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
10755                }
10756                Self::ERC1967NonPayable(_) => {
10757                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
10758                }
10759                Self::ExitEscrowPeriodInvalid(_) => {
10760                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
10761                }
10762                Self::FailedInnerCall(_) => {
10763                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
10764                }
10765                Self::InsufficientAllowance(_) => {
10766                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
10767                }
10768                Self::InsufficientBalance(_) => {
10769                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
10770                }
10771                Self::InvalidCommission(_) => {
10772                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
10773                }
10774                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
10775                Self::InvalidInitialization(_) => {
10776                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
10777                }
10778                Self::InvalidSchnorrVK(_) => {
10779                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
10780                }
10781                Self::NotInitializing(_) => {
10782                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
10783                }
10784                Self::NothingToWithdraw(_) => {
10785                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
10786                }
10787                Self::OwnableInvalidOwner(_) => {
10788                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
10789                }
10790                Self::OwnableUnauthorizedAccount(_) => {
10791                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
10792                }
10793                Self::OwnershipCannotBeRenounced(_) => {
10794                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
10795                }
10796                Self::PowPrecompileFailed(_) => {
10797                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
10798                }
10799                Self::PrematureWithdrawal(_) => {
10800                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
10801                }
10802                Self::UUPSUnauthorizedCallContext(_) => {
10803                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
10804                }
10805                Self::UUPSUnsupportedProxiableUUID(_) => {
10806                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
10807                }
10808                Self::UndelegationAlreadyExists(_) => {
10809                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
10810                }
10811                Self::ValidatorAlreadyExited(_) => {
10812                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
10813                }
10814                Self::ValidatorAlreadyRegistered(_) => {
10815                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
10816                }
10817                Self::ValidatorInactive(_) => {
10818                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
10819                }
10820                Self::ValidatorNotExited(_) => {
10821                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
10822                }
10823                Self::ZeroAddress(_) => {
10824                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
10825                }
10826                Self::ZeroAmount(_) => {
10827                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
10828                }
10829            }
10830        }
10831        #[inline]
10832        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10833            Self::SELECTORS.get(i).copied()
10834        }
10835        #[inline]
10836        fn valid_selector(selector: [u8; 4]) -> bool {
10837            Self::SELECTORS.binary_search(&selector).is_ok()
10838        }
10839        #[inline]
10840        #[allow(non_snake_case)]
10841        fn abi_decode_raw(
10842            selector: [u8; 4],
10843            data: &[u8],
10844        ) -> alloy_sol_types::Result<Self> {
10845            static DECODE_SHIMS: &[fn(
10846                &[u8],
10847            ) -> alloy_sol_types::Result<StakeTableErrors>] = &[
10848                {
10849                    fn BlsKeyAlreadyUsed(
10850                        data: &[u8],
10851                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10852                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
10853                                data,
10854                            )
10855                            .map(StakeTableErrors::BlsKeyAlreadyUsed)
10856                    }
10857                    BlsKeyAlreadyUsed
10858                },
10859                {
10860                    fn InvalidSchnorrVK(
10861                        data: &[u8],
10862                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10863                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
10864                                data,
10865                            )
10866                            .map(StakeTableErrors::InvalidSchnorrVK)
10867                    }
10868                    InvalidSchnorrVK
10869                },
10870                {
10871                    fn BLSSigVerificationFailed(
10872                        data: &[u8],
10873                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10874                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
10875                                data,
10876                            )
10877                            .map(StakeTableErrors::BLSSigVerificationFailed)
10878                    }
10879                    BLSSigVerificationFailed
10880                },
10881                {
10882                    fn OwnableUnauthorizedAccount(
10883                        data: &[u8],
10884                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10885                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
10886                                data,
10887                            )
10888                            .map(StakeTableErrors::OwnableUnauthorizedAccount)
10889                    }
10890                    OwnableUnauthorizedAccount
10891                },
10892                {
10893                    fn FailedInnerCall(
10894                        data: &[u8],
10895                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10896                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
10897                                data,
10898                            )
10899                            .map(StakeTableErrors::FailedInnerCall)
10900                    }
10901                    FailedInnerCall
10902                },
10903                {
10904                    fn OwnableInvalidOwner(
10905                        data: &[u8],
10906                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10907                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
10908                                data,
10909                            )
10910                            .map(StakeTableErrors::OwnableInvalidOwner)
10911                    }
10912                    OwnableInvalidOwner
10913                },
10914                {
10915                    fn ZeroAmount(
10916                        data: &[u8],
10917                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10918                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
10919                            .map(StakeTableErrors::ZeroAmount)
10920                    }
10921                    ZeroAmount
10922                },
10923                {
10924                    fn InsufficientAllowance(
10925                        data: &[u8],
10926                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10927                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
10928                                data,
10929                            )
10930                            .map(StakeTableErrors::InsufficientAllowance)
10931                    }
10932                    InsufficientAllowance
10933                },
10934                {
10935                    fn OwnershipCannotBeRenounced(
10936                        data: &[u8],
10937                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10938                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
10939                                data,
10940                            )
10941                            .map(StakeTableErrors::OwnershipCannotBeRenounced)
10942                    }
10943                    OwnershipCannotBeRenounced
10944                },
10945                {
10946                    fn PowPrecompileFailed(
10947                        data: &[u8],
10948                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10949                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
10950                                data,
10951                            )
10952                            .map(StakeTableErrors::PowPrecompileFailed)
10953                    }
10954                    PowPrecompileFailed
10955                },
10956                {
10957                    fn ERC1967InvalidImplementation(
10958                        data: &[u8],
10959                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10960                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
10961                                data,
10962                            )
10963                            .map(StakeTableErrors::ERC1967InvalidImplementation)
10964                    }
10965                    ERC1967InvalidImplementation
10966                },
10967                {
10968                    fn ValidatorInactive(
10969                        data: &[u8],
10970                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10971                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
10972                                data,
10973                            )
10974                            .map(StakeTableErrors::ValidatorInactive)
10975                    }
10976                    ValidatorInactive
10977                },
10978                {
10979                    fn PrematureWithdrawal(
10980                        data: &[u8],
10981                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10982                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
10983                                data,
10984                            )
10985                            .map(StakeTableErrors::PrematureWithdrawal)
10986                    }
10987                    PrematureWithdrawal
10988                },
10989                {
10990                    fn InsufficientBalance(
10991                        data: &[u8],
10992                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10993                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
10994                                data,
10995                            )
10996                            .map(StakeTableErrors::InsufficientBalance)
10997                    }
10998                    InsufficientBalance
10999                },
11000                {
11001                    fn ValidatorAlreadyRegistered(
11002                        data: &[u8],
11003                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11004                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
11005                                data,
11006                            )
11007                            .map(StakeTableErrors::ValidatorAlreadyRegistered)
11008                    }
11009                    ValidatorAlreadyRegistered
11010                },
11011                {
11012                    fn AddressEmptyCode(
11013                        data: &[u8],
11014                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11015                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
11016                                data,
11017                            )
11018                            .map(StakeTableErrors::AddressEmptyCode)
11019                    }
11020                    AddressEmptyCode
11021                },
11022                {
11023                    fn InvalidG1(
11024                        data: &[u8],
11025                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11026                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
11027                            .map(StakeTableErrors::InvalidG1)
11028                    }
11029                    InvalidG1
11030                },
11031                {
11032                    fn UUPSUnsupportedProxiableUUID(
11033                        data: &[u8],
11034                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11035                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
11036                                data,
11037                            )
11038                            .map(StakeTableErrors::UUPSUnsupportedProxiableUUID)
11039                    }
11040                    UUPSUnsupportedProxiableUUID
11041                },
11042                {
11043                    fn ERC1967NonPayable(
11044                        data: &[u8],
11045                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11046                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
11047                                data,
11048                            )
11049                            .map(StakeTableErrors::ERC1967NonPayable)
11050                    }
11051                    ERC1967NonPayable
11052                },
11053                {
11054                    fn ExitEscrowPeriodInvalid(
11055                        data: &[u8],
11056                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11057                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
11058                                data,
11059                            )
11060                            .map(StakeTableErrors::ExitEscrowPeriodInvalid)
11061                    }
11062                    ExitEscrowPeriodInvalid
11063                },
11064                {
11065                    fn BN254PairingProdFailed(
11066                        data: &[u8],
11067                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11068                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
11069                                data,
11070                            )
11071                            .map(StakeTableErrors::BN254PairingProdFailed)
11072                    }
11073                    BN254PairingProdFailed
11074                },
11075                {
11076                    fn NothingToWithdraw(
11077                        data: &[u8],
11078                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11079                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
11080                                data,
11081                            )
11082                            .map(StakeTableErrors::NothingToWithdraw)
11083                    }
11084                    NothingToWithdraw
11085                },
11086                {
11087                    fn UndelegationAlreadyExists(
11088                        data: &[u8],
11089                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11090                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
11091                                data,
11092                            )
11093                            .map(StakeTableErrors::UndelegationAlreadyExists)
11094                    }
11095                    UndelegationAlreadyExists
11096                },
11097                {
11098                    fn NotInitializing(
11099                        data: &[u8],
11100                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11101                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
11102                                data,
11103                            )
11104                            .map(StakeTableErrors::NotInitializing)
11105                    }
11106                    NotInitializing
11107                },
11108                {
11109                    fn ZeroAddress(
11110                        data: &[u8],
11111                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11112                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
11113                            .map(StakeTableErrors::ZeroAddress)
11114                    }
11115                    ZeroAddress
11116                },
11117                {
11118                    fn InvalidCommission(
11119                        data: &[u8],
11120                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11121                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
11122                                data,
11123                            )
11124                            .map(StakeTableErrors::InvalidCommission)
11125                    }
11126                    InvalidCommission
11127                },
11128                {
11129                    fn UUPSUnauthorizedCallContext(
11130                        data: &[u8],
11131                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11132                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
11133                                data,
11134                            )
11135                            .map(StakeTableErrors::UUPSUnauthorizedCallContext)
11136                    }
11137                    UUPSUnauthorizedCallContext
11138                },
11139                {
11140                    fn ValidatorAlreadyExited(
11141                        data: &[u8],
11142                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11143                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
11144                                data,
11145                            )
11146                            .map(StakeTableErrors::ValidatorAlreadyExited)
11147                    }
11148                    ValidatorAlreadyExited
11149                },
11150                {
11151                    fn ValidatorNotExited(
11152                        data: &[u8],
11153                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11154                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
11155                                data,
11156                            )
11157                            .map(StakeTableErrors::ValidatorNotExited)
11158                    }
11159                    ValidatorNotExited
11160                },
11161                {
11162                    fn InvalidInitialization(
11163                        data: &[u8],
11164                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11165                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
11166                                data,
11167                            )
11168                            .map(StakeTableErrors::InvalidInitialization)
11169                    }
11170                    InvalidInitialization
11171                },
11172            ];
11173            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11174                return Err(
11175                    alloy_sol_types::Error::unknown_selector(
11176                        <Self as alloy_sol_types::SolInterface>::NAME,
11177                        selector,
11178                    ),
11179                );
11180            };
11181            DECODE_SHIMS[idx](data)
11182        }
11183        #[inline]
11184        #[allow(non_snake_case)]
11185        fn abi_decode_raw_validate(
11186            selector: [u8; 4],
11187            data: &[u8],
11188        ) -> alloy_sol_types::Result<Self> {
11189            static DECODE_VALIDATE_SHIMS: &[fn(
11190                &[u8],
11191            ) -> alloy_sol_types::Result<StakeTableErrors>] = &[
11192                {
11193                    fn BlsKeyAlreadyUsed(
11194                        data: &[u8],
11195                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11196                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11197                                data,
11198                            )
11199                            .map(StakeTableErrors::BlsKeyAlreadyUsed)
11200                    }
11201                    BlsKeyAlreadyUsed
11202                },
11203                {
11204                    fn InvalidSchnorrVK(
11205                        data: &[u8],
11206                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11207                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
11208                                data,
11209                            )
11210                            .map(StakeTableErrors::InvalidSchnorrVK)
11211                    }
11212                    InvalidSchnorrVK
11213                },
11214                {
11215                    fn BLSSigVerificationFailed(
11216                        data: &[u8],
11217                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11218                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11219                                data,
11220                            )
11221                            .map(StakeTableErrors::BLSSigVerificationFailed)
11222                    }
11223                    BLSSigVerificationFailed
11224                },
11225                {
11226                    fn OwnableUnauthorizedAccount(
11227                        data: &[u8],
11228                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11229                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
11230                                data,
11231                            )
11232                            .map(StakeTableErrors::OwnableUnauthorizedAccount)
11233                    }
11234                    OwnableUnauthorizedAccount
11235                },
11236                {
11237                    fn FailedInnerCall(
11238                        data: &[u8],
11239                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11240                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
11241                                data,
11242                            )
11243                            .map(StakeTableErrors::FailedInnerCall)
11244                    }
11245                    FailedInnerCall
11246                },
11247                {
11248                    fn OwnableInvalidOwner(
11249                        data: &[u8],
11250                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11251                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
11252                                data,
11253                            )
11254                            .map(StakeTableErrors::OwnableInvalidOwner)
11255                    }
11256                    OwnableInvalidOwner
11257                },
11258                {
11259                    fn ZeroAmount(
11260                        data: &[u8],
11261                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11262                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
11263                                data,
11264                            )
11265                            .map(StakeTableErrors::ZeroAmount)
11266                    }
11267                    ZeroAmount
11268                },
11269                {
11270                    fn InsufficientAllowance(
11271                        data: &[u8],
11272                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11273                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
11274                                data,
11275                            )
11276                            .map(StakeTableErrors::InsufficientAllowance)
11277                    }
11278                    InsufficientAllowance
11279                },
11280                {
11281                    fn OwnershipCannotBeRenounced(
11282                        data: &[u8],
11283                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11284                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
11285                                data,
11286                            )
11287                            .map(StakeTableErrors::OwnershipCannotBeRenounced)
11288                    }
11289                    OwnershipCannotBeRenounced
11290                },
11291                {
11292                    fn PowPrecompileFailed(
11293                        data: &[u8],
11294                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11295                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11296                                data,
11297                            )
11298                            .map(StakeTableErrors::PowPrecompileFailed)
11299                    }
11300                    PowPrecompileFailed
11301                },
11302                {
11303                    fn ERC1967InvalidImplementation(
11304                        data: &[u8],
11305                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11306                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
11307                                data,
11308                            )
11309                            .map(StakeTableErrors::ERC1967InvalidImplementation)
11310                    }
11311                    ERC1967InvalidImplementation
11312                },
11313                {
11314                    fn ValidatorInactive(
11315                        data: &[u8],
11316                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11317                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
11318                                data,
11319                            )
11320                            .map(StakeTableErrors::ValidatorInactive)
11321                    }
11322                    ValidatorInactive
11323                },
11324                {
11325                    fn PrematureWithdrawal(
11326                        data: &[u8],
11327                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11328                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
11329                                data,
11330                            )
11331                            .map(StakeTableErrors::PrematureWithdrawal)
11332                    }
11333                    PrematureWithdrawal
11334                },
11335                {
11336                    fn InsufficientBalance(
11337                        data: &[u8],
11338                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11339                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
11340                                data,
11341                            )
11342                            .map(StakeTableErrors::InsufficientBalance)
11343                    }
11344                    InsufficientBalance
11345                },
11346                {
11347                    fn ValidatorAlreadyRegistered(
11348                        data: &[u8],
11349                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11350                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
11351                                data,
11352                            )
11353                            .map(StakeTableErrors::ValidatorAlreadyRegistered)
11354                    }
11355                    ValidatorAlreadyRegistered
11356                },
11357                {
11358                    fn AddressEmptyCode(
11359                        data: &[u8],
11360                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11361                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
11362                                data,
11363                            )
11364                            .map(StakeTableErrors::AddressEmptyCode)
11365                    }
11366                    AddressEmptyCode
11367                },
11368                {
11369                    fn InvalidG1(
11370                        data: &[u8],
11371                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11372                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
11373                                data,
11374                            )
11375                            .map(StakeTableErrors::InvalidG1)
11376                    }
11377                    InvalidG1
11378                },
11379                {
11380                    fn UUPSUnsupportedProxiableUUID(
11381                        data: &[u8],
11382                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11383                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
11384                                data,
11385                            )
11386                            .map(StakeTableErrors::UUPSUnsupportedProxiableUUID)
11387                    }
11388                    UUPSUnsupportedProxiableUUID
11389                },
11390                {
11391                    fn ERC1967NonPayable(
11392                        data: &[u8],
11393                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11394                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
11395                                data,
11396                            )
11397                            .map(StakeTableErrors::ERC1967NonPayable)
11398                    }
11399                    ERC1967NonPayable
11400                },
11401                {
11402                    fn ExitEscrowPeriodInvalid(
11403                        data: &[u8],
11404                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11405                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
11406                                data,
11407                            )
11408                            .map(StakeTableErrors::ExitEscrowPeriodInvalid)
11409                    }
11410                    ExitEscrowPeriodInvalid
11411                },
11412                {
11413                    fn BN254PairingProdFailed(
11414                        data: &[u8],
11415                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11416                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11417                                data,
11418                            )
11419                            .map(StakeTableErrors::BN254PairingProdFailed)
11420                    }
11421                    BN254PairingProdFailed
11422                },
11423                {
11424                    fn NothingToWithdraw(
11425                        data: &[u8],
11426                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11427                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
11428                                data,
11429                            )
11430                            .map(StakeTableErrors::NothingToWithdraw)
11431                    }
11432                    NothingToWithdraw
11433                },
11434                {
11435                    fn UndelegationAlreadyExists(
11436                        data: &[u8],
11437                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11438                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
11439                                data,
11440                            )
11441                            .map(StakeTableErrors::UndelegationAlreadyExists)
11442                    }
11443                    UndelegationAlreadyExists
11444                },
11445                {
11446                    fn NotInitializing(
11447                        data: &[u8],
11448                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11449                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
11450                                data,
11451                            )
11452                            .map(StakeTableErrors::NotInitializing)
11453                    }
11454                    NotInitializing
11455                },
11456                {
11457                    fn ZeroAddress(
11458                        data: &[u8],
11459                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11460                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
11461                                data,
11462                            )
11463                            .map(StakeTableErrors::ZeroAddress)
11464                    }
11465                    ZeroAddress
11466                },
11467                {
11468                    fn InvalidCommission(
11469                        data: &[u8],
11470                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11471                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
11472                                data,
11473                            )
11474                            .map(StakeTableErrors::InvalidCommission)
11475                    }
11476                    InvalidCommission
11477                },
11478                {
11479                    fn UUPSUnauthorizedCallContext(
11480                        data: &[u8],
11481                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11482                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
11483                                data,
11484                            )
11485                            .map(StakeTableErrors::UUPSUnauthorizedCallContext)
11486                    }
11487                    UUPSUnauthorizedCallContext
11488                },
11489                {
11490                    fn ValidatorAlreadyExited(
11491                        data: &[u8],
11492                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11493                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
11494                                data,
11495                            )
11496                            .map(StakeTableErrors::ValidatorAlreadyExited)
11497                    }
11498                    ValidatorAlreadyExited
11499                },
11500                {
11501                    fn ValidatorNotExited(
11502                        data: &[u8],
11503                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11504                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
11505                                data,
11506                            )
11507                            .map(StakeTableErrors::ValidatorNotExited)
11508                    }
11509                    ValidatorNotExited
11510                },
11511                {
11512                    fn InvalidInitialization(
11513                        data: &[u8],
11514                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11515                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
11516                                data,
11517                            )
11518                            .map(StakeTableErrors::InvalidInitialization)
11519                    }
11520                    InvalidInitialization
11521                },
11522            ];
11523            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11524                return Err(
11525                    alloy_sol_types::Error::unknown_selector(
11526                        <Self as alloy_sol_types::SolInterface>::NAME,
11527                        selector,
11528                    ),
11529                );
11530            };
11531            DECODE_VALIDATE_SHIMS[idx](data)
11532        }
11533        #[inline]
11534        fn abi_encoded_size(&self) -> usize {
11535            match self {
11536                Self::AddressEmptyCode(inner) => {
11537                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
11538                        inner,
11539                    )
11540                }
11541                Self::BLSSigVerificationFailed(inner) => {
11542                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
11543                        inner,
11544                    )
11545                }
11546                Self::BN254PairingProdFailed(inner) => {
11547                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
11548                        inner,
11549                    )
11550                }
11551                Self::BlsKeyAlreadyUsed(inner) => {
11552                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
11553                        inner,
11554                    )
11555                }
11556                Self::ERC1967InvalidImplementation(inner) => {
11557                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
11558                        inner,
11559                    )
11560                }
11561                Self::ERC1967NonPayable(inner) => {
11562                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
11563                        inner,
11564                    )
11565                }
11566                Self::ExitEscrowPeriodInvalid(inner) => {
11567                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
11568                        inner,
11569                    )
11570                }
11571                Self::FailedInnerCall(inner) => {
11572                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
11573                        inner,
11574                    )
11575                }
11576                Self::InsufficientAllowance(inner) => {
11577                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
11578                        inner,
11579                    )
11580                }
11581                Self::InsufficientBalance(inner) => {
11582                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
11583                        inner,
11584                    )
11585                }
11586                Self::InvalidCommission(inner) => {
11587                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
11588                        inner,
11589                    )
11590                }
11591                Self::InvalidG1(inner) => {
11592                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
11593                }
11594                Self::InvalidInitialization(inner) => {
11595                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
11596                        inner,
11597                    )
11598                }
11599                Self::InvalidSchnorrVK(inner) => {
11600                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
11601                        inner,
11602                    )
11603                }
11604                Self::NotInitializing(inner) => {
11605                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
11606                        inner,
11607                    )
11608                }
11609                Self::NothingToWithdraw(inner) => {
11610                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
11611                        inner,
11612                    )
11613                }
11614                Self::OwnableInvalidOwner(inner) => {
11615                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
11616                        inner,
11617                    )
11618                }
11619                Self::OwnableUnauthorizedAccount(inner) => {
11620                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
11621                        inner,
11622                    )
11623                }
11624                Self::OwnershipCannotBeRenounced(inner) => {
11625                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
11626                        inner,
11627                    )
11628                }
11629                Self::PowPrecompileFailed(inner) => {
11630                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
11631                        inner,
11632                    )
11633                }
11634                Self::PrematureWithdrawal(inner) => {
11635                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
11636                        inner,
11637                    )
11638                }
11639                Self::UUPSUnauthorizedCallContext(inner) => {
11640                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
11641                        inner,
11642                    )
11643                }
11644                Self::UUPSUnsupportedProxiableUUID(inner) => {
11645                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
11646                        inner,
11647                    )
11648                }
11649                Self::UndelegationAlreadyExists(inner) => {
11650                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
11651                        inner,
11652                    )
11653                }
11654                Self::ValidatorAlreadyExited(inner) => {
11655                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
11656                        inner,
11657                    )
11658                }
11659                Self::ValidatorAlreadyRegistered(inner) => {
11660                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
11661                        inner,
11662                    )
11663                }
11664                Self::ValidatorInactive(inner) => {
11665                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
11666                        inner,
11667                    )
11668                }
11669                Self::ValidatorNotExited(inner) => {
11670                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
11671                        inner,
11672                    )
11673                }
11674                Self::ZeroAddress(inner) => {
11675                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
11676                }
11677                Self::ZeroAmount(inner) => {
11678                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
11679                }
11680            }
11681        }
11682        #[inline]
11683        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11684            match self {
11685                Self::AddressEmptyCode(inner) => {
11686                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
11687                        inner,
11688                        out,
11689                    )
11690                }
11691                Self::BLSSigVerificationFailed(inner) => {
11692                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
11693                        inner,
11694                        out,
11695                    )
11696                }
11697                Self::BN254PairingProdFailed(inner) => {
11698                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
11699                        inner,
11700                        out,
11701                    )
11702                }
11703                Self::BlsKeyAlreadyUsed(inner) => {
11704                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
11705                        inner,
11706                        out,
11707                    )
11708                }
11709                Self::ERC1967InvalidImplementation(inner) => {
11710                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
11711                        inner,
11712                        out,
11713                    )
11714                }
11715                Self::ERC1967NonPayable(inner) => {
11716                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
11717                        inner,
11718                        out,
11719                    )
11720                }
11721                Self::ExitEscrowPeriodInvalid(inner) => {
11722                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
11723                        inner,
11724                        out,
11725                    )
11726                }
11727                Self::FailedInnerCall(inner) => {
11728                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
11729                        inner,
11730                        out,
11731                    )
11732                }
11733                Self::InsufficientAllowance(inner) => {
11734                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
11735                        inner,
11736                        out,
11737                    )
11738                }
11739                Self::InsufficientBalance(inner) => {
11740                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
11741                        inner,
11742                        out,
11743                    )
11744                }
11745                Self::InvalidCommission(inner) => {
11746                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
11747                        inner,
11748                        out,
11749                    )
11750                }
11751                Self::InvalidG1(inner) => {
11752                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
11753                }
11754                Self::InvalidInitialization(inner) => {
11755                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
11756                        inner,
11757                        out,
11758                    )
11759                }
11760                Self::InvalidSchnorrVK(inner) => {
11761                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
11762                        inner,
11763                        out,
11764                    )
11765                }
11766                Self::NotInitializing(inner) => {
11767                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
11768                        inner,
11769                        out,
11770                    )
11771                }
11772                Self::NothingToWithdraw(inner) => {
11773                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
11774                        inner,
11775                        out,
11776                    )
11777                }
11778                Self::OwnableInvalidOwner(inner) => {
11779                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
11780                        inner,
11781                        out,
11782                    )
11783                }
11784                Self::OwnableUnauthorizedAccount(inner) => {
11785                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
11786                        inner,
11787                        out,
11788                    )
11789                }
11790                Self::OwnershipCannotBeRenounced(inner) => {
11791                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
11792                        inner,
11793                        out,
11794                    )
11795                }
11796                Self::PowPrecompileFailed(inner) => {
11797                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
11798                        inner,
11799                        out,
11800                    )
11801                }
11802                Self::PrematureWithdrawal(inner) => {
11803                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
11804                        inner,
11805                        out,
11806                    )
11807                }
11808                Self::UUPSUnauthorizedCallContext(inner) => {
11809                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
11810                        inner,
11811                        out,
11812                    )
11813                }
11814                Self::UUPSUnsupportedProxiableUUID(inner) => {
11815                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
11816                        inner,
11817                        out,
11818                    )
11819                }
11820                Self::UndelegationAlreadyExists(inner) => {
11821                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
11822                        inner,
11823                        out,
11824                    )
11825                }
11826                Self::ValidatorAlreadyExited(inner) => {
11827                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
11828                        inner,
11829                        out,
11830                    )
11831                }
11832                Self::ValidatorAlreadyRegistered(inner) => {
11833                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
11834                        inner,
11835                        out,
11836                    )
11837                }
11838                Self::ValidatorInactive(inner) => {
11839                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
11840                        inner,
11841                        out,
11842                    )
11843                }
11844                Self::ValidatorNotExited(inner) => {
11845                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
11846                        inner,
11847                        out,
11848                    )
11849                }
11850                Self::ZeroAddress(inner) => {
11851                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
11852                        inner,
11853                        out,
11854                    )
11855                }
11856                Self::ZeroAmount(inner) => {
11857                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
11858                }
11859            }
11860        }
11861    }
11862    ///Container for all the [`StakeTable`](self) events.
11863    #[derive(serde::Serialize, serde::Deserialize)]
11864    #[derive()]
11865    pub enum StakeTableEvents {
11866        #[allow(missing_docs)]
11867        ConsensusKeysUpdated(ConsensusKeysUpdated),
11868        #[allow(missing_docs)]
11869        Delegated(Delegated),
11870        #[allow(missing_docs)]
11871        Initialized(Initialized),
11872        #[allow(missing_docs)]
11873        OwnershipTransferred(OwnershipTransferred),
11874        #[allow(missing_docs)]
11875        Undelegated(Undelegated),
11876        #[allow(missing_docs)]
11877        Upgraded(Upgraded),
11878        #[allow(missing_docs)]
11879        ValidatorExit(ValidatorExit),
11880        #[allow(missing_docs)]
11881        ValidatorRegistered(ValidatorRegistered),
11882        #[allow(missing_docs)]
11883        Withdrawal(Withdrawal),
11884    }
11885    #[automatically_derived]
11886    impl StakeTableEvents {
11887        /// All the selectors of this enum.
11888        ///
11889        /// Note that the selectors might not be in the same order as the variants.
11890        /// No guarantees are made about the order of the selectors.
11891        ///
11892        /// Prefer using `SolInterface` methods instead.
11893        pub const SELECTORS: &'static [[u8; 32usize]] = &[
11894            [
11895                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
11896                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
11897                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
11898            ],
11899            [
11900                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
11901                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
11902                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
11903            ],
11904            [
11905                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
11906                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
11907                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
11908            ],
11909            [
11910                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
11911                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
11912                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
11913            ],
11914            [
11915                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
11916                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
11917                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
11918            ],
11919            [
11920                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
11921                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
11922                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
11923            ],
11924            [
11925                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
11926                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
11927                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
11928            ],
11929            [
11930                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
11931                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
11932                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
11933            ],
11934            [
11935                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
11936                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
11937                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
11938            ],
11939        ];
11940    }
11941    #[automatically_derived]
11942    impl alloy_sol_types::SolEventInterface for StakeTableEvents {
11943        const NAME: &'static str = "StakeTableEvents";
11944        const COUNT: usize = 9usize;
11945        fn decode_raw_log(
11946            topics: &[alloy_sol_types::Word],
11947            data: &[u8],
11948        ) -> alloy_sol_types::Result<Self> {
11949            match topics.first().copied() {
11950                Some(
11951                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11952                ) => {
11953                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
11954                            topics,
11955                            data,
11956                        )
11957                        .map(Self::ConsensusKeysUpdated)
11958                }
11959                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11960                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
11961                            topics,
11962                            data,
11963                        )
11964                        .map(Self::Delegated)
11965                }
11966                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11967                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
11968                            topics,
11969                            data,
11970                        )
11971                        .map(Self::Initialized)
11972                }
11973                Some(
11974                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11975                ) => {
11976                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
11977                            topics,
11978                            data,
11979                        )
11980                        .map(Self::OwnershipTransferred)
11981                }
11982                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11983                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
11984                            topics,
11985                            data,
11986                        )
11987                        .map(Self::Undelegated)
11988                }
11989                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11990                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
11991                        .map(Self::Upgraded)
11992                }
11993                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11994                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
11995                            topics,
11996                            data,
11997                        )
11998                        .map(Self::ValidatorExit)
11999                }
12000                Some(
12001                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12002                ) => {
12003                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
12004                            topics,
12005                            data,
12006                        )
12007                        .map(Self::ValidatorRegistered)
12008                }
12009                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12010                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
12011                            topics,
12012                            data,
12013                        )
12014                        .map(Self::Withdrawal)
12015                }
12016                _ => {
12017                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12018                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12019                        log: alloy_sol_types::private::Box::new(
12020                            alloy_sol_types::private::LogData::new_unchecked(
12021                                topics.to_vec(),
12022                                data.to_vec().into(),
12023                            ),
12024                        ),
12025                    })
12026                }
12027            }
12028        }
12029    }
12030    #[automatically_derived]
12031    impl alloy_sol_types::private::IntoLogData for StakeTableEvents {
12032        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12033            match self {
12034                Self::ConsensusKeysUpdated(inner) => {
12035                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12036                }
12037                Self::Delegated(inner) => {
12038                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12039                }
12040                Self::Initialized(inner) => {
12041                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12042                }
12043                Self::OwnershipTransferred(inner) => {
12044                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12045                }
12046                Self::Undelegated(inner) => {
12047                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12048                }
12049                Self::Upgraded(inner) => {
12050                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12051                }
12052                Self::ValidatorExit(inner) => {
12053                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12054                }
12055                Self::ValidatorRegistered(inner) => {
12056                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12057                }
12058                Self::Withdrawal(inner) => {
12059                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12060                }
12061            }
12062        }
12063        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12064            match self {
12065                Self::ConsensusKeysUpdated(inner) => {
12066                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12067                }
12068                Self::Delegated(inner) => {
12069                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12070                }
12071                Self::Initialized(inner) => {
12072                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12073                }
12074                Self::OwnershipTransferred(inner) => {
12075                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12076                }
12077                Self::Undelegated(inner) => {
12078                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12079                }
12080                Self::Upgraded(inner) => {
12081                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12082                }
12083                Self::ValidatorExit(inner) => {
12084                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12085                }
12086                Self::ValidatorRegistered(inner) => {
12087                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12088                }
12089                Self::Withdrawal(inner) => {
12090                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12091                }
12092            }
12093        }
12094    }
12095    use alloy::contract as alloy_contract;
12096    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
12097
12098See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
12099    #[inline]
12100    pub const fn new<
12101        P: alloy_contract::private::Provider<N>,
12102        N: alloy_contract::private::Network,
12103    >(
12104        address: alloy_sol_types::private::Address,
12105        provider: P,
12106    ) -> StakeTableInstance<P, N> {
12107        StakeTableInstance::<P, N>::new(address, provider)
12108    }
12109    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12110
12111Returns a new instance of the contract, if the deployment was successful.
12112
12113For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12114    #[inline]
12115    pub fn deploy<
12116        P: alloy_contract::private::Provider<N>,
12117        N: alloy_contract::private::Network,
12118    >(
12119        provider: P,
12120    ) -> impl ::core::future::Future<
12121        Output = alloy_contract::Result<StakeTableInstance<P, N>>,
12122    > {
12123        StakeTableInstance::<P, N>::deploy(provider)
12124    }
12125    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12126and constructor arguments, if any.
12127
12128This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12129the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12130    #[inline]
12131    pub fn deploy_builder<
12132        P: alloy_contract::private::Provider<N>,
12133        N: alloy_contract::private::Network,
12134    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12135        StakeTableInstance::<P, N>::deploy_builder(provider)
12136    }
12137    /**A [`StakeTable`](self) instance.
12138
12139Contains type-safe methods for interacting with an on-chain instance of the
12140[`StakeTable`](self) contract located at a given `address`, using a given
12141provider `P`.
12142
12143If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12144documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12145be used to deploy a new instance of the contract.
12146
12147See the [module-level documentation](self) for all the available methods.*/
12148    #[derive(Clone)]
12149    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
12150        address: alloy_sol_types::private::Address,
12151        provider: P,
12152        _network: ::core::marker::PhantomData<N>,
12153    }
12154    #[automatically_derived]
12155    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
12156        #[inline]
12157        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12158            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
12159        }
12160    }
12161    /// Instantiation and getters/setters.
12162    #[automatically_derived]
12163    impl<
12164        P: alloy_contract::private::Provider<N>,
12165        N: alloy_contract::private::Network,
12166    > StakeTableInstance<P, N> {
12167        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
12168
12169See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
12170        #[inline]
12171        pub const fn new(
12172            address: alloy_sol_types::private::Address,
12173            provider: P,
12174        ) -> Self {
12175            Self {
12176                address,
12177                provider,
12178                _network: ::core::marker::PhantomData,
12179            }
12180        }
12181        /**Deploys this contract using the given `provider` and constructor arguments, if any.
12182
12183Returns a new instance of the contract, if the deployment was successful.
12184
12185For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12186        #[inline]
12187        pub async fn deploy(
12188            provider: P,
12189        ) -> alloy_contract::Result<StakeTableInstance<P, N>> {
12190            let call_builder = Self::deploy_builder(provider);
12191            let contract_address = call_builder.deploy().await?;
12192            Ok(Self::new(contract_address, call_builder.provider))
12193        }
12194        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12195and constructor arguments, if any.
12196
12197This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12198the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12199        #[inline]
12200        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12201            alloy_contract::RawCallBuilder::new_raw_deploy(
12202                provider,
12203                ::core::clone::Clone::clone(&BYTECODE),
12204            )
12205        }
12206        /// Returns a reference to the address.
12207        #[inline]
12208        pub const fn address(&self) -> &alloy_sol_types::private::Address {
12209            &self.address
12210        }
12211        /// Sets the address.
12212        #[inline]
12213        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
12214            self.address = address;
12215        }
12216        /// Sets the address and returns `self`.
12217        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
12218            self.set_address(address);
12219            self
12220        }
12221        /// Returns a reference to the provider.
12222        #[inline]
12223        pub const fn provider(&self) -> &P {
12224            &self.provider
12225        }
12226    }
12227    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
12228        /// Clones the provider and returns a new instance with the cloned provider.
12229        #[inline]
12230        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
12231            StakeTableInstance {
12232                address: self.address,
12233                provider: ::core::clone::Clone::clone(&self.provider),
12234                _network: ::core::marker::PhantomData,
12235            }
12236        }
12237    }
12238    /// Function calls.
12239    #[automatically_derived]
12240    impl<
12241        P: alloy_contract::private::Provider<N>,
12242        N: alloy_contract::private::Network,
12243    > StakeTableInstance<P, N> {
12244        /// Creates a new call builder using this contract instance's provider and address.
12245        ///
12246        /// Note that the call can be any function call, not just those defined in this
12247        /// contract. Prefer using the other methods for building type-safe contract calls.
12248        pub fn call_builder<C: alloy_sol_types::SolCall>(
12249            &self,
12250            call: &C,
12251        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
12252            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
12253        }
12254        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
12255        pub fn UPGRADE_INTERFACE_VERSION(
12256            &self,
12257        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
12258            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
12259        }
12260        ///Creates a new call builder for the [`_hashBlsKey`] function.
12261        pub fn _hashBlsKey(
12262            &self,
12263            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12264        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
12265            self.call_builder(&_hashBlsKeyCall { blsVK })
12266        }
12267        ///Creates a new call builder for the [`blsKeys`] function.
12268        pub fn blsKeys(
12269            &self,
12270            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
12271        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
12272            self.call_builder(&blsKeysCall { blsKeyHash })
12273        }
12274        ///Creates a new call builder for the [`claimValidatorExit`] function.
12275        pub fn claimValidatorExit(
12276            &self,
12277            validator: alloy::sol_types::private::Address,
12278        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
12279            self.call_builder(
12280                &claimValidatorExitCall {
12281                    validator,
12282                },
12283            )
12284        }
12285        ///Creates a new call builder for the [`claimWithdrawal`] function.
12286        pub fn claimWithdrawal(
12287            &self,
12288            validator: alloy::sol_types::private::Address,
12289        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
12290            self.call_builder(&claimWithdrawalCall { validator })
12291        }
12292        ///Creates a new call builder for the [`delegate`] function.
12293        pub fn delegate(
12294            &self,
12295            validator: alloy::sol_types::private::Address,
12296            amount: alloy::sol_types::private::primitives::aliases::U256,
12297        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
12298            self.call_builder(&delegateCall { validator, amount })
12299        }
12300        ///Creates a new call builder for the [`delegations`] function.
12301        pub fn delegations(
12302            &self,
12303            validator: alloy::sol_types::private::Address,
12304            delegator: alloy::sol_types::private::Address,
12305        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
12306            self.call_builder(
12307                &delegationsCall {
12308                    validator,
12309                    delegator,
12310                },
12311            )
12312        }
12313        ///Creates a new call builder for the [`deregisterValidator`] function.
12314        pub fn deregisterValidator(
12315            &self,
12316        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
12317            self.call_builder(&deregisterValidatorCall)
12318        }
12319        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
12320        pub fn exitEscrowPeriod(
12321            &self,
12322        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
12323            self.call_builder(&exitEscrowPeriodCall)
12324        }
12325        ///Creates a new call builder for the [`getVersion`] function.
12326        pub fn getVersion(
12327            &self,
12328        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
12329            self.call_builder(&getVersionCall)
12330        }
12331        ///Creates a new call builder for the [`initialize`] function.
12332        pub fn initialize(
12333            &self,
12334            _tokenAddress: alloy::sol_types::private::Address,
12335            _lightClientAddress: alloy::sol_types::private::Address,
12336            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
12337            _timelock: alloy::sol_types::private::Address,
12338        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
12339            self.call_builder(
12340                &initializeCall {
12341                    _tokenAddress,
12342                    _lightClientAddress,
12343                    _exitEscrowPeriod,
12344                    _timelock,
12345                },
12346            )
12347        }
12348        ///Creates a new call builder for the [`initializedAtBlock`] function.
12349        pub fn initializedAtBlock(
12350            &self,
12351        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
12352            self.call_builder(&initializedAtBlockCall)
12353        }
12354        ///Creates a new call builder for the [`lightClient`] function.
12355        pub fn lightClient(
12356            &self,
12357        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
12358            self.call_builder(&lightClientCall)
12359        }
12360        ///Creates a new call builder for the [`owner`] function.
12361        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
12362            self.call_builder(&ownerCall)
12363        }
12364        ///Creates a new call builder for the [`proxiableUUID`] function.
12365        pub fn proxiableUUID(
12366            &self,
12367        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
12368            self.call_builder(&proxiableUUIDCall)
12369        }
12370        ///Creates a new call builder for the [`registerValidator`] function.
12371        pub fn registerValidator(
12372            &self,
12373            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12374            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12375            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12376            commission: u16,
12377        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
12378            self.call_builder(
12379                &registerValidatorCall {
12380                    blsVK,
12381                    schnorrVK,
12382                    blsSig,
12383                    commission,
12384                },
12385            )
12386        }
12387        ///Creates a new call builder for the [`renounceOwnership`] function.
12388        pub fn renounceOwnership(
12389            &self,
12390        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
12391            self.call_builder(&renounceOwnershipCall)
12392        }
12393        ///Creates a new call builder for the [`token`] function.
12394        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
12395            self.call_builder(&tokenCall)
12396        }
12397        ///Creates a new call builder for the [`transferOwnership`] function.
12398        pub fn transferOwnership(
12399            &self,
12400            newOwner: alloy::sol_types::private::Address,
12401        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
12402            self.call_builder(&transferOwnershipCall { newOwner })
12403        }
12404        ///Creates a new call builder for the [`undelegate`] function.
12405        pub fn undelegate(
12406            &self,
12407            validator: alloy::sol_types::private::Address,
12408            amount: alloy::sol_types::private::primitives::aliases::U256,
12409        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
12410            self.call_builder(
12411                &undelegateCall {
12412                    validator,
12413                    amount,
12414                },
12415            )
12416        }
12417        ///Creates a new call builder for the [`undelegations`] function.
12418        pub fn undelegations(
12419            &self,
12420            validator: alloy::sol_types::private::Address,
12421            delegator: alloy::sol_types::private::Address,
12422        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
12423            self.call_builder(
12424                &undelegationsCall {
12425                    validator,
12426                    delegator,
12427                },
12428            )
12429        }
12430        ///Creates a new call builder for the [`updateConsensusKeys`] function.
12431        pub fn updateConsensusKeys(
12432            &self,
12433            newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12434            newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12435            newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12436        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
12437            self.call_builder(
12438                &updateConsensusKeysCall {
12439                    newBlsVK,
12440                    newSchnorrVK,
12441                    newBlsSig,
12442                },
12443            )
12444        }
12445        ///Creates a new call builder for the [`upgradeToAndCall`] function.
12446        pub fn upgradeToAndCall(
12447            &self,
12448            newImplementation: alloy::sol_types::private::Address,
12449            data: alloy::sol_types::private::Bytes,
12450        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
12451            self.call_builder(
12452                &upgradeToAndCallCall {
12453                    newImplementation,
12454                    data,
12455                },
12456            )
12457        }
12458        ///Creates a new call builder for the [`validatorExits`] function.
12459        pub fn validatorExits(
12460            &self,
12461            validator: alloy::sol_types::private::Address,
12462        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
12463            self.call_builder(&validatorExitsCall { validator })
12464        }
12465        ///Creates a new call builder for the [`validators`] function.
12466        pub fn validators(
12467            &self,
12468            account: alloy::sol_types::private::Address,
12469        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
12470            self.call_builder(&validatorsCall { account })
12471        }
12472    }
12473    /// Event filters.
12474    #[automatically_derived]
12475    impl<
12476        P: alloy_contract::private::Provider<N>,
12477        N: alloy_contract::private::Network,
12478    > StakeTableInstance<P, N> {
12479        /// Creates a new event filter using this contract instance's provider and address.
12480        ///
12481        /// Note that the type can be any event, not just those defined in this contract.
12482        /// Prefer using the other methods for building type-safe event filters.
12483        pub fn event_filter<E: alloy_sol_types::SolEvent>(
12484            &self,
12485        ) -> alloy_contract::Event<&P, E, N> {
12486            alloy_contract::Event::new_sol(&self.provider, &self.address)
12487        }
12488        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
12489        pub fn ConsensusKeysUpdated_filter(
12490            &self,
12491        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
12492            self.event_filter::<ConsensusKeysUpdated>()
12493        }
12494        ///Creates a new event filter for the [`Delegated`] event.
12495        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
12496            self.event_filter::<Delegated>()
12497        }
12498        ///Creates a new event filter for the [`Initialized`] event.
12499        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
12500            self.event_filter::<Initialized>()
12501        }
12502        ///Creates a new event filter for the [`OwnershipTransferred`] event.
12503        pub fn OwnershipTransferred_filter(
12504            &self,
12505        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
12506            self.event_filter::<OwnershipTransferred>()
12507        }
12508        ///Creates a new event filter for the [`Undelegated`] event.
12509        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
12510            self.event_filter::<Undelegated>()
12511        }
12512        ///Creates a new event filter for the [`Upgraded`] event.
12513        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
12514            self.event_filter::<Upgraded>()
12515        }
12516        ///Creates a new event filter for the [`ValidatorExit`] event.
12517        pub fn ValidatorExit_filter(
12518            &self,
12519        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
12520            self.event_filter::<ValidatorExit>()
12521        }
12522        ///Creates a new event filter for the [`ValidatorRegistered`] event.
12523        pub fn ValidatorRegistered_filter(
12524            &self,
12525        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
12526            self.event_filter::<ValidatorRegistered>()
12527        }
12528        ///Creates a new event filter for the [`Withdrawal`] event.
12529        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
12530            self.event_filter::<Withdrawal>()
12531        }
12532    }
12533}